не удалось опубликовать - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь подключиться к AWS-IoT, используя свой собственный MQTT-клиент (из-за обучения и большего контроля для последующих задач).Я могу подключиться и также получить сообщение connack, но когда я пытаюсь опубликовать, соединение закрывается.

Я уже включил CloudWatch и получаю следующие события:

{
"timestamp": "2019-03-03 11:41:26.629",
"logLevel": "INFO",
...
"status": "Success",
"eventType": "Connect",
"protocol": "MQTT",
"clientId": "ESP32_e839169e",
...
}

{
"timestamp": "2019-03-03 11:41:57.065",
"logLevel": "ERROR",
...
"status": "Failure",
"eventType": "Publish-In",
"protocol": "MQTT",
"topicName": "a/b",
"clientId": "ESP32_e839169e",
...
}

{
"timestamp": "2019-03-03 11:41:57.073",
"logLevel": "INFO",
...
"status": "Success",
"eventType": "Disconnect",
"protocol": "MQTT",
"clientId": "ESP32_e839169e",
...
}

(я не отправил разъединение, оно пришло из aws)

Мой документ политики не должен бытьпроблема, потому что я получил basicPubSub-Example с теми же файлами сертификатов для работы.Вот мой программный документ:

{
"Version": "2012-10-17",
"Statement": [
    {
    "Effect": "Allow",
    "Action": [
        "iot:Publish",
        "iot:Subscribe",
        "iot:Connect",
        "iot:Receive"
        ],
    "Resource": [
        "*"
        ]
    },
    {
    "Effect": "Allow",
    "Action": [
        "greengrass:*"
        ],
    "Resource": [
        "*"
        ]
    }
]
}

Поскольку я использую свой собственный MQTT-клиент, я не могу полностью гарантировать, что мое сообщение является полностью правильным.

Вот мое сообщение:

Byte -  Hex - Char - Meaning

   0 - 0x30 - 0    - message type, flags -> Publish, dub = false, qos = QOS0, retain = false
   1 - 0x13 -      - message length      -> 19 Bytes
   2 - 0x00 -      - topic length        ->  3 Bytes
   3 - 0x03 - ╚
   4 - 0x61 - a    - topic               -> a/b
   5 - 0x2f - /
   6 - 0x62 - b
   7 - 0x00 -      - packed identifier   -> 0
   8 - 0x00 -  
   9 - 0x74 - t    - payload             -> test_payload
  10 - 0x65 - e
  11 - 0x73 - s
  12 - 0x74 - t
  13 - 0x5f - _
  14 - 0x70 - p
  15 - 0x61 - a
  16 - 0x79 - y
  17 - 0x6c - l
  18 - 0x6f - o
  19 - 0x61 - a
  20 - 0x64 - d

Что я делаю не так?И есть ли способ получить больше информации от aws, в чем проблема?

...