我是MQTT的新手(通常是家庭自动化,我在系统和开发方面的工作更多),闪烁了WiFi开关(Sonoff Basic),将其连接到Mosquitto和Home Assistant的实例,到目前为止一切正常。

监视Mosquitto总线时,我看到各种消息,例如

tele/hass1/LWT Online
tele/home/room1/switch1/LWT Online
cmnd/home/room1/switch1/POWER OFF


我认识到我在WiFi交换机上定义的home/room1/switch1 ,然后交换机发送了以cmnd(命令?)为前缀的一些主题,这是令人惊讶的,因为没有人操纵交换机)和tele(遥测?)。 tele/hass1/...由Home Assistant生成。

前缀是否有任何标准或公认的惯例?

MQTT文档说明了主题的格式设置,但未介绍任何结构(除了以$开头的主题之外),所以我想,最好的情况是,这将是最佳实践(或练习句号)。

评论

您确实为没有以/开头的主题打分,这是错误的,因为它在主题树上添加了一个多余的空段,这是不必要的,并且使通配符的使用更加困难。

#1 楼

通常,没有-除了MQTT规范之外,没有任何主题命名标准。
关于如何构建MQTT主题有很多意见,而没有很多固定规则。当您想确切地知道最佳实践是什么时,这有点令人不安,但缺少严格的规则确实意味着您可以通过MQTT经纪人获得很大的灵活性。
在使用Home Assistant时,这样可以缩小范围,但更具体地说,您正在查看的主题特定于Sonoff开关。该Wiki中描述了该API:



消息:cmnd


发布者:右侧显示的设备


意图:控制Sonoff;设置配置;询问状态




消息:stat


发布者:左侧Sonoffs


意图:报告状态或配置消息




消息:tele


发布者:一些Sonoffs(例如温度测量设备)








参考的图在此处,尽管最好在上面链接的Wiki页面中查看。
通常,使用的任何层次结构都是特定于制造商或系统的; Sonoff设备通常会遵循记录在案的MQTT主题结构,而其他制造商可能会使用不同的东西。并非所有的制造商都会很好地(或完全没有!)记录其产品-请在购买产品时务必小心。