监视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主题结构,而其他制造商可能会使用不同的东西。并非所有的制造商都会很好地(或完全没有!)记录其产品-请在购买产品时务必小心。
评论
您确实为没有以/开头的主题打分,这是错误的,因为它在主题树上添加了一个多余的空段,这是不必要的,并且使通配符的使用更加困难。