首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >内置 Web Server 以太网温湿度变送器:从部署到开发实践指南

内置 Web Server 以太网温湿度变送器:从部署到开发实践指南

原创
作者头像
盛世宏博小可
发布于 2026-10-22 09:03:08
发布于 2026-10-22 09:03:08
100
举报

内置 Web Server 以太网温湿度变送器:从部署到开发实践指南

物联网 · 盛世宏博 · 以太网温湿度变送器、Web Server、Modbus TCP、REST API、前端轮询、二次开发


一、为什么"带 Web 页面"不等于"能集成"

内置 Web Server 的以太网温湿度变送器,出厂自带一个网页:

  • 能看实时温湿度、露点、IP 参数
  • 能改静态 IP、子网、网关、Modbus TCP 端口
  • 有的还带曲线图、导出 CSV、报警阈值设置

但集成商真正要的是"被程序稳定取数",不是"能被浏览器打开"。​ 常见三种产品形态:

形态

表现

二次开发难度

纯 Web 型

只有 HTML 页面,无开放接口

只能爬网页,最差

Web + Modbus TCP

页面是皮,502 端口才是数据口

中等,标准工业协议

Web + REST API

/api/sensor 返回 JSON

最好,推荐

选型一句话:Web 页面是给人配参数用的,API 是给程序用的。两者都要有才算开放。


二、部署实战:从拆箱到上平台六步

第 1 步:默认 IP 连不上,先调电脑

设备出厂默认 IP 常见 192.168.1.100 / 192.168.0.100。

代码语言:javascript
复制
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. 重启后回到正常业务网段再访问

第 2 步:参数固化(别留 DHCP)

  • IP / 掩码 / 网关:静态
  • DNS:关(内网设备用不到)
  • Modbus TCP 端口:默认 502,多设备场景记录映射表
  • Web 端口:80,生产环境建议改成非标 + 关外部访问
  • SNMP:关(不用的协议一律关,减少攻击面)

第 3 步:测点与布线

  • PoE 交换机供电,确认 802.3af 协商成功
  • 网线走屏蔽六类,接头用工业级
  • 探头安装避开空调出风口、门窗、热源直射
  • 新装探头通电 30 分钟再验收(感应元件热平衡)

第 4 步:浏览器 + 调试工具双验证

工具

验证什么

浏览器

Web 页面能开、实时值合理

Modbus Poll

502 端口读寄存器,核对缩放

curl / Postman

REST API 返回结构、字段名

ping -t

24h 丢包率

第 5 步:接入平台

推荐路径:

代码语言:javascript
复制
变送器 Web 配参数
  ↓
边缘网关 Modbus TCP / HTTP 采集
  ↓
MQTT/HTTP 上报平台

不要直接让平台前端去跨域访问设备 80 端口,原因见下文。

第 6 步:72h 试运行

  • 曲线连续无断档
  • 无 0xFFFF / 全零 / 超范围异常值
  • 设备不假死、不重启
  • 断网恢复后 Web 页面能正常重新访问

三、开发实践:三种取数方式对比

方式一:爬 Web 页面(不推荐,但有时是唯一选择)

代码语言:javascript
复制
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)

致命问题:

  • DOM 一改就崩
  • 无批量、无认证、无质量码
  • 页面刷新是整页重载,流量大
  • 无法拿到"数据时间戳"(只有服务器时间)

适用场景:临时验证、老设备无 API 过渡期。

方式二:Modbus TCP(工业标准,最稳)

代码语言:javascript
复制
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()

优化要点:

  • 长连接复用,禁止每次请求新建 socket
  • 合并寄存器读取(一笔读 4 个,不读 4 笔)
  • 超时 1000~2000ms,重试 2~3 次
  • 连接池 + Semaphore 控并发

方式三:REST API(现代化首选)

代码语言:javascript
复制
# 常见端点
GET  /api/sensor        # 实时温湿度
GET  /api/config        # 设备配置
POST /api/config        # 修改配置
GET  /api/history?from=...&to=...  # 历史数据
GET  /api/status        # 设备状态
代码语言:javascript
复制
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 文档》,确认:

  • 认证方式(Basic / Token / 无)
  • 字段名(temp vs temperature vs t)
  • 单位(℃ vs 0.1℃)
  • 时间戳(设备时间 vs 服务器时间 vs 无)
  • 限流(每秒几次,超限返回 429)

四、Web 配置页面的工程化用法

