无法 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 吗?

解决方法

我认为仅定义此登录名/密码身份验证就足够了:

#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 中)

,

我遇到了类似的错误,Tasmota 永远无法连接到 AWS。 每个人都在指这个页面:https://github.com/arendst/Sonoff-Tasmota/wiki/AWS-IoT 但是没有这样的页面。 URL 已移至新位置: https://tasmota.github.io/docs/AWS-IoT/

最后发现 CloudFormation yaml 不完整。 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 年 8 月现已丢失。

SetOption103 默认为 false,因此我的 TLS 被禁用:

#define MQTT_TLS_ENABLED       false      // [SetOption103] Enable TLS mode (requires TLS version)

当我手动发出命令时

SetOption103 1

在 Tasmota Web 控制台上,消息开始流向 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