Modbus POE ETH Relay MQTT

来自Waveshare Wiki
跳转至: 导航搜索

硬件连接

  • 将Modbus POE ETH Relay通过网线连接到局域网,通过电源端口供电或者通过POE供电。

Modbus-POE-ETH-Relay-details-3.jpg

注意:上图是使用PoE网口供电。如果是使用的普通网线,须外接电源适配器供电,可外接7~36V范围的电源供电。

软件准备

开始通信

  • 注册账号进入阿里云物联网平台,开通公共实例。

Relay mqtt 2.png

  • 点击设备管理->产品->创建产品,输入产品名称,示例名称为waveshare,所属品类选择自定义品类。其他默认即可。

Relay mqtt 3.png

  • 创建完成后点击下面的查看产品详情进入产品页面,选择Topic类列表进去话题页面添加自定义话题。

Relay mqtt 13.png

  • 选择Topic类列表->自定义Topic->定义Topic类,创建一个send发布话题发送数据。

Relay mqtt 44.png

  • 再一个receive订阅话题接收数据。

Relay mqtt 45.png

  • 选择设备管理->设备->添加设备。添加一个设备名为Relay的设备,即继电器模块。

Relay mqtt 4.png

  • 由于方便测试再添加一个设备名为mqttx的设备,阿里云网页上只能发送文本数据不能发送二进制数据,故使用mqttx软件方便调试。

Relay mqtt 5.png

  • 添加完成可以在设备中查看到mqttx和relay两个设备,点查看进入Relay页面。

Relay mqtt 15.png

  • 选择设备信息->MQTT连接参数 查看,可以看到MQTT连接参数。

Relay mqtt 12.png

  • 打开Vircom->设备管理->鼠标左键双击对应的设备->固件与配置->MQTT配置,进入配置页面

Relay mqtt 14.png

  • 根据Relay设备MQTT连接信息配置连接参数。配置完成后选择保存MQTT设置,再点击下载。

Relay mqtt 18.png

Relay mqtt 46.png

  • 注意:可以通过ping mqttHostUrl获得阿里云IP地址。

Relay mqtt 19.png

  • 设置目标IP和目标端口,点击修改设置保存。注意:本地端口如果为0则需要修改一个非零端口,否则不能连接。

Relay mqtt 20.png

  • 连接成功后可以看到Relay设备从未激活转为在线状态。

Relay mqtt 21.png

  • 下载MQTTX软件并安装,安装成功后新建连接。

Relay mqtt 22.png

  • 根据mqttx设备MQTT连接参数新建连接。

Relay mqtt 23.png

  • 连接成功后添加订阅。

Relay mqtt 0024.png

  • 输入发送话题,选择hex发送和hex显示,发送数据。

Relay mqtt 25.png

  • 选择监控运维->日志服务->云端运行日志可以查到云端接收到的信息,选择hex显示。

Relay mqtt 27.png

  • 至此,Relay设备和mqttx设备均已连接云平台,但是还不可以通过mqttx软件控制继电器,最后还需要添加消息转发。
  • 选择消息转发->云产品流转->数据源->创建数据源,数据源名称为mqttx-send.

Relay mqtt 30.png

  • 转到编辑页面,添加Topic,选择自定义,waveshare产品,mqttx设备,user/send话题。

Relay mqtt 31.png

  • 选择消息转发->云产品流转->数据源->创建数据源再添加一个数据源,数据源名称为relay-send.

Relay mqtt 32.png

  • 转到编辑页面,添加Topic,选择自定义,waveshare产品,relay设备,user/send话题。

Relay mqtt 33.png

  • 选择消息转发->云产品流转->数据目的->创建数据目的,数据目的名称为mqttx-receive.

Relay mqtt 47.png

  • 选择消息转发->云产品流转->数据源->创建数据源再添加一个数据目的,数据目的名称为relay-receive.

Relay mqtt 48.png

  • 选择消息转发->云产品流转->解析器->创建解析器,解析器名称为mqttx-to-relay.

Relay mqtt 49.png

  • 打开mqttx-to-relay编辑页面->数据源->关联数据源,数据源选择mqttx-send

Relay mqtt 50.png

  • 数据目的->关联数数据目的->数据目的选择relay-receive

Relay mqtt 51.png

  • 解析器脚本,添加如下代码并发布,其中1005为relay-receive数据目的ID,/ipl390TLRtl/Relay/user/receive为继电器接收话题,需要更加实际情况修改。
//通过payload函数,获取设备上报的消息内容,将payload数据转换成二进制变量进行透传
var data = payload("binary");
//转发数据到继电器
writeIotTopic(1005, "/ipl390TLRtl/Relay/user/receive", data);

Relay mqtt 52.png

  • 选择消息转发->云产品流转->解析器->创建解析器再创建一个解析器,解析器名称为relay-to-mqttx.

Relay mqtt 53.png

  • 打开mqttx-to-relay编辑页面->数据源->关联数据源,数据源选择relay-send

Relay mqtt 54.png

  • 数据目的->关联数数据目的->数据目的选择mqttx-receive

Relay mqtt 55.png

  • 解析器脚本,添加如下代码并发布,其中1004为mqttx-receive数据目的ID,/ipl390TLRtl/mqttx/user/receive为mqttx接收话题,需要更加实际情况修改。
//通过payload函数,获取设备上报的消息内容,将payload数据转换成二进制变量进行透传
var data = payload("binary");
//转发数据到继电器
writeIotTopic(1004, "/ipl390TLRtl/mqttx/user/receive", data);

Relay mqtt 56.png

  • 最后选择启动解析器实现数据转发。消息转发已配置完成并启用

Relay mqtt 57.png

  • 此时通过mqttx即可以发送指令控制继电器了。按照下图发送继电器全部翻转指令。正常情况下继电器将会全部翻转,并且返回指令数据。

Relay mqtt 43.png

  • 至此操作完全。可以尝试发送更多modbus指令测试。其中数据流为如下所示。
  • mqttx发送指令->阿里云接收数据并转发给relay->relay接收到数据执行动作并返回数据给阿里云->阿里云接收数据并转发给mqttx->mqttx接收到返回数据。