Не удается MQTT подключить Tasmota к AWS IOT
В user_config_override.h: #define USE_MQTT_AWS_IOT_LIGHT
- скомпилировать + прошить OTA минимально + прошить новую скомпилированную прошивку
Всегда получайте эту ошибку:
03:53:25 MQT: Connect failed to dq5l0h2crqi8-ats.iot.eu-west-1.amazonaws.com:443, rc -4. Retry in 100 sec
Я попытался использовать 1883 и порт 8883 вместо 443. Я дважды проверил свой логин и пароль в AWS CloudFormation (использовался шаблон TasmotaAuth), но безуспешно.
Кто-нибудь успешно подключился к AWS?
2 ответа
Я думал, что определения только этого было достаточно для авторизации логина / пароля:
#define USE_MQTT_AWS_IOT_LIGHT
Пока мне было нужно это все:
#ifndef USE_MQTT_TLS
#define USE_MQTT_TLS
#define USE_MQTT_TLS_CA_CERT // Optional but highly recommended
#endif
#ifndef USE_MQTT_AWS_IOT_LIGHT
#define USE_MQTT_AWS_IOT_LIGHT
#endif
#ifdef USE_DISCOVERY
#undef USE_DISCOVERY
#endif
(в user_config_ovverride.h)
У меня была аналогичная ошибка, и Тасмота не смог подключиться к AWS. Все имели в виду эту страницу: https://github.com/arendst/Sonoff-Tasmota/wiki/AWS-IoT Но такой страницы нет. URL-адрес перемещен в новое место:https://tasmota.github.io/docs/AWS-IoT/
Наконец я обнаружил, что yaml CloudFormation был неполным. Консоль AWS сгенерировала команду TasmotaAuth / Outputs / BackLogCommand:
BackLog MqttHost xxxxx-ats.iot.us-east-2.amazonaws.com; MqttPort 443; MqttUser tasmota?x-amz-customauthorizer-name=TasmotaAuth; MqttPassword xxxxxxx
Он должен был включать следующие дополнительные параметры:
SetOption3 1; SetOption103 1;
Вероятно, они были в более ранней версии, но теперь отсутствуют по состоянию на август 2021 года.
SetOption103 по умолчанию
false
, поэтому мой TLS был отключен:
#define MQTT_TLS_ENABLED false // [SetOption103] Enable TLS mode (requires TLS version)
Когда я вручную ввел команду
SetOption103 1
на веб-консоли Tasmota сообщения начали поступать в AWS.
Либо нужно изменить сценарий CloudFormation, либо исправить документацию следующим образом:
Добавьте в user_config_override.h следующее:
#ifndef USE_MQTT_TLS
#define USE_MQTT_TLS
#define USE_MQTT_TLS_CA_CERT // Optional but highly recommended
#endif
#ifndef USE_MQTT_AWS_IOT_LIGHT
#define USE_MQTT_AWS_IOT_LIGHT
#endif
#ifdef USE_DISCOVERY
#undef USE_DISCOVERY
#endif
#undef MQTT_TLS_ENABLED
#define MQTT_TLS_ENABLED true