Я пытаюсь подключиться к 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, в чем проблема?