,它支持通过 MQTT 接入 ThingsCloud,在很多用户的物联网项目中运行非常稳定。
我们以这台 HWXT-GW56网关为例,介绍接入 ThingsCloud 的步骤。

接下来讲的是通过网迅通GW56网关接入华为云平台,通过MQTT实现读取与控制。主要步骤是通过GW56网关脚本编辑,通过Node-Red组帧上发数据至云平台。
登录进去后点击进入控制台

用户首次使用需要实名认证(如果已经实名认证过直接跳过这一步)。

点击设备标准接入进入设备接入IoTDA的页面。

进入后点击购买实例,即可进行进一步的实验

用户需要选择合适的区域范围,并根据自己的需求选择合适的规格配置进行购买

创建好实例后,在左侧选择产品,再选择创建产品。

所需资源空间默认选择,通信协议选择MQTT模式,其他自拟。

点击详情配置信息

进入Topic管理,可以看到Topic分类的订阅与发布主题。

本次实验使用网迅通GW56网关读取温湿度的值和控制报警灯与风扇。
进入模型定义,点击自定义模型,添加服务(service_id)。
添加服务(service_id),可以就理解为组类


点击新增属性,创建温度和湿度。


同理添加添加服务(service_id)为执行器,添加属性为风扇和sos。
定义为可读可写,数据类型可选择布尔型或者枚举型。本次案例使用的是布尔型。


创建完产品后,需要创建设备。点击所有设备中注册设备


注册成功,点击详情

可看到MQTT的连接参数,客户端ID(clientld),用户名(username),密码(password),服务器IP(hostname),端口(port)


网关通电后网线连接到路由器。

打开智能网关配置工具,点击搜索

网关搜索
进入脚本配置,可进行网关脚本编辑

能用lua和python
进入可视化编程
回到页面,右键网关,可进入可视化编程


利用RS485转USB连接传感器和控制器到电脑,利用配置软件配置设备地址。(网关的串口为com1)
最后得到:
传感器 设备地址 线圈/寄存器地址 湿度 1 0 温度 1 1
传感器地址
设备 设备地址 线圈/寄存器地址 4路IO控制器 4 ON:SOS 4 0 ON:风扇 4 1
连接IO控制器设备的地址
回到Node-red,拉入Modbus-read,和debug,配置读寄存器。
传感器/执行器 Poll Rate 数组 温湿度 4s msg.payload[i] 执行器 7s msg.payload[i]
modbus配置


温湿度

配置温湿度read节点
(对于监控系统来说,设置合适的Poll Rate非常重要。如果Poll Rate设置得太低(即查询频率太高)。相反,如果Poll Rate设置得太高(即查询频率太低),则可能会导致系统无法及时响应设备状态的变化或数据更新。如果“Poll Rate”被设置为5秒,那么这意味着系统每5秒钟会查询一次设备或传感器的状态或数据。(要在debug中判断系统给传感器赋值的数组是什么类型的)
创建Server

通信连接

温湿度输出
拉入Modbus Read节点读取执行器的状态
拉入在modbus类型中拉入modbus-read和modbus-write,在dashboard中拉入gague(仪表盘)switch(开关),例如sos以下配置:

读写执行器

读执行器的数据配置

写sos的数据

写风扇的数据


发送主题为:$oc/devices/{device_id}/sys/properties/report
数据格式:
MQTT:通过属性上报接口MQTT协议属性上报,上报数据到物联网平台,MQTT属性上报样例如下:
数据格式样例:
{
"services": [
{
"service_id": "温湿度",
"properties": {
"温度": 25
}
},
{
"service_id": "温湿度",
"properties": {
"湿度": 30
}
}
]
}
使用MQTT调试工具测试,数据是否上发成功
查看MQTT连接参数,使用8883端口需要开启SSL/TLS模式


成功连接了之后,发布消息到主题


订阅主题为:$oc/devices/{device_id}/sys/properties/set/request_id={request_id}
不知道request_id可以用#表示
例子:$oc/devices/66a351596e9c0667e02b0568_test/sys/properties/set/#
MQTT测试工具中,订阅主题

云平台手动控制下发属性


平台下发数据格式为:
{
"services":
[
{
"properties":
{"风扇":true},
"service_id":"执行器"
}
]
}
拉入函数节点对温湿度的数据除以10,并组帧数据上传的格式上发至华为云平台。
拉入MQTT发送节点,配置通信。根据设备上报属性数据填写通信参数与主题。


拉入函数节点,根据数据上传格式进行组帧,上传数据到云平台。



同理执行器的操作也一样。


拉入MQTT订阅节点,根据平台下发属性数据填写通信参数与主题。
因为前面配置过通信连接,只需要选择对应的服务端即可

因为要在Modbus Write节点前面注入true(开启)或者false(关闭),才能实现控制,所以我们要解析平台下发的数据。
{
"services":
[
{
"properties":
{"风扇":true},
"service_id":"执行器"
}
]
}
例如此代码:要将解析出{"风扇":true}
拉入函数节点:

报警灯:

风扇:

云平台控制
