是否有标准化的 MQTT 主题?

物联网 MQTT 沟通 蚊子
2021-05-29 03:37:48

我是 MQTT 的新手(以及一般的家庭自动化,我更多的是在系统和开发方面),刷了一个 WiFi 开关(Sonoff Basic),将它连接到 Mosquitto 和 Home Assistant 的实例,到目前为止一切正常。

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

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

我知道home/room1/switch1我在 WiFi 交换机上定义了哪个,然后交换机发送了一些前缀为cmnd(命令?这会令人惊讶,因为没有人操纵开关)和tele(遥测?)的主题。tele/hass1/...由家庭助理生成。

前缀是否有任何标准或普遍接受的做法?

MQTT 文档解释了主题的格式,但没有介绍任何结构(以 开头的主题除外$),所以我想,最好的情况是,它更像是最佳实践(或练习句号)。

1个回答

一般来说,没有——除了 MQTT 规范之外,没有任何主题命名标准

关于如何构建 MQTT 主题很多意见,而不是很多固定规则虽然当您想确切地知道最佳实践是什么时这有点令人不安,但缺乏严格的规则确实意味着您可以通过 MQTT 代理获得很大的灵活性。

当您使用家庭助理时,这会缩小一些范围,但更具体地说,您正在查看的主题特定于您的 Sonoff 开关。这个 wiki 中描述API

  • 消息:cmd

    • 发布者:显示在右侧的设备

    • 意图:控制索诺夫;设置配置;询问状态

  • 消息:统计

    • 发行人:左手边的 Sonoffs

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

  • 留言:电话

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

    • 意图:定期报告未经请求的遥测信息

所引用的图表在这里,但最好在上面链接的 wiki 页面中查看。

通常,使用的任何层次结构都是特定于制造商或系统的;Sonoff 设备通常会遵循记录在案的 MQTT 主题结构,其他制造商可能会使用不同的内容。并非所有制造商都会很好地记录他们的产品(或根本不会!) - 所以购买产品时要小心。