在某些场景,设备不是直接接入平台,而是通过第三方MQTT服务,如:emqtt. 消息编解码与MQTT服务一样,从消息协议中使用DefaultTransport.MQTT来获取消息编解码器. 本文使用mqtt.fx为设备端,通过emqtt接入平台。

创建MQTT客户端网络组件

  1. 选择 网络组件-->组件管理--> 点击新增组件按钮。
  2. 在创建完成的模块上点击启动按钮。

创建MQTT客户端设备网关

  1. 选择 网络组件-->设备网关--> 点击新建按钮。 

注意

和MQTT服务设备网关不同的是,客户端必须指定消息协议,因为无法通过消息识别出对应的设备标识. 在消息解码时也无法通过上下文(MessageDecodeContext)获取到设备操作接口(DeviceOperator). 此处使用演示协议v1.

此处使用的Topics:/another-message,/device_online_status,/fire_alarm。 2. 在操作列点击启动按钮启动网关。

mqtt对接kafka mqtt对接第三方_mqtt对接kafka

安装并启动EMQ

可直接前往官网下载 emqttd。
本文使用docker搭建。

拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/synbop/emqttd:2.3.6

运行镜像

docker run --name emq -p 18083:18083 -p 1883:1883 -p 8084:8084 -p 8883:8883 -p 8083:8083 -d registry.cn-hangzhou.aliyuncs.com/synbop/emqttd:2.3.6

访问EMQ Dashboard

在浏览器中输入 http:192.168.99.100: 18083,默认账号密码为用户名:admin 密码:public。

mqtt对接kafka mqtt对接第三方_vert.x_02

使用MQTT.fx连接EMQ

设置连接参数。

配置参数请参考使用MQTT.fx接入

此处参数设置:

mqtt对接kafka mqtt对接第三方_mqtt对接kafka_03

连接EMQ

单击 Mqtt.fx客户端 中Connect进行连接。

mqtt对接kafka mqtt对接第三方_netty_04

连接成功后EMQ Dashboard页面上将会显示这条连接记录。

mqtt对接kafka mqtt对接第三方_vert.x_05

模拟设备上下线

使用MQTT.fx模拟设备上下线。

  1. 单击 Publish
  2. 输入设备上下线的topic和事件内容,点击单击Publish按钮,将消息推送到EMQ, EMQ将消息转发到平台。

mqtt对接kafka mqtt对接第三方_spring boot_06


此处使用的topic: /device-online-status

此处使用的事件内容:

{
   "deviceId":"MQTT_FX_Client",
   "status":"1"
}

消息发送成功后:

mqtt对接kafka mqtt对接第三方_spring boot_07

离线操作及效果展示:

mqtt对接kafka mqtt对接第三方_mqtt对接kafka_08

mqtt对接kafka mqtt对接第三方_spring boot_09

模拟设备消息订阅

  1. 在MQTT.fx上点击Subscribe,输入topic:test,点击Subscribe按钮订阅。
  2. mqtt对接kafka mqtt对接第三方_spring boot_10

  3. 在平台中选择 网络组件-->组件管理,找到MQTT客户端组件,点击调试按钮。
  4. mqtt对接kafka mqtt对接第三方_mqtt对接kafka_11

  5. 在调试页面,选择推送消息,编辑内容后,点击发送按钮,MQTT.fx将会收到消息。

mqtt对接kafka mqtt对接第三方_vert.x_12

mqtt对接kafka mqtt对接第三方_spring boot_13