问题描述
在 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