基于reComputer R1000与Modbus的边缘数据采集及Home Assistant集成实践

发布时间:2026/8/2 11:06:17

基于reComputer R1000与Modbus的边缘数据采集及Home Assistant集成实践 1. 项目概述为什么是 reComputer R1000 Modbus Home Assistant如果你正在寻找一个稳定、低功耗且具备工业级可靠性的边缘计算平台来作为智能家居或小型工业物联网的数据中枢那么 reComputer R1000 搭配 Modbus 协议并最终接入 Home Assistant 的方案绝对值得你深入研究。这不仅仅是简单的硬件堆砌而是一套从底层数据采集到上层智能联动的完整技术栈实践。reComputer R1000 是一款基于 NVIDIA Jetson 平台的边缘 AI 计算设备它最大的优势在于其强大的 AI 推理能力和丰富的 I/O 接口如 GPIO、UART、CAN 等。而 Modbus作为一种在工业自动化领域服役了近半个世纪的串行通信协议至今仍是连接 PLC、传感器、电表、变频器等设备最通用、最经济的方式。Home Assistant 则是目前最强大、最灵活的开源家庭自动化平台它擅长整合各类协议和设备提供统一的控制界面和自动化逻辑。将这三者结合其核心价值在于利用 reComputer R1000 的边缘计算能力将传统、封闭的工业或楼宇设备通过 Modbus的数据“翻译”并“搬运”到现代、开放、智能的家居生态Home Assistant中。例如你可以用它读取工厂车间电表的实时功耗、监控机房空调的温湿度、采集农业大棚的土壤传感器数据然后通过 Home Assistant 进行可视化展示、设置超限报警、甚至与其他智能设备如智能插座、灯光进行联动。这个方案特别适合创客、工业物联网开发者、智能家居深度玩家以及需要进行小型化、本地化数据监控与处理的场景。2. 核心组件选型与架构设计2.1 硬件基石reComputer R1000 深度解析reComputer R1000 的核心是 NVIDIA Jetson 模块常见如 Jetson Nano 或 Jetson Xavier NX 版本。选择它而非常见的树莓派或 x86 工控机主要基于以下几点考量AI 能力预留虽然当前项目可能只用到 Modbus 数据采集但 Jetson 平台内置的 GPU 为未来可能的边缘视觉分析如通过摄像头识别设备状态指示灯、音频事件检测或更复杂的时序数据预测模型提供了硬件基础。这是一项面向未来的投资。工业级可靠性相比消费级开发板reComputer 在设计上更注重稳定性和长期运行。其宽压电源输入常见 9-36V DC、更宽的工作温度范围以及更扎实的 PCB 和接口设计都意味着它更适合 7x24 小时不间断运行的现场环境。丰富的原生接口它通常自带多个 USB 端口、千兆网口、以及关键的UART (TTL/RS232) 和可配置的 GPIO。这对于连接 Modbus 设备至关重要。许多 USB 转 RS485/RS232 转换器可能存在驱动兼容性或长时间运行的稳定性问题而直接使用板载 UART 则稳定得多。计算与功耗平衡以 Jetson Nano 为例其 CPUGPU 的综合算力足以轻松处理数十个 Modbus 点的轮询、数据解析、轻量级计算如求平均值、单位转换以及运行 Home Assistant而整机功耗通常仅在 5W-15W 之间非常适合太阳能供电等离网场景。注意在采购 reComputer R1000 时务必确认其具体搭载的 Jetson 模块型号和内存配置并根据你预期的 Modbus 点位数和未来扩展性来选择合适的版本。对于点数少于100个的简单应用Jetson Nano 4GB 版已绰绰有余。2.2 通信桥梁Modbus 协议选型RTU vs TCPModbus 主要有两种传输模式RTU (Remote Terminal Unit)和TCP (Transmission Control Protocol)。选择哪一种取决于你的设备接口和网络环境。Modbus RTU物理层通常基于RS-485或RS-232串行总线。RS-485 支持多点通信一条总线上可挂接多个设备最多可达32个传输距离远可达1200米抗干扰能力强是工业现场最主流的选择。RS-232 一般仅支持点对点距离短15米。连接方式reComputer R1000 的 UART (TX/RX/GND) 引脚需要连接一个RS-485 转换模块如 MAX485芯片模块才能与 RS-485 网络通信。你需要正确配置串口参数波特率、数据位、停止位、校验位这些必须与从站设备完全一致。适用场景没有以太网接口的传统工业设备、仪表、传感器。布线为串行总线结构。Modbus TCP物理层基于以太网Ethernet。设备通常有一个 RJ45 网口。连接方式reComputer R1000 通过网线直接连接到局域网与 Modbus TCP 设备处于同一网络。通信基于标准的 TCP/IP 套接字。适用场景较新型的、带网口的智能设备、网关。布线为星型网络结构配置更简单。如何选择如果你的设备只有 RS-485 口那没得选只能用 RTU。如果设备同时支持优先推荐 Modbus TCP理由如下配置简单IP地址端口号通常是502易于调试可以用网络工具直接抓包网络布线更灵活且 reComputer 的以太网性能非常稳定。Modbus RTU 则需要处理串口驱动、电平转换、总线终端电阻等更底层的细节对新手门槛稍高。2.3 软件中枢Home Assistant 的安装方式抉择在 reComputer R1000 上运行 Home Assistant主要有三种方式Home Assistant Operating System (HAOS)这是最完整、最推荐的方式。它是一个独立的 Linux 发行版包含了 Home Assistant Core、管理界面、插件商店Add-on Store和 Supervisor 管理工具。通过 HAOS你可以一键安装 Mosquitto broker、Node-RED、File editor 等非常实用的插件。Home Assistant Container (Docker)如果你希望在 reComputer 上同时运行其他服务或者你更熟悉 Docker 生态可以选择这种方式。它更轻量但需要你手动管理所有依赖和周边服务如 MQTT broker。Home Assistant Core (Python 虚拟环境)这是最“原始”的安装方式只安装核心程序。除非你有特殊的定制需求否则不推荐因为维护成本最高。对于 reComputer R1000我强烈推荐直接安装 HAOS。原因在于其开箱即用的完整性。Jetson 平台是 ARM64 架构幸运的是Home Assistant 官方提供了针对 aarch64 (ARM64) 的 HAOS 镜像。你可以直接下载.img.xz镜像文件使用 Balena Etcher 等工具将其刷写到 reComputer 的 SSD 或高速 TF 卡中启动即用。这种方式屏蔽了底层系统复杂性让你能专注于功能集成。3. 系统搭建与核心配置实操3.1 reComputer R1000 基础环境准备假设你已经为 reComputer R1000 刷写了基于 Ubuntu 的 Jetson 系统镜像如 JetPack SDK。我们的第一步是确保系统更新并安装必要工具。# 更新系统包列表和已安装的包 sudo apt update sudo apt upgrade -y # 安装一些常用工具和 Python3 环境通常已预装 sudo apt install -y python3-pip python3-venv git curl wget # 如果计划使用 Docker 方式安装 HA安装 Docker # 注意如果选择 HAOS则无需此步因为 HAOS 本身就是一个独立系统。 # sudo apt install -y docker.io # sudo systemctl enable --now docker # sudo usermod -aG docker $USER # 将当前用户加入docker组需重新登录生效接下来是关键一步配置串口用于 Modbus RTU。找到 reComputer 的 UART 引脚通常是 J41 或 J42 接头具体参考官方手册。假设我们使用/dev/ttyTHS1这是 Jetson 平台常见的 UART 设备名。# 查看串口设备 ls -l /dev/ttyTHS* # 默认情况下串口可能被蓝牙或其他服务占用。我们需要禁用相关服务并设置权限。 # 1. 禁用串口控制台服务如果它占用了你要用的串口 sudo systemctl stop nvgetty sudo systemctl disable nvgetty # 2. 将用户加入 dialout 组以获得串口访问权限 sudo usermod -a -G dialout $USER # 3. 修改串口设备权限临时重启后可能失效 sudo chmod 666 /dev/ttyTHS1 # 更稳妥的方法是创建 udev 规则 echo KERNELttyTHS1, MODE0666, GROUPdialout | sudo tee /etc/udev/rules.d/99-ttyTHS1.rules sudo udevadm control --reload-rules sudo udevadm trigger # 重启后生效实操心得Jetson 的串口设备名可能因核心板型号和 JetPack 版本而异。/dev/ttyTHS0,/dev/ttyTHS1,/dev/ttyTHS2都有可能。最可靠的方法是查阅你的 reComputer 型号对应的引脚定义图确认 UART TX/RX 引脚对应的 Linux 设备节点。3.2 Modbus 数据采集层的实现无论最终数据去向何处我们都需要一个在 reComputer 上稳定运行的 Modbus 数据采集服务。这里我推荐使用Python 的pymodbus库它功能强大同时支持 Modbus RTU 和 TCP 客户端主站功能。首先创建一个独立的 Python 虚拟环境来管理依赖。mkdir ~/modbus_ha_bridge cd ~/modbus_ha_bridge python3 -m venv venv source venv/bin/activate pip install pymodbus paho-mqtt # 安装modbus和mqtt库接下来编写一个 Modbus 采集脚本。这个脚本的核心任务是定时读取 Modbus 从站的数据并将数据通过 MQTT 协议发布出去。为什么用 MQTT因为这是 Home Assistant 最推荐、最灵活的集成方式之一通过 MQTT 自动发现实现了采集层与智能逻辑层的解耦。#!/usr/bin/env python3 modbus_poller_mqtt.py 定时读取 Modbus 设备数据并通过 MQTT 发布。 import time import json import logging from pymodbus.client import ModbusSerialClient as ModbusClient # 用于RTU # from pymodbus.client import ModbusTcpClient as ModbusClient # 用于TCP import paho.mqtt.client as mqtt # 配置日志 logging.basicConfig(levellogging.INFO) logger logging.getLogger(__name__) # --- Modbus 配置 --- # 对于 RTU MODBUS_PORT /dev/ttyTHS1 MODBUS_BAUDRATE 9600 MODBUS_PARITY N MODBUS_STOPBITS 1 MODBUS_BYTESIZE 8 SLAVE_ID 1 # 从站地址 # 对于 TCP # MODBUS_HOST 192.168.1.100 # MODBUS_PORT 502 # 定义要读取的 Modbus 点位列表 # 每个点位是一个字典包含名称、寄存器地址、寄存器类型、数据类型、乘数因子等 POINTS [ {name: temperature, address: 0, type: holding, data_type: int16, scale: 0.1, unit: °C}, {name: humidity, address: 1, type: holding, data_type: uint16, scale: 0.1, unit: %}, {name: energy_kwh, address: 10, type: holding, data_type: uint32, scale: 1, unit: kWh}, # 输入寄存器示例 {name: voltage, address: 100, type: input, data_type: int16, scale: 0.01, unit: V}, ] # --- MQTT 配置 --- MQTT_BROKER localhost # 如果 MQTT broker 运行在 reComputer 本机 MQTT_PORT 1883 MQTT_TOPIC_PREFIX homeassistant/sensor/modbus_{device_id}/ # 用于自动发现 MQTT_STATE_TOPIC modbus/sensor/state MQTT_CLIENT_ID recomputer_modbus_poller MQTT_USERNAME None # 如果 broker 需要认证 MQTT_PASSWORD None # 设备唯一标识用于 MQTT 自动发现 DEVICE_ID recomputer_r1000_01 def connect_modbus(): 连接 Modbus 设备 # RTU 连接 client ModbusClient( portMODBUS_PORT, baudrateMODBUS_BAUDRATE, parityMODBUS_PARITY, stopbitsMODBUS_STOPBITS, bytesizeMODBUS_BYTESIZE, timeout2 ) # TCP 连接 # client ModbusClient(hostMODBUS_HOST, portMODBUS_PORT, timeout2) if client.connect(): logger.info(Modbus 连接成功) return client else: logger.error(无法连接到 Modbus 设备) return None def read_modbus_point(modbus_client, point): 读取单个 Modbus 点位 address point[address] try: if point[type] holding: if point[data_type] in [uint32, int32, float32]: # 读取两个寄存器32位 result modbus_client.read_holding_registers(address, count2, slaveSLAVE_ID) if not result.isError(): registers result.registers if point[data_type] uint32: value (registers[0] 16) registers[1] elif point[data_type] int32: # 简单处理实际需考虑符号位 value (registers[0] 16) registers[1] if value 0x80000000: # 如果最高位是1则为负数 value value - 0x100000000 elif point[data_type] float32: # 将两个16位寄存器组合成32位浮点数大端序 import struct value struct.unpack(f, struct.pack(HH, registers[0], registers[1]))[0] else: value None else: logger.error(f读取保持寄存器错误: {result}) return None else: # int16, uint16 result modbus_client.read_holding_registers(address, count1, slaveSLAVE_ID) if not result.isError(): value result.registers[0] if point[data_type] int16 and value 0x8000: value - 0x10000 # 处理16位有符号数 else: logger.error(f读取保持寄存器错误: {result}) return None elif point[type] input: # 类似地处理输入寄存器 result modbus_client.read_input_registers(address, count1, slaveSLAVE_ID) if not result.isError(): value result.registers[0] if point[data_type] int16 and value 0x8000: value - 0x10000 else: logger.error(f读取输入寄存器错误: {result}) return None else: logger.warning(f不支持的寄存器类型: {point[type]}) return None # 应用缩放因子 if value is not None and scale in point: value value * point[scale] return round(value, 3) if isinstance(value, float) else value except Exception as e: logger.exception(f读取点位 {point[name]} 时发生异常: {e}) return None def publish_mqtt_discovery(mqtt_client, point): 向 Home Assistant 发布 MQTT 自动发现配置 config_topic f{MQTT_TOPIC_PREFIX}{point[name]}/config unique_id f{DEVICE_ID}_{point[name]} device_name fModbus Sensor {DEVICE_ID} config_payload { name: point[name].replace(_, ).title(), state_topic: f{MQTT_STATE_TOPIC}/{DEVICE_ID}/{point[name]}, unique_id: unique_id, device: { identifiers: [DEVICE_ID], name: device_name, manufacturer: DIY Modbus Bridge, model: reComputer R1000 }, unit_of_measurement: point.get(unit, ), value_template: {{ value_json.value }}, state_class: measurement, # 对于能耗数据可能是 total_increasing device_class: _get_ha_device_class(point[name], point.get(unit)), } # 根据数据类型和设备类型细化配置 if energy in point[name]: config_payload[state_class] total_increasing config_payload[device_class] energy elif temperature in point[name]: config_payload[device_class] temperature elif humidity in point[name]: config_payload[device_class] humidity elif voltage in point[name]: config_payload[device_class] voltage mqtt_client.publish(config_topic, json.dumps(config_payload), retainTrue) logger.info(f已发布自动发现配置: {config_topic}) def _get_ha_device_class(name, unit): 根据名称和单位猜测 Home Assistant 设备类别 name_lower name.lower() if temp in name_lower: return temperature elif humi in name_lower: return humidity elif power in name_lower or unit W: return power elif energy in name_lower or unit kWh: return energy elif volt in name_lower or unit V: return voltage elif current in name_lower or unit A: return current return None def main(): # 连接 MQTT Broker mqttc mqtt.Client(MQTT_CLIENT_ID) if MQTT_USERNAME: mqttc.username_pw_set(MQTT_USERNAME, MQTT_PASSWORD) mqttc.connect(MQTT_BROKER, MQTT_PORT, 60) mqttc.loop_start() logger.info(MQTT 连接已启动) # 发布自动发现配置仅在首次或配置变更时 for point in POINTS: publish_mqtt_discovery(mqttc, point) time.sleep(1) # 给 HA 一点时间处理发现消息 # 连接 Modbus modbus_client connect_modbus() if not modbus_client: return poll_interval 5 # 轮询间隔单位秒 try: while True: data_payload {device_id: DEVICE_ID, points: {}} for point in POINTS: value read_modbus_point(modbus_client, point) if value is not None: data_payload[points][point[name]] value # 同时发布到每个传感器的独立状态主题便于自动发现 state_topic f{MQTT_STATE_TOPIC}/{DEVICE_ID}/{point[name]} mqttc.publish(state_topic, json.dumps({value: value}), retainFalse) logger.debug(f发布 {point[name]}: {value}{point.get(unit, )}) else: logger.warning(f读取 {point[name]} 失败) # 也可以选择发布一个聚合的主题 # mqttc.publish(f{MQTT_STATE_TOPIC}/{DEVICE_ID}, json.dumps(data_payload), retainFalse) time.sleep(poll_interval) except KeyboardInterrupt: logger.info(程序被用户中断) finally: modbus_client.close() mqttc.loop_stop() mqttc.disconnect() logger.info(资源已清理程序退出) if __name__ __main__: main()这个脚本是一个功能完整的采集器框架。你需要根据你的 Modbus 设备手册修改POINTS列表中的地址、数据类型和缩放因子。运行前确保 reComputer 上已经运行了 MQTT Broker例如 Mosquitto。如果你使用 HAOS可以通过 Add-on Store 轻松安装 Mosquitto broker。3.3 Home Assistant 的安装与 MQTT 集成安装 HAOS从 Home Assistant 官网下载适用于aarch64的.img.xz镜像。将 reComputer R1000 的存储介质如 NVMe SSD 或高速 microSD 卡通过读卡器连接到你的电脑。使用 Balena Etcher 将镜像刷写到存储介质中。将存储介质装回 reComputer连接网线和电源启动。启动后在浏览器中输入http://recomputer的IP地址:8123你需要通过路由器查看其 IP或连接显示器查看按照向导完成初始设置。配置 MQTT 集成在 HA 侧边栏进入“配置” - “设备与服务”。点击右下角“添加集成”。搜索并选择“MQTT”。在配置页面Broker 填写localhost如果 Mosquitto 运行在 HAOS 本机端口1883。如果设置了用户名密码在此处填写。保存后MQTT 集成即添加成功。此时如果你已经运行了上面的 Python 采集脚本并且脚本中的DEVICE_ID和点位名称配置正确Home Assistant 应该会自动发现并添加这些传感器实体。你可以在“配置” - “设备与服务” - “实体”中搜索modbus或你定义的设备名来找到它们。手动定义传感器备用方案如果自动发现不生效你可以在 HA 的configuration.yaml文件中手动定义 MQTT 传感器。# configuration.yaml 示例 mqtt: sensor: - name: 车间温度 state_topic: modbus/sensor/state/recomputer_r1000_01/temperature unit_of_measurement: °C value_template: {{ value_json.value }} device_class: temperature state_class: measurement unique_id: recomputer_r1000_01_temperature4. 高级应用与自动化场景4.1 数据持久化与可视化数据进入 Home Assistant 后其强大的生态系统可以让你轻松实现数据记录和展示。数据持久化安装“File editor”插件来方便地编辑配置文件。然后在configuration.yaml中启用recorder组件并指定数据库默认使用 SQLite。你可以设置自动清理策略比如只保留最近 10 天的数据。recorder: purge_keep_days: 10 commit_interval: 30可视化使用Lovelace UI创建仪表盘。你可以添加各种卡片实体卡片直接显示传感器的当前值和单位。历史图表卡片展示传感器随时间变化的曲线非常直观。仪表盘卡片用仪表盘形式显示数值适合显示温度、湿度等在合理范围内的值。Markdown 卡片可以添加说明文字标注这个仪表盘监控的是哪个车间的哪条生产线。4.2 自动化与告警联动这是 Home Assistant 的精华所在。你可以基于 Modbus 采集的数据创建自动化规则。场景一高温报警当车间温度超过 35°C 时自动发送通知到手机并打开排风扇如果排风扇是连接到 HA 的智能插座。# automation.yaml 示例 - alias: 车间温度过高报警 trigger: platform: numeric_state entity_id: sensor.workshop_temperature # 你的温度传感器实体ID above: 35 action: - service: notify.mobile_app_your_phone # 手机通知服务 data: message: 警告车间温度过高当前 {{ states(sensor.workshop_temperature) }}°C title: 高温警报 - service: switch.turn_on target: entity_id: switch.exhaust_fan # 假设排风扇连接的智能插座场景二能耗监控与报表每天凌晨 2 点将前一天的总能耗通过 Modbus 电表读取记录到一个专门的传感器中并重置每日计数器。- alias: 记录每日能耗 trigger: platform: time at: 02:00:00 action: - service: input_number.set_value target: entity_id: input_number.daily_energy_yesterday data: value: {{ states(sensor.total_energy) | float }} # 从Modbus电表读取的总能耗 - service: script.reset_daily_counter # 调用一个脚本去复位电表的每日计数器如果支持4.3 使用 Node-RED 进行复杂逻辑编排对于更复杂的、涉及条件判断、流程控制、数据处理的场景在 HA 中安装Node-RED插件是绝佳选择。Node-RED 的图形化流式编程界面可以让你以拖拽的方式构建复杂的逻辑。在 HAOS 的 Add-on Store 中安装 Node-RED。配置 Node-RED使其能够与 Home Assistant 的实体和服务通信通常通过home-assistant节点。在 Node-RED 中你可以从 MQTT 节点订阅 Modbus 数据。使用function节点编写 JavaScript 代码对数据进行清洗、计算如将瞬时功率积分成能耗。使用switch节点进行条件判断。调用 HA 服务来控制其他设备。将处理后的数据再发布到 MQTT 或直接写入 HA 实体。例如你可以创建一个流当温度持续5分钟高于阈值且湿度同时低于某个值时才触发报警并开启加湿器避免误报。5. 故障排查与性能优化5.1 常见问题与解决方案在实际部署中你可能会遇到以下问题问题现象可能原因排查步骤与解决方案Modbus 连接失败/超时1. 串口参数不匹配波特率、校验位等2. 物理连接错误A/B线接反、未接终端电阻3. 从站地址错误4. 串口设备权限问题1.核对设备手册确保所有串口参数一致。2. 使用USB转RS485适配器和Modbus调试软件如 Modbus Poll在电脑上先测试设备确认其本身和参数无误。3. 检查 reComputer 串口引脚连接RS-485 模块的 DE/RE 使能引脚需要正确拉高或拉低。4. 运行ls -l /dev/ttyTHS1检查权限确保用户已在dialout组。读取的数据值错误或为01. 寄存器地址错误可能是十进制/十六进制混淆或地址偏移问题2. 数据类型解析错误如16位有符号数当成无符号数3. 字节序Endianness错误1.仔细阅读设备协议手册确认地址是从0开始还是从1开始Modbus 协议地址 vs PLC 地址。常见偏移是 40001保持寄存器对应协议地址 0。2. 在 Python 脚本中打印原始寄存器值 (registers)与调试软件读取的原始值对比。3. 对于32位数据尝试交换两个寄存器的顺序大端序/小端序。MQTT 消息未在 HA 中显示1. MQTT Broker 未运行或连接失败2. 自动发现主题或载荷格式错误3. HA 中 MQTT 集成配置错误1. 在 reComputer 上运行systemctl status mosquitto检查 broker 状态。用mosquitto_sub命令订阅#主题看是否能收到采集脚本发布的消息。2.检查自动发现主题和载荷是否符合 HA 官方文档格式。一个常见的错误是unique_id不唯一。3. 在 HA 的 MQTT 集成配置中启用“发现”选项。查看 HA 日志文件/config/home-assistant.log获取具体错误信息。采集脚本运行不稳定或崩溃1. 串口通信偶发性错误未处理2. 内存或资源泄漏3. Modbus 设备响应慢导致超时1. 在read_modbus_point函数中增加更完善的异常捕获和重试机制。2. 确保在finally块中正确关闭 Modbus 和 MQTT 连接。3. 适当增加timeout参数并考虑使用异步库如asyncio和asyncpymodbus来提高并发性和健壮性。reComputer 系统卡顿或无响应1. 存储介质SD卡读写速度慢或损坏2. 内存不足3. 采集轮询间隔太短CPU占用高1.强烈建议使用 SSD 或 eMMC 存储避免使用低速 TF 卡运行 HAOS。2. 监控系统资源htop,df -h,dmesg。为 Jetson Nano 4GB 版本分配适当的 SWAP 空间。3. 优化采集脚本将轮询间隔调整到合理值如10-30秒对于变化慢的数据如能耗可以更久。5.2 系统性能优化建议存储介质这是影响 HA 体验最关键的因素。务必为 reComputer R1000 配备一块质量可靠的NVMe SSD或高速eMMC存储。避免使用普通 microSD 卡其频繁的读写操作在长期运行后极易导致数据库损坏和系统卡顿。资源监控安装“System Monitor”集成或“Grafana”插件实时查看 reComputer 的 CPU、内存、磁盘和温度状态。Jetson 平台在长时间高负载下可能会发热确保其通风良好。采集策略优化分组读取如果设备支持使用 Modbus 的Read Holding Registers功能码一次读取多个连续寄存器而不是为每个点位单独发起请求这能大幅减少通信开销和延迟。差异化轮询不是所有数据都需要相同的更新频率。温度可能每秒都在变而总电表读数可能每小时读一次就够了。为不同点位设置不同的轮询间隔。状态变化才上报在采集脚本中增加逻辑只有当数据值的变化超过一定阈值delta时才通过 MQTT 发布更新减少不必要的网络流量和 HA 处理负担。使用 Supervisor 插件充分利用 HAOS 的 Add-on Store。像“Mosquitto broker”、“Node-RED”、“File editor”、“Terminal SSH”这些插件都经过优化通过 Supervisor 统一管理比自行在 Docker 或系统中安装更稳定、更易维护。这套基于 reComputer R1000、Modbus 和 Home Assistant 的方案成功地将工业现场的数据接入了智能化的管理平台。它既保留了边缘设备的可靠性和实时性又发挥了 Home Assistant 在集成、自动化和可视化方面的强大优势。从简单的数据监视到复杂的联动控制其灵活性和可扩展性为无数物联网应用场景打开了大门。

相关新闻