我尝试将Shelly 1 PM智能电源继电器连接到托管的MQTT代理。
设备上的固件是从开发分支定制的Tasmota8.3.1,并启用了USE_MQTT_TLS。TLS的端口已正确设置为8883,并且代理服务在mqtt.bosch-iot-hub.com上运行
设备启动时,我可以看到串行端口上的日志消息,如下所示:
23:03:03 MQT: Connect failed to mqtt.bosch-iot-hub.com:8883, rc 4. Retry in 10 sec
23:03:14 MQT: Attempting connection...
23:03:14 MQT: TLS connection error: 0根据Tasmota文档(https://tasmota.github.io/docs/TLS/),返回代码4是BR_ERR_BAD_VERSION的代码
这个错误常量似乎来自BearSSL,表示“传入的记录版本与预期的版本不匹配”。(据http://sources.freebsd.org/HEAD/src/contrib/bearssl/tools/errors.c报道)
使用在线TLS测试工具并检查mqtt.bosch-iot-hub,它只支持tls1.2 (1.3、1.1和1.0被禁用,以及SSLv2和SSLv3)。BearSSL网站声明它支持TLS1.2
我尝试在my_user_config.h中设置Tasmota的日志级别,但它不会记录更多详细信息。
#define SERIAL_LOG_LEVEL LOG_LEVEL_DEBUG_MORE // [SerialLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE)错误消息应该是什么意思?是BearSSL堆栈的TLS不兼容还是服务端的不兼容?如何在Tasmota上启用详细日志记录以查看详细的TLS握手信息?我还遗漏了什么?
发布于 2020-12-23 04:11:14
我很高兴在6个月后这个问题可能已经过期了,但是错误代码不是您所描述的TLS代码,而是MQTT连接的返回代码,如
https://tasmota.github.io/docs/MQTT/#return-codes-rc
这意味着您的错误代码对应于4 MQTT_CONNECT_BAD_CREDENTIALS用户名/密码已被拒绝
https://stackoverflow.com/questions/62252369
复制相似问题