汉枫Wi-Fi串口服务器HF2211S应用案例
实现的功能
该模块上电后主动以mobusRTU协议,通过本模块的串口将气体检测仪的4路传感器数据读取
模块上电后连接指定WiFi,通过MQTT协议将读取到的数据以JSON格式推送到指定服务器。
具体细分为如下几个小过程:
- 模块上电后主动连接到指定WiFi
- 模块连接到指MQTT服务器
- 模块通过modbusRTU协议主动读取设备数据
- 模块主动将读取到的数据推送到mqtt服务器
配置环境
- PC系统(Windows 10 专业版 21H1)
- WIFI AP(使用手机共享2.4G热点)
- USB转485通讯模块
配置软件
- Advanced_IP_Scanner
- IOTServiceSetupX64_3.0.03
- modbusPLC Simulator
- mosquitto-2.0.11
Advanced_IP_Scanner
局域网设备扫描软件,在该处用于获取局域网内HF2211S从AP中获取到的IP地址。
IOTServiceSetupX64_3.0.03
用于发现并配置HF2211S
modbusPLC Simulator
用于模拟气体探测仪,可以查看从模块发来的报文,便于调试modbusRTU主站。
mosquitto-2.0.11
MQTT服务端软件,HF2211S将485口读取到的数据不做解析,转发到MQTT服务器。
配置截图
安装前文中提到的配置软件
电脑连接模块自带的WiFi
打开配置软件,会自动显示搜索到的局域网内的模块,点击设备编辑,进入设备配置界面

主要设置如下参数
- WIFI模式 STA
STA无线名称、密码
- 连接协议相关信息
协议:MQTT、订阅主题、发布主题、服务器端地址、端口号
- 串口信息
波特率、数据位、停止位、校验位

基本参数设置设置完成后,点击高级设置,再点击编辑脚本,导入串口脚本,实现模块主动读取设备数据及数据上送功能。


将如下脚本存储为txt文件,并导入脚本
key=""
cmd01=[0x05,0x03,0x01,0x33,0x00,0x37,0xF4,0x6B]
cmd02=[0x05,0x03,0x02,0x33,0x00,0x37,0xF4,0x2F]
cmd03=[0x05,0x03,0x03,0x33,0x00,0x37,0xF5,0xD3]
cmd04=[0x05,0x03,0x04,0x33,0x00,0x37,0xF4,0xA7]
num=0
TIMER HeartBeat 500
num=num+1
IF(num==1)
SEND(UART,uart0,cmd01)
key="CH1"
END
IF(num==2)
SEND(UART,uart0,cmd02)
key="CH2"
END
IF(num==3)
SEND(UART,uart0,cmd03)
key="CH3"
END
IF(num==4)
SEND(UART,uart0,cmd04)
key="CH4"
num=0
END
END
RECV UART uart0
DATA=INPUT
DATA_S=DATA.hexString()
DATA_B="{\"key\":\""+key+"\",\"value\":\""+DATA_S+"\"}"
SEND(SOCK,netp,DATA_B)
END
上述代码部分说明
cmd01=[0x05,0x03,0x01,0x33,0x00,0x37,0xF4,0x6B] //需要通过发送的命令1
ER HeartBeat 500 //500毫秒执行一次命令
设备状态查看

