因此,这是一个普遍的问题,但我将在此处提供此情况。

我正在运行Mosquitto服务器,以在esp中继模块(Itead的Sonoff)和Home Assistant之间提供mqtt通讯。 >大多数时候,它都可以正常工作。每个模块都有自己的主题,HASS中的“轻型”配置与模块一样多,因此可以通过单独的切换按钮从Web前端对其进行控制。

我经历过,在不一致的状态下,实际上灯是亮着的,而HASS中的切换开关也显示为熄灭(以及相反的情况)。订阅所有模块状态主题)。更具体地说,给定4个模块及其相应的状态主题(state/sonoff_xx/POWER),HASS似乎仅订阅了模块2和4主题,而不是1和3。以下是模块4的预期行为,可以验证另一个工作模块,但是其他两个模块都缺少发布到HASS。

Jun 15 19:22:46 nas mosquitto[9486]: Received PUBLISH from sonoff4 (d0, q0, r1, m0, 'stat/sonoff4/POWER', ... (2 bytes))
Jun 15 19:22:46 nas mosquitto[9486]: Sending PUBLISH to home-assistant (d0, q0, r0, m0, 'stat/sonoff4/POWER', ... (2 bytes))


这不是关于HASS和中继模块的问题,而是关于如何来了解应该已订阅某些客户端的MQTT Server的状态,但是通过查看日志,它尚未订阅。

#1 楼

不,您无法获取哪些客户订阅了mosquitto中的哪些内容的列表。 >
每次发出订阅请求后,您都可以让mosquitto记录下来,然后您可以使用该请求来构建列表。

log_type subscribe, unsubscribe


这将记录所有日志哪些客户订阅/取消订阅哪些主题。

评论


我已经记录了所有级别(mosquitto.conf中的所有log_type),实际上我在运行journalctl -f的同时通过从控制台进行连接检查了订阅条目。但是,我找不到有关HASS订阅的条目,因为这可能在几天前​​发生,并且未将日记记录配置为持久性的,因此我只能使用当前引导。这就是我希望检查蚊子身份的原因。

–达里奥
17年6月16日在14:22

您不应该专注于QoS级别。我的猜测是,从节点(Sonoff单元)发送的消息是使用QoS = 0发送的,这意味着它仅发送一次。从这个意义上说不可靠。我会尝试增加这个值,直到找到一个好的水平。我认为交换机状态应该使用QoS 1或2。可以偶尔丢失一两个的传感器值应使用QoS 0。

–吉米·韦斯特伯格
17年6月17日在6:37

#2 楼

您可以为全部启用mosquitto日志,并订阅该日志,您会发现可对每个客户端操作(例如连接,断开连接,订阅和发布甚至是错误)进行解码的消息。

您将设置

log_dest topic
log_type all


mosquitto.conf中的
,那么您将订阅

$SYS/broker/log/#


评论


我厌倦了这种方法订阅和发布事件未显示

– kavie
19年8月2日在8:54