示例48:Modbus 土壤传感器
接线与主站
先在外设配置创建UART(type1),配置实际TX/RX、波特率、校验位和停止位。通过3.3V兼容RS485收发器接现场A/B,按实际收发器选择DE/RE;A/B不能直连GPIO。再在通信协议选择Modbus RTU主站、该UART及JSON传输。配置前开启开发模式,参数需对照设备手册;示例保持禁用。
采集任务
下面是放入 protocol.json.modbusRtu.master.tasks 的单个任务,不是UART params。零基地址0起连续寄存器、倍率和字段顺序仅为教学假设;必须按确切型号修改,不能当成所有土壤传感器的标准表。
json
{
"name": "土壤示例",
"enabled": false,
"slaveAddress": 1,
"functionCode": 3,
"startAddress": 0,
"quantity": 3,
"pollInterval": 10,
"mappings": [
{
"regOffset": 0,
"dataType": 1,
"wordOrder": 0,
"scaleFactor": 0.1,
"decimalPlaces": 1,
"sensorId": "soil_temp",
"unit": "C"
},
{
"regOffset": 1,
"dataType": 0,
"wordOrder": 0,
"scaleFactor": 0.1,
"decimalPlaces": 1,
"sensorId": "soil_humi",
"unit": "%"
},
{
"regOffset": 2,
"dataType": 0,
"wordOrder": 0,
"scaleFactor": 1,
"decimalPlaces": 0,
"sensorId": "soil_ec",
"unit": "uS/cm"
}
]
}UART中没有protocol、dataMap、slaveId的这套内嵌解析结构。按实际设备确认从站地址1~247、FC03/04、数据类型、寄存器数量、字序、倍率和单位,再保存协议并显式启用任务。
数据与联动
映射以sensorId分别形成工程量,例如soil_temp和soil_humi,不是一个逗号拼接的对象字符串。条件规则从页面的数据源选择器选择对应字段,核对显示单位与新鲜度。超时、离线和过期不能解释成0。
先用指示灯验证条件;本例不自动操作灌溉阀或加热器,也不提供60秒阻塞脚本。长持续输出需独立停止规则、超时和现场保护。采样、平台收件及实物动作分别验收。