带 Web Server 的价值不只是"能看",而是批量部署效率:

1. 配置模板化

把 100 台设备的参数做成 CSV:

代码语言:javascript
复制
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 倍。

2. 配置备份

Web 页面导出配置文件(XML/JSON),纳入版本管理:

代码语言:javascript
复制
configs/
  ├─ A01-U12.xml
  ├─ A01-U24.xml
  └─ template_default.xml

固件升级或恢复出厂后,直接导入,5 分钟恢复。

3. 固件 OTA

Web 页面上传固件升级。生产建议:

  • 先升 1 台试点,跑 72h 再批量
  • 升级时 PoE 供电不能断
  • 记录升级前后固件版本(Modbus 寄存器或 Web 页可见)

五、自带的告警功能够不够用

多数 Web 型变送器支持:

功能

支持情况

评价

上下限报警

✅ 普遍支持

够用

短信/邮件告警

⚠️ 部分支持

依赖 SMTP,不稳定

SNMP Trap

⚠️ 少数支持

好用但要配 Trap 服务器

继电器输出

✅ 常见

可做本地声光

告警联动(DO/Modbus 写从机)

⚠️ 少数支持

配电柜场景刚需

分级告警(预警/告警/紧急)

❌ 多数只有一级

不够

结论:Web 页面设的告警是设备级兜底,平台级联动、分级、工单、审计必须交给上位系统。


六、选型 Checklist(采购前问厂家)

  • [ ] 是否开放 Modbus TCP 寄存器表(书面)
  • [ ] 是否有 REST API 文档
  • [ ] API 认证方式是什么
  • [ ] 是否支持批量配置导入/导出
  • [ ] Web 页面是否可关闭(减少攻击面)
  • [ ] 固件是否支持 OTA
  • [ ] 是否支持 SNTP/NTP 校时
  • [ ] 是否支持 PoE(802.3af,非标 PoE 慎选)
  • [ ] 防护等级(室内 IP30 够,配电/室外需 IP54+)
  • [ ] 是否有本地缓存(断网补传)
  • [ ] 固件版本与 API 版本是否对应文档
  • [ ] 是否支持自定义证书 / HTTPS(上云必备)

七、上线前验收

  • [ ] 静态 IP + MAC 绑定,无 DHCP
  • [ ] Web 页面可访问,参数固化
  • [ ] Modbus 502 长连接轮询 72h 无断流
  • [ ] REST API 返回结构与文档一致
  • [ ] 配置文件已导出备份
  • [ ] 固件版本记录归档
  • [ ] 上下限告警触发测试通过
  • [ ] 断网恢复 Web 页面可重新访问
  • [ ] 拔电重启后配置不丢失
  • [ ] 密码已改,默认 admin 已禁用

八、一句话收口

内置 Web Server 的以太网温湿度变送器,Web 是入口,不是接口。部署时用它配参数、导配置、升固件;开发时优先走 Modbus TCP 或 REST API,别爬页面;告警只当兜底,分级联动交给平台。 采购时把"有没有 API 文档"当第一问,能省掉后面三个月的扯皮。


关键词:以太网温湿度变送器、Web Server、Modbus TCP、REST API、PoE、批量配置、固件 OTA、二次开发、数据质量、告警联动

标签:#以太网温湿度 #WebServer #ModbusTCP #RESTAPI #PoE #批量部署 #固件升级 #二次开发 #传感器集成 #动环监控

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 内置 Web Server 以太网温湿度变送器:从部署到开发实践指南
    • 一、为什么"带 Web 页面"不等于"能集成"
    • 二、部署实战:从拆箱到上平台六步
      • 第 1 步:默认 IP 连不上,先调电脑
      • 第 2 步:参数固化(别留 DHCP)
      • 第 3 步:测点与布线
      • 第 4 步:浏览器 + 调试工具双验证
      • 第 5 步:接入平台
      • 第 6 步:72h 试运行
    • 三、开发实践:三种取数方式对比
      • 方式一:爬 Web 页面(不推荐,但有时是唯一选择)
      • 方式二:Modbus TCP(工业标准,最稳)
      • 方式三:REST API(现代化首选)
    • 四、Web 配置页面的工程化用法
      • 1. 配置模板化
      • 2. 配置备份
      • 3. 固件 OTA
    • 五、自带的告警功能够不够用
    • 六、选型 Checklist(采购前问厂家)
    • 七、上线前验收
    • 八、一句话收口
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档