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