1、准备工作
1-1、485转以太网,串口服务器(型号:EBYTE-NA111)

EBYTE-NA111购买链接:
温湿度设备购买链接:
温湿度传感器信息(一般在配套的文档中)
温湿度传感器中温度湿度寄存器(保持寄存器)地址:
通信示例(在文末更改Node-Red配置的时候可能会用到):
1-3、USB转485工具,读取到传感器的波特率和地址码
1-3-1、USB转485工具接线图:
1-3-2、通过软件读取并配置传感器地址码及其波特率
接线完成后将USB转485工具连接电脑并打开 "控制面板" -> "设备管理器",找到其连接的端口号:
串口软件及其使用说明:📎参数设置软件软件使用说明.pdf📎串口软件.rar
然后打开串口工具:
此处得到该温湿度传感器 地址码为:01 , 波特率为 9600
PS: 本次示例中导入Node-Red网关中的传感器命令配置是根据地址码01来确认的
PS: 本次示例中进入亿佰特NA111串口服务器配置波特率是根据传感器波特率进行匹配的
1-4、进入EBYTE-NA111串口服务器配置界面,获取IP地址/设置串口参数.
1-4-1:串口服务器连接传感器与电脑主机:
1-4-2:修改电脑网络频段
1-4-3:进入EBYTE后台管理界面:
进入界面后进行如下配置:
PS:查询当前电脑网段方法:进入CMD命令台->输入命令ipconfig->找到无线局域网适配器 WLAN->找到IPv4 地址:
PS:确认配置后,拔出网线连接电脑网口的一端并接入IP为当前网段的交换机中以便能够通过网络远程访问到EBYTE设备。
2、进入ThingsKit Edge配置设备接入
2-1、创建温湿度产品及温湿度设备
进入创建产品页面后:
创建成功后会立即弹信息栏:
2-2、创建Node-RED实例
进入"创建实例":
2-3、通过案例导入配置,接入USR-TCP232-304并获取传感器信息
[{"id":"310bf935d7d1fdf8","type":"tcp request","z":"71d4f1938e87d25f","name":"","server":"192.168.1.137","port":"502","out":"time","ret":"buffer","splitc":"0","newline":"","trim":false,"tls":"","x":380,"y":240,"wires":[["eb364d022d55c9e9","fb5d2ea76a895ed0","4f9e854bae1d34a6"]]},{"id":"14b696111075d74f","type":"inject","z":"71d4f1938e87d25f","name":"010300000002C40B","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[1,3,0,0,0,2,196,11]","payloadType":"bin","x":130,"y":240,"wires":[["310bf935d7d1fdf8","491d4d43c4899be6"]]},{"id":"eb364d022d55c9e9","type":"debug","z":"71d4f1938e87d25f","name":"debug 3","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":640,"y":240,"wires":[]},{"id":"491d4d43c4899be6","type":"debug","z":"71d4f1938e87d25f","name":"debug 4","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":340,"y":200,"wires":[]},{"id":"fd2a9ef5341f3768","type":"comment","z":"71d4f1938e87d25f","name":"这个是问询帧","info":"","x":110,"y":200,"wires":[]},{"id":"3770ae436facbb7f","type":"comment","z":"71d4f1938e87d25f","name":"这个是应答帧","info":"","x":650,"y":200,"wires":[]},{"id":"fb5d2ea76a895ed0","type":"function","z":"71d4f1938e87d25f","name":"function 1","func":"// 获取 Buffer(如果 msg.payload 已是 Buffer 则直接使用)nlet buf = msg.payload;nn// 确保是 Buffer,如果不是则尝试转换(例如字符串)nif (!Buffer.isBuffer(buf)) {n // 如果是数组或其他,转为 Buffern buf = Buffer.from(buf);n}nn// 读取湿度:偏移 3~4,大端nlet humidityRaw = buf.readUInt16BE(3); // 等价于 (buf[3] << 8) | buf[4]nlet humidity = humidityRaw / 10.0;nn// 读取温度:偏移 5~6,大端nlet tempRaw = buf.readUInt16BE(5);nlet temperature = tempRaw / 10.0;nn// 将结果放到 msg.payload,也可以附加原始数据nmsg.payload = {n CurrentHumidity: humidity, // 39.7n CurrentTemperature: temperature // 29.2n};nn// 如果需要调试,可以打印n// node.warn(`湿度: ${humidity}℃, 温度: ${temperature}℃`);nnreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":500,"y":340,"wires":[["13a80b20ad32945d"]]},{"id":"13a80b20ad32945d","type":"debug","z":"71d4f1938e87d25f","name":"debug 5","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":680,"y":340,"wires":[]},{"id":"55c9c1aed0b523c3","type":"comment","z":"71d4f1938e87d25f","name":"文档见:https://yunteng.yuque.com/avshoi/thingskit-edge-v1xdocs/wepzq71binks4t7p","info":"","x":320,"y":80,"wires":[]},{"id":"4f9e854bae1d34a6","type":"buffer-parser","z":"71d4f1938e87d25f","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"uint16be","name":"CurrentHumidity","offset":3,"length":1,"offsetbit":0,"scale":"0.1","mask":""},{"type":"uint16be","name":"CurrentTemperature","offset":5,"length":1,"offsetbit":0,"scale":"0.1","mask":""}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"keyvalue","resultTypeType":"return","multipleResult":false,"fanOutMultipleResult":false,"setTopic":true,"outputs":1,"x":510,"y":400,"wires":[["003a7f0267d23a6b"]]},{"id":"003a7f0267d23a6b","type":"debug","z":"71d4f1938e87d25f","name":"debug 6","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":680,"y":400,"wires":[]},{"id":"ddea600d81008698","type":"comment","z":"71d4f1938e87d25f","name":"一种:JavaScript解析","info":"","x":300,"y":340,"wires":[]},{"id":"5a43730027099e8f","type":"comment","z":"71d4f1938e87d25f","name":"另一种:利用buffer-parser节点解析","info":"","x":260,"y":400,"wires":[]},{"id":"d8bd9d378e700e44","type":"comment","z":"71d4f1938e87d25f","name":"buffer解析节点:node-red-contrib-buffer-parser","info":"","x":400,"y":500,"wires":[]},{"id":"ee25fb1a54e96205","type":"global-config","env":[],"modules":{"node-red-contrib-buffer-parser":"3.2.2"}}]
2-5 、数据上报到平台对应设备
进入配置界面后看作如下更改:
这里上报的值,与物模型是一致的,所以不用转换
CurrentHumidity
CurrentTemperature
数据验证
























