我目前正在运行几个MQTT物联网设备(mqtt硬件:raspberry pi 2,mqtt经纪人:Mosquitto,设备主要是ESP8266)。作为固件,我正在运行esp8266-homie固件的自定义混合。这几个月都运行良好,但现在我遇到了关于使用$ topics的问题。
一个简单的例子,我的设备将他们的在线状态发布到一个主题:home / device / $ online,当设备断开连接时,will消息将确保这变为false。
运行此命令时,我可以看到该主题(其中包括):
department membership
输出:
mosquitto_sub -h <brokerIP> -u <username> -P <password> -t home/device/# -v
所以话题就在那里并确实包含数据,太棒了!所以逻辑规定运行这个应该返回真值:
home/device/$online true
输出: 没有
但遗憾的是,自2天以来,这并没有返回任何东西。只有我能想到的改变可能是我的覆盆子pi的更新。
答案 0 :(得分:1)
var obj = { 0 : {'zipCode':"1232"} }
for(var key in obj) {
console.log(obj[key].zipCode);
}
是表示shell的环境变量的char(很可能是bash),因此在执行命令之前,它将尝试使用存储在环境变量中的值扩展$
。
由于$online
很可能没有设置为任何东西,这意味着实际执行的是:
$online
您可以通过引用主题字符串来解决此问题,如下所示:
mosquitto_sub -h <brokerIP> -u <username> -P <password> -t home/device/ -v