
物联网 · 盛世宏博 · 以太网温湿度变送器、Web Server、Modbus TCP、REST API、前端轮询、二次开发
内置 Web Server 的以太网温湿度变送器,出厂自带一个网页:
但集成商真正要的是"被程序稳定取数",不是"能被浏览器打开"。 常见三种产品形态:
形态 | 表现 | 二次开发难度 |
|---|---|---|
纯 Web 型 | 只有 HTML 页面,无开放接口 | 只能爬网页,最差 |
Web + Modbus TCP | 页面是皮,502 端口才是数据口 | 中等,标准工业协议 |
Web + REST API | /api/sensor 返回 JSON | 最好,推荐 |
选型一句话:Web 页面是给人配参数用的,API 是给程序用的。两者都要有才算开放。
设备出厂默认 IP 常见 192.168.1.100 / 192.168.0.100。
1. 电脑改静态 IP:192.168.1.50/24
2. 直连设备,ping 192.168.1.100
3. 浏览器打开 http://192.168.1.100
4. 登录(默认 admin/admin,首次必须改)
5. 改 IP 为目标网段(如 10.20.1.101)
6. 重启后回到正常业务网段再访问工具 | 验证什么 |
|---|---|
浏览器 | Web 页面能开、实时值合理 |
Modbus Poll | 502 端口读寄存器,核对缩放 |
curl / Postman | REST API 返回结构、字段名 |
ping -t | 24h 丢包率 |
推荐路径:
变送器 Web 配参数
↓
边缘网关 Modbus TCP / HTTP 采集
↓
MQTT/HTTP 上报平台不要直接让平台前端去跨域访问设备 80 端口,原因见下文。
import requests
from bs4 import BeautifulSoup
def read_via_web(ip, timeout=5):
r = requests.get(f"http://{ip}/", timeout=timeout)
soup = BeautifulSoup(r.text, "html.parser")
# 依赖页面 DOM 结构,厂商改版即失效
temp = soup.select_one("#temp").text
hum = soup.select_one("#hum").text
return float(temp), float(hum)致命问题:
适用场景:临时验证、老设备无 API 过渡期。
from pymodbus.client import ModbusTcpClient
def read_modbus_tcp(ip, port=502, unit_id=1):
client = ModbusTcpClient(ip, port=port)
client.connect()
try:
# 读保持寄存器 40001 起始 4 个:温度/湿度/露点/状态
rr = client.read_holding_registers(0, 4, slave=unit_id)
if rr.isError():
return None
raw = rr.registers
return {
"temperature": raw[0] * 0.1,
"humidity": raw[1] * 0.1,
"dewpoint": raw[2] * 0.1,
"status": raw[3],
"timestamp": time.time()
}
finally:
client.close()优化要点:
# 常见端点
GET /api/sensor # 实时温湿度
GET /api/config # 设备配置
POST /api/config # 修改配置
GET /api/history?from=...&to=... # 历史数据
GET /api/status # 设备状态import requests
class WebTempHumClient:
def __init__(self, base_url, token=None, timeout=5):
self.base_url = base_url.rstrip("/")
self.timeout = timeout
self.session = requests.Session()
if token:
self.session.headers["Authorization"] = f"Bearer {token}"
def read(self):
r = self.session.get(f"{self.base_url}/api/sensor", timeout=self.timeout)
r.raise_for_status()
data = r.json()
return {
"temperature": data["temperature"],
"humidity": data["humidity"],
"dewpoint": data.get("dewpoint"),
"timestamp": data.get("timestamp", time.time()),
"quality": "OK"
}注意:不是所有产品的 API 都一样,必须拿到《HTTP API 文档》,确认:
带 Web Server 的价值不只是"能看",而是批量部署效率:
把 100 台设备的参数做成 CSV:
name,ip,mac,gateway,mask,modbus_port,unit_id
A01-U12,10.20.1.101,AA-BB-CC-01-02-03,10.20.1.1,255.255.255.0,502,101
A01-U24,10.20.1.102,AA-BB-CC-01-02-04,10.20.1.1,255.255.255.0,502,102通过 Web 页面逐台导入(部分厂商支持),比一台台手动快 10 倍。
Web 页面导出配置文件(XML/JSON),纳入版本管理:
configs/
├─ A01-U12.xml
├─ A01-U24.xml
└─ template_default.xml固件升级或恢复出厂后,直接导入,5 分钟恢复。
Web 页面上传固件升级。生产建议:
多数 Web 型变送器支持:
功能 | 支持情况 | 评价 |
|---|---|---|
上下限报警 | ✅ 普遍支持 | 够用 |
短信/邮件告警 | ⚠️ 部分支持 | 依赖 SMTP,不稳定 |
SNMP Trap | ⚠️ 少数支持 | 好用但要配 Trap 服务器 |
继电器输出 | ✅ 常见 | 可做本地声光 |
告警联动(DO/Modbus 写从机) | ⚠️ 少数支持 | 配电柜场景刚需 |
分级告警(预警/告警/紧急) | ❌ 多数只有一级 | 不够 |
结论:Web 页面设的告警是设备级兜底,平台级联动、分级、工单、审计必须交给上位系统。
内置 Web Server 的以太网温湿度变送器,Web 是入口,不是接口。部署时用它配参数、导配置、升固件;开发时优先走 Modbus TCP 或 REST API,别爬页面;告警只当兜底,分级联动交给平台。 采购时把"有没有 API 文档"当第一问,能省掉后面三个月的扯皮。
关键词:以太网温湿度变送器、Web Server、Modbus TCP、REST API、PoE、批量配置、固件 OTA、二次开发、数据质量、告警联动
标签:#以太网温湿度 #WebServer #ModbusTCP #RESTAPI #PoE #批量部署 #固件升级 #二次开发 #传感器集成 #动环监控
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。