串口报文捕获
05 03 01 33 00 37 F46B
05036E000003E800000000000000000000000000000000000000000000000000004248000043480000000000000000000000000000AC5C00170000000000000000000000000000000000000000B08800170000000038DD0028FFFF4398000000000000000000000000000000000006000120B7
05 03 02 33 00 37 F42F
05036E0000001E00000000000000000000000000000000000000000000000000004190000041B80000000000000000000000000000E5A20008333341A7000000000000000000000000000200009C75000000000000E84B0008333341A7000000000000000000000000000000000006000184D1
05 03 03 33 00 37 F5D3
05036E00000064000000000000000000000000000000000000000000000000FFFF419F0000424800000000000000000000000000008D8300170000000000000000000000000000000000020000899E001700000000F18300350000424800000000000000000000000000000000000600016049
05 03 04 33 00 37 F4A7
05036E000003E800000000000000000000000000000000000000000000000000004248000043480000000000000000000000000000AC3600170000000000000000000000000000000000000000B08800170000000038DD0028FFFF4398000000000000000000000000000000000006000100C1
MQTT报文捕获
{"key":"CH1","value":"05036E000003E800000000000000000000000000000000000000000000000000004248000043480000000000000000000000000000AC5C00170000000000000000000000000000000000000000B08800170000000038DD0028FFFF4398000000000000000000000000000000000006000120B7"}
{"key":"CH2","value":"05036E0000001E00000000000000000000000000000000000000000000000000004190000041B80000000000000000000000000000E5A20008333341A7000000000000000000000000000200009C75000000000000E84B0008333341A7000000000000000000000000000000000006000184D1"}
{"key":"CH3","value":"05036E00000064000000000000000000000000000000000000000000000000FFFF419F0000424800000000000000000000000000008D8300170000000000000000000000000000000000020000899E001700000000F18300350000424800000000000000000000000000000000000600016049"}
{"key":"CH4","value":"05036E000003E800000000000000000000000000000000000000000000000000004248000043480000000000000000000000000000AC3600170000000000000000000000000000000000000000B08800170000000038DD0028FFFF4398000000000000000000000000000000000006000100C1"}
附:气体检测仪地址表
{"key":"CH2","value":"05036E 0000001E00000000000000000000000000000000000000000000000000004190000041B80000000000000000000000000000E5A20008333341A7000000000000000000000000000200009C75000000000000E84B0008333341A70000000000000000000000000000000000060001 84D1"}
MQTT报文中,value值中,头部 3个字节 05036E 尾部2个字节CRC校验 84D1去除,中间部分为对应通道的数据。
MQTT报文中,第二通道氧气实时浓度对应的报文为 3333 41A7,对应浮点数: 20.899999618530273
| 通讯 | Modbus RTU 9600 n 8 1 | 5 |
|---|---|---|
| Point | VirRegAddr | ASDU |
| 可燃气体(通道1) | 1 | |
| 量程 | 40308 | 2个字节,Byte0:量程高位Byte1:量程低位 |
| 低报警点(float) | 40319 float | |
| A1报警点(float) | 40321 float | |
| A2报警点(float) | 40323 float | |
| 实时浓度(float) | 40334 float | |
| 报警状态 | 40336 | 2个字节 Byte0:0x00 |
| Byte0: 0x00 正常 | ||
| 0x01 断线 | ||
| 0x02 超量程 | ||
| 0x03 A2 | ||
| 0x04 A1 | ||
| 存储模式 | 40361 | 2个字节, Byte0:保留0x00; |
| Byte1=0x00;关闭 | ||
| Byte1=0x01 自动 | ||
| Byte1=0x02 手动 | ||
| Byte1=0x03 单点 | ||
| 存储周期 | 40362 | 2个字节,Byte0:高位 Byte1:低位 |
| 氧气(通道2) | 2 | |
| 量程 | 40564 | 50302 |
| 低报警点(float) | 40575 float | |
| A1报警点(float) | 40577 float | |
| A2报警点(float) | 40579 float | |
| 实时浓度(float) | 40590 float | |
| 报警状态 | 40592 | |
| 存储模式 | 40617 | |
| 存储周期 | 40618 | |
| 硫化氢(通道3) | 3 | |
| 量程 | 40820 | 50303 |
| 低报警点(float) | 40831 float | |
| A1报警点(float) | 40833 float | |
| A2报警点(float) | 40835 float | |
| 实时浓度(float) | 40846 float | |
| 报警状态 | 40848 | |
| 存储模式 | 40873 | |
| 存储周期 | 40874 | |
| 一氧化碳(通道4) | 4 | |
| 量程 | 41076 | 50304 |
| 低报警点(float) | 41087 float | |
| A1报警点(float) | 41089 float | |
| A2报警点(float) | 41091 float | |
| 实时浓度(float) | 41102 float | |
| 报警状态 | 41104 | |
| 存储模式 | 41129 | |
| 存储周期 | 41130 | |
| 实时时间(年分) | 40023 | 2个字节, Byte0:年份高位 Byte1:年份低位 |
| 实时时间(月,日) | 40024 | 2个字节, Byte0:月 Byte1:日 |
| 实时时间(时,分) | 40025 | 2个字节, Byte0:时 Byte1:分 |
| 实时时间(秒) | 40026 | 2个字节, Byte0: 0x00 Byte1: 秒 |
| 仪器地址 | 40027 | 2个字节 Byte0:保留0x00 Byte1:仪器地址 |
| 仪器报警开关 | 40029 | 2个字节 Byte0:声音报警开关(0x0关,0x01开)Byte1: 光电报警开关(0x00关,0x01开) |
| 恢复出厂设置 | 40039 | 2个字节Byte0:保留0x00当往Byte1中写入0x01时则进行恢复出厂设置 |
汉枫Wi-Fi串口服务器HF2211S应用案例的更多相关文章
- 41.1、shell编程案例
1.案例1(表达式案例): 开发shell脚本分别实现以定义变量,脚本传参以及read读入的方式比较2个整数大小.用条件表达式(禁if) 进行判断并以屏幕输出的方式提醒用户比较结果: [root@ba ...
- Appium、selenium与Robot Framework
Robot Framework + Appium Appium-Python-Client: 与Appium Library和Appium Server的交互Appium Library通过Appii ...
- 【Win10 应用开发】扫描和连接Wi-fi网络
老周今天带大家去“扫雷”了,别当真,是扫描并连接指定无线网络,时尚一点叫Wi-fi. 所以,今天的任务要求你的设备至少有1张无线网卡,目前老周没看到过有N张无线网卡的设备.像笔记本.平板等设备都可以, ...
- 全文检索引擎 Solr 部署与基本原理
全文检索引擎 Solr 部署与基本原理 搜索引擎Solr环境搭建实例 关于 solr , schema.xml 的配置说明 全文检索引擎Solr系列-–全文检索基本原理 一.搜索引擎Solr环境搭建实 ...
- Solr搭建大数据查询平台
参考文章:http://www.freebuf.com/articles/database/100423.html 对上面链接的补充: solr-5.5.0版本已被删除,新url:http://mir ...
- java 单利模式
首先何为单利模式: 单利模式即多次调用同一个对象的时候,只有一个实例(这里所谓的实例就是,假如创建了两个对象,它们的hashCode相同) 下面是相关代码: 1 创建一个对象Singleton类 pa ...
- 我与solr(五)--关于schema.xml中的相关配置的详解
先把文件的代码贴上来: <?xml version="1.0" encoding="UTF-8" ?> <!-- 版权说明... --> ...
- Solr:文本分析
文本分析时搜索引擎的核心工作之一,对文本包含许多处理步骤,比如:分词.大写转小写.词干化.同义词转化等.简单的说,文本分析就说将一个文本字段的值转为一个一个的token,然后被保存到Lucene的索引 ...
- Solr:Schema设计
本文已挪至 http://www.zhoujingen.cn/blog/8546.html Solr将数据以结构化的方式存入系统中,存储的过程中可以对数据建立索引,这个结构的定义就是通过schema ...
随机推荐
- C#-播放器相关
axWindowsMediaPlayer1.URL= 设置路径 axWindowsMediaPlayer1.Ctlcontrols.play();开始 axWindowsMediaPlayer1.Ct ...
- Python爬虫之requests库的使用
requests库 虽然Python的标准库中 urllib模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests宣传是 "HTTP for ...
- R3抹掉加载的DLL
R3抹掉加载的DLL 原理类似于获取Kernel32.dll加载地址,知道这个东西也是在看获取Kernel32.dll地址的时候在网上搜索学习资料,无意中看到的这个东西.这个挺有用,结合着HiJack ...
- 神经网络与机器学习 笔记—LMS(最小均方算法)和学习率退火
神经网络与机器学习 笔记-LMS(最小均方算法)和学习率退火 LMS算法和Rosenblatt感知器算法非常想,唯独就是去掉了神经元的压制函数,Rosenblatt用的Sgn压制函数,LMS不需要压制 ...
- 数据人必读!玩转数据可视化用这个就够了——高德LOCA API 2.0升级来袭!
引言 "一图胜千言",大数据时代来临,数据与人们生活密切相关.复杂难懂且体量庞大的数据给人的感觉总是冷冰冰的,让人难以获取到重点信息,也找不出规律和特征,数据价值发挥不出来.空间数 ...
- Java中实现SAX解析xml文件到MySQL数据库
大致步骤: 1.Java bean 2.DBHelper.java 3.重写DefaultHandler中的方法:MyHander.java 4.循环写数据库:SAXParserDemo.java ① ...
- 前端必读:Vue响应式系统大PK
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文参考:https://www.sitepoint.com/vue-3-reactivity-system ...
- 偷梁换柱:使用mock.patch辅助python单元测试
最近在搞软工项目的后端测试,重新复习了一下python的mock.patch,并用它简化了对一些复杂逻辑的测试,在此记录 问题描述 本组的项目比较特殊,设计对教务网站的模拟登陆与信息爬取,同时不少接口 ...
- 如何提高CRM系统使用率?
随着时代的发展和市场的变化,客户在企业的眼中开始变得越来越重要.谁拥有更多的客户,谁就能在激烈的市场竞争中占据一席之地.现在很多企业通过CRM系统转变为了"以客户为中心".但是,许 ...
- 【Azure 云服务】Azure Cloud Service 创建 Alert 指南 [基于旧版 Alert(Classic)不可用情况下]
问题描述 在Azure云服务(Cloud Service)创建Alert(Classic)时候遇见失败消息:"Failed to update alert testclassicalertr ...