新闻中心
PRESS CENTEREG8200边缘计算网关支持读写满足 CJ/T 188-2004 标准的户用计量仪表 。
协议可参考:https://iotrouter.yuque.com/attachments/yuque/0/2023/pdf/38696274/1698394496011-8d0bb7e8-9f74-4d73-852c-1d673d8e3b44.pdf
支持在CJ188节点中配置多个要采集的数据,通过输入消息来触发数据采集。CJ188节点按照数据点的配置顺序进行采集,每采集完一个数据点即输出一个消息对象。
串口配置:选择CJ188设备接入的串口号 数据名称:要采集的数据点名称,键值对的KEY,用户自定义 水表类型:2位16进制字符,例如:10表示冷水水表 水表地址:14位字符串格式的水表地址,例如:00202307160177 数据标识:4位16进制字符,例如:901F表示读计量数据 详情请参考协议文档 |
示例采集一个表号为00202307160177的冷水水表的计量数据,数据名称自定义为data,采集结果存储在属性msg.data中,如图所示:结果含义请参考高级用法输出:
源码:见文末
支持向CJ188节点输入符合规定的消息对象,实现【写数据】、【读数据】、【写阀门状态】等功能。
《 CJ/T 188-2004 户用计量仪表数据传输技术条件》规定的数据标识一般包含多个属性,因此解析数据成功后将多个属性合为一个对象输出,当CJ188节点的输入包含msg.key属性,输出以msg.key值作为对象名,否则以msg.address作为对象名。
写输入
msg.type #水表类型:2位16进制字符串,例如:10表示冷水水表 msg.address #水表地址:14位字符串格式的水表地址,例如:00202307160177 msg.cmd #控制码:字符串格式,具体请参考协议文档 msg.ret #正常应答控制码:字符串格式,具体请参考协议文档 msg.datalen #数据长度:字符串格式,具体请参考协议文档 msg.identify #数据标识:字符串格式,具体请参考协议文档 msg.seq #序列号:字符串格式,具体请参考协议文档 msg.val #要写入的值,写必填,读请忽略此属性 msg.key #输出结果对象名(选填,如果未携带该字段,输出对象名为msg.address) |
写输出
msg.type #输入的字段 msg.address #输入的字段 msg.cmd #输入的字段 msg.ret #输入的字段 msg.datalen #输入的字段 msg.identify #输入的字段 msg.seq #输入的字段 msg.val #输入的字段 msg.status # OK"正常回复"TIMEOUT"超时 msg.reqpayload #请求的命令帧 msg.payload #响应的命令帧,如果超时则为空 msg.key(msg.address) #写入结果 【true】:成功 【write reply Error】:回复错误 【write Error】:控制码错误 |
读输入
msg.type #水表类型:2位16进制字符串,例如:10表示冷水水表 msg.address #水表地址:14位字符串格式的水表地址,例如:00202307160177 msg.cmd #控制码:字符串格式,具体请参考协议文档 msg.ret #正常应答控制码:字符串格式,具体请参考协议文档 msg.datalen #数据长度:字符串格式,具体请参考协议文档 msg.identify #数据标识:字符串格式,具体请参考协议文档 msg.seq #序列号:字符串格式,具体请参考协议文档
msg.key #输出结果对象名(选填,如果未携带该字段,输出对象名为msg.address) |
读输出
msg.type #输入的字段 msg.address #输入的字段 msg.cmd #输入的字段 msg.ret #输入的字段 msg.datalen #输入的字段 msg.identify #输入的字段 msg.seq #输入的字段 msg.status # OK"正常回复"TIMEOUT"超时 msg.reqpayload #请求的命令帧 msg.payload #响应的命令帧,如果超时则为空 msg.key(msg.address) #读取结果 #【read reply Error】:回复错误 #【read Error】:控制码错误 #【read data identification error】:数据标识错误 #【Object】:参考对象说明 #读取对象参考 #数据标识 属性含义 #901F读计量数据 cct:当前累计流量 #atosd:结算日累计流量 #data:实时时间 #st:状态ST,16进制 #value:状态ST,低2位D0D1,16进制 #D120~D12B 历史计量数据 #8102读价格表 price1:价格1 #dosage1:用量1 #price2:价格2 #dosage2:用量2 #price3:价格3 #dosage3:用量3 #8103读结算日 #8104读抄表日 #8105计数器寄存器 seq:本次购买序号 #som:本次购入金额 #ca:累计购入金额 #ra:剩余金额 #st:状态ST,16进制 #value:状态ST,低2位DOD1,16进制 |
901F输出示例
{ "cct":"000001.00",//当前累积流量 "atosd":"000001.00",//结算日累积流量 "date":"0000-00-00-00-00-00",//实时时间 "st":"02ff",//状态ST 16进制 "valve":"02"//状态ST 低2位 D0 D1 16进制(即阀门状态) } |
8102输出示例
8105输出示例
{
"seq":"01",//本次购买序号
"aom":"000001.00",//本次购入金额
"ca":"000001.00",//累计购入金额
"ra":"000001.00",//剩余金额
"st":"02ff",//状态ST 16进制
"valve":"02"//状态ST 低2位 D0 D1 16机制
}
1. 读901F
msg.address = '00202307160177' //address 表地址 msg.type = '10' //type 表类型 msg.cmd = '01' //cmd 控制码 msg.ret = '81' //ret 正常应答控制码 msg.datalen = '03' //datalen 数据长度 msg.identify = '901F' //identify 数据标识 msg.seq = '00' //seq 序列号 return msg; |
2. 写数据:开阀
msg.address = '00202307160177' //address 表地址 msg.type = '10' //type 表类型 msg.cmd = '2A' //cmd 控制码 msg.ret = 'A5' //ret 正常应答控制码 msg.datalen = '04' //datalen 数据长度 msg.identify = 'A017' //identify 数据标识 msg.seq = '00' //seq 序列号 msg.val = '55' //val 值 return msg; |
源码/教程:https://iotrouter.yuque.com/zn3vdn/eg8000/xlkzl9b4ubz345a3
读取超时:请检查【表地址】等参数是否正确、物理线路是否正常。计量仪表本身可能不支持某些数据标识
读取错误:数据无法解析,CJ188节点的输出包含了【请求报文】、【响应报文】,可自行使用函数计算节点将CJ188节点的输出对象进行解析