0

我尝试将 Shelly 1 PM 智能功率继电器连接到托管 MQTT 代理。

设备上的固件是来自 dev 分支的定制 Tasmota 8.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,它仅支持 TLS 1.2(禁用 1.3、1.1 和 1.0 以及 SSLv2 和 SSLv3)。BearSSL 网站声明它支持 TLS 1.2

我尝试在 中设置 Tasmota 的日志级别my_user_config.h,但它没有记录更多详细或详细的信息。

#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 握手信息?我还缺少什么吗?

4

1 回答 1

0

我很感激 6 个月后这个问题可能有点过期,但是错误代码不是您描述的 TLS 代码,而是 MQTT 连接的返回代码,如中所述

https://tasmota.github.io/docs/MQTT/#return-codes-rc

这意味着您的错误代码对应于 4 MQTT_CONNECT_BAD_CREDENTIALS 用户名/密码被拒绝

于 2020-12-22T20:11:14.033 回答