MQTT¶
WeEvent
服务对MQTT
协议的支持依赖Mosquitto
代理。Mosquitto
是 MQTT
协议的一个开源实现。Mosquitto
详细内容,请参见Mosquitto官网 。同时需要给Broker
配置Zookeeper
服务。请参见Broker模块安装。
协议介绍¶
MQTT
是物联网IoT
中的主流接入协议,协议具体内容参见http://mqtt.org/WeEvent
支持MQTT 3.1.1
MQTT桥接概念¶
WeEvent
关于物联网IoT
设备接入的流程如下图:
WeEvent
使用Mosquitto
来做MQTT
协议代理,也可以使用EMQ
等商业软件,支持MQTT 3.1.1
就可以。
IoT
设备往服务器发布事件,一般用来做数据采集,称为上行通道。对应WeEvent
使用mqtt_add_inbound_topic
接口来设置桥接。
服务器往IoT
设备发布事件,一般用来做控制命令,称为下行通道。对应WeEvent
使用mqtt_add_outbound_topic
接口来设置桥接。
配置MQTT桥接¶
在Broker
服务中,修改配置文件./conf/weevent.properties
,然后重新启动服务。
#mqtt broker
#mosquitto安装所在服务器的ip地址及端口号
mqtt.broker.url=tcp://127.0.0.1:1883
#mosquitto使用的用户名
mqtt.broker.user=${user}
#mosquitto使用的密码
mqtt.broker.password=${password}
mqtt.broker.qos=2
mqtt.broker.timeout=5000
#mosquitto default 20s
mqtt.broker.keep-alive=15
#zookeeper
#zookeeper安装所在服务器的ip地址及端口号
broker.zookeeper.ip=127.0.0.1:2181
broker.zookeeper.path=/event_broker
broker.zookeeper.timeout=3000
样例演示¶
IoT设备数据采集¶
在
WeEvent
中创建主题Topic
,例如com.weevent.iot.event
。$ curl http://localhost:8080/weevent/rest/open?topic=com.weevent.iot.event true
通过
WeEvent
设置上行通道的Topic
绑定。$ curl http://localhost:8080/weevent/master/mqtt_add_inbound_topic?topic=com.weevent.iot.event true
IoT
设备发布事件IoT
设备和传统方式一样通过MQTT
协议发布事件。$ mosquitto_pub -h localhost -p 1883 -u ${user} -P ${password} -t "com.weevent.iot.event" -m "{\"timestamp\":133345566,\"key\":\"temperature\",\"value\":10.0}"
通过
WeEvent
订阅事件在
WeEvent
上订阅该主题com.weevent.iot.event
,就可以得到IoT
设备发送上来的数据。移除绑定,
WeEvent
不会再收到事件通知$ curl http://localhost:8080/weevent/master/mqtt_remove_inbound_topic?topic=com.weevent.iot.event
下发IoT设备命令¶
在
WeEvent
里创建主题Topic
,例如com.weevent.iot.control
。$ curl http://localhost:8080/weevent/rest/open?topic=com.weevent.iot.control true
通过
WeEvent
设置下行通道的Topic
绑定$ curl http://localhost:8080/weevent/master/mqtt_add_outbound_topic?topic=com.weevent.iot.control true
在
WeEvent
上发布事件$ curl http://localhost:8080/weevent/rest/publish?topic=com.weevent.iot.control&content=hello
在设备上可以订阅到这个事件
$ mosquitto_sub -h localhost -p 1883 -u ${user} -P ${password} -t "com.weevent.iot.control"
移除绑定,
IoT
设备不会再收到事件通知$ curl http://localhost:8080/weevent/master/mqtt_add_inbound_topic?topic=com.weevent.iot.control