使用 OpenHab 连接 MQTT 服务器
Connecting MQTT server with OpenHab
作为示例测试,我只想 ON/OFF 通过 wifi 使用 OpenHab 的灯泡。所以我在openhab配置中如下连接hivemq服务器和openhab。
mqtt:broker.url=tcp://127.0.0.1:1883
mqtt:broker.clientId=openhab
因此,当启动 openhab 时,我可以在控制台中看到以下内容。
2016-09-01 19:18:11.692 [INFO ] [.io.transport.mqtt.MqttService] - MQTT Service initialization completed.
2016-09-01 19:18:11.695 [INFO ] [o.i.t.m.i.MqttBrokerConnection] - Starting MQTT broker connection 'broker'
2016-09-01 19:18:13.092 [INFO ] [penhab.io.rest.RESTApplication] - Started REST API at /rest
看来openhab和hivemq连接成功了。然后我在 openhab 发行版上创建了以下文件。
home.sitemap
sitemap home label="My House"
{
Frame label="ESP Module"{
Group item=FF_Bed label="Front Porch"
}
}
home.items
Group All
Group gGF (All)
Group gFF (All)
Group GF_Living "Living Room" <video> (gGF)
Group FF_Bed "Bedroom" <bedroom> (gFF)
Dimmer Light_GF_Living_Table "Table" (GF_Living, Lights) {mqtt="<[mybroker:/myHome/Table:command:ON]"}
Switch Light_FF_Bed_Ceiling "Ceiling" (FF_Bed, Lights) {mqtt="<[mybroker:/myHome/doorbell:command:ON]"}
/* Locations */
Location HomeLocation MyHome
esp-pic.map
0=Still
1=Motion
我可以在我的 openhab 网站上看到以上指定的项目。但是当我点击指示灯时,MQTT 服务器没有更新。但我可以在 OpenHab 控制台上看到以下内容。
2016-09-02 12:00:35.484 [INFO ] [runtime.busevents ] - Light_FF_Bed_Ceiling received command ON
那么为什么它不将此更改发布到 HiveMQ 主题?
谢谢。
您只能在 openHAB 中有入站或出站 mqtt 消息。
由于“<”符号,您在 home.items 中的当前配置是入站配置。
如果要单击开关以将 mqtt 消息发布到代理,则必须将其更改为“>”符号。
查看此页面作为参考:https://github.com/openhab/openhab/wiki/MQTT-Binding 并搜索入站或出站消息
作为示例测试,我只想 ON/OFF 通过 wifi 使用 OpenHab 的灯泡。所以我在openhab配置中如下连接hivemq服务器和openhab。
mqtt:broker.url=tcp://127.0.0.1:1883
mqtt:broker.clientId=openhab
因此,当启动 openhab 时,我可以在控制台中看到以下内容。
2016-09-01 19:18:11.692 [INFO ] [.io.transport.mqtt.MqttService] - MQTT Service initialization completed.
2016-09-01 19:18:11.695 [INFO ] [o.i.t.m.i.MqttBrokerConnection] - Starting MQTT broker connection 'broker'
2016-09-01 19:18:13.092 [INFO ] [penhab.io.rest.RESTApplication] - Started REST API at /rest
看来openhab和hivemq连接成功了。然后我在 openhab 发行版上创建了以下文件。
home.sitemap
sitemap home label="My House"
{
Frame label="ESP Module"{
Group item=FF_Bed label="Front Porch"
}
}
home.items
Group All
Group gGF (All)
Group gFF (All)
Group GF_Living "Living Room" <video> (gGF)
Group FF_Bed "Bedroom" <bedroom> (gFF)
Dimmer Light_GF_Living_Table "Table" (GF_Living, Lights) {mqtt="<[mybroker:/myHome/Table:command:ON]"}
Switch Light_FF_Bed_Ceiling "Ceiling" (FF_Bed, Lights) {mqtt="<[mybroker:/myHome/doorbell:command:ON]"}
/* Locations */
Location HomeLocation MyHome
esp-pic.map
0=Still
1=Motion
我可以在我的 openhab 网站上看到以上指定的项目。但是当我点击指示灯时,MQTT 服务器没有更新。但我可以在 OpenHab 控制台上看到以下内容。
2016-09-02 12:00:35.484 [INFO ] [runtime.busevents ] - Light_FF_Bed_Ceiling received command ON
那么为什么它不将此更改发布到 HiveMQ 主题?
谢谢。
您只能在 openHAB 中有入站或出站 mqtt 消息。
由于“<”符号,您在 home.items 中的当前配置是入站配置。 如果要单击开关以将 mqtt 消息发布到代理,则必须将其更改为“>”符号。
查看此页面作为参考:https://github.com/openhab/openhab/wiki/MQTT-Binding 并搜索入站或出站消息