01 前言
本文章原文发表于我的微信公众号,请大家关注阅读,涉及的源代码等都在公众号,请搜索公众号: 智能家居NodeRed和HomeAssistant 即可关注。
02 概述
3.0版已经发布过节点配置指南,本次目的是更详细的说明使用方法以及节点的性能特点。
解析流程功能如下图所示:

需配置的节点为“节点配置”、“MQTT节点”和“通讯节点”,本章主要讲“节点配置”部分的配置和使用,也是解析流程最重要的配置。
03 主要特性
1、支持多设备、多通道的批量配置
可同时快捷配置多个相同设备,只需指定地址和通道数量。
2、多种校验码计算方法支持
支持常用的校验方法CRC16、XOR(与或)、SUM(校验和),默认为CRC16。
3、私有协议头码、尾码配置
支持私有协议头码、尾码也叫帧头、帧尾的自定义设置,同时也支持多字节的头码、尾码的定义。
4、报文生成顺序自定义
支持自定义报文顺序自定义,以适应于多种私有协议。
5、报文校验码计算起始位定义
可以对报文计算校验码计算的开始位置,默认从地址位开始计算校验码,尾码不参与计算。
04 系统配置
本章以中科易迅的12路继电器模块(私有协议)为例,讲解如何配置私有协议的485模块解析,与此协议类似的继电器模块都可参照此方法进行。
在3.1解析流程中打开“CNEISIN____开关设备”的配置节点示例,对节点配置部分进行修改,如下图所示:

Device配置选项:
该配置选项主要为设备主要参数配置,例如从站地址、通道数量、协议类型、校验方式,设备名称信息:
Add:对设备从站地址进行配置;示例中{ 1: 12, 2: 12 }表示有两台设备,从站地址1和2,分别各有12个通道,当然也可配置单台设备或更多设备,以上格式修改即可。
STD:表示采用Modbus方式解析或私有协议解析,当为false时采用私有协议解析,当为true或者不定义该项时采用Modbus方式解析。
CRC:表示采用校验码计算方式,目前支持CRC16、XOR(与或)、SUM(校验和)常用的三种方式,如果不指定则默认使用CRC16。
DevName:定义HA自动发现中显示的设备名称。在多设备配置时,两个设备的通道都显示在同一HA设备中,下次更新增加可选项,每个设备可以分开显示。
analysis配置选项:
该项目定义分析解析项目的详细参数,包括通道名称、开关键定义、同通道名称、报文设定、轮询设定、指令设定。
CH:CH值在3.0以前都是保留项,在3.1版后将发货它的作用,目前的作用是通过“报文数据解析”节点输出显示各路状态。CH设置的值为该节点通道值的起始值并包含其本身,在案例中设置了两个24路继电器模块,CH设置为1时,会顺序分配通道值1~24。
DrvClass:HA中的设备类型,案例中为开关设备故设置为switch。
entities:HA中的实体名称,请采用英文字母定义且保证全局定义不重复;在开关设备定义时,系统为根据定义的从站地址和通道数量自动生成实体名称,生成规则为:entities_Add_通道id,案例中从站1、第2通道的实体名称为switch_1_2。
AllOFF:全关指令预留,目前未配置相关逻辑;
Path:生成主题的路径,用于区分多设备时路径,可用默认值或按需修改。
OP:定义开关状态数据,可根据协议定义数据值所对应的状态,例如:当值为1时对应状态为ON。如要实现状态反转,把OFF和ON互换即可;
Notes:HA中显示的通道中文名称,即friendname值,这里生成值的格式和entities生成格式相同。同时支持对每个自定义Notes值格式为:Notes: { 1: "通道1", 2: "通道2", 3: "通道3", 4: "通道4"},目前仅支持单设备的通道设置,后续版本加以改进。
以下是自动生成并自动发现的截图:

BufferSet:报文配置,是节点配置的核心内容,务必详细分析设备协议后进行配置,以下是以中科易迅的反馈报文为例说明:

其中:
Addbit:即报文中从站地址值所在的位置,案例中为2;
BufferBit:即反馈状态值所在报文中的位置,案例中为4;
channelbit:即报文中通道号值所在位置,案例中为3;
Header:轮询和控制指令的尾码,没有需设置为0(反馈报文不用理会);
Trailer:轮询和控制指令的尾码,没有需设置为0(反馈报文不用理会);
ccbit:为可选项,手动指定校验码起始位,本案例不设置;
PollingSEQ:定义轮询指令的组成和顺序,案例中:头码+从站地址+固定值组成;
SendSEQ:定义控制指令生成的组成和顺序,案例中:头码+从站地址+固定值+定义的固定逻辑+有效负载值组成;
以上报文中校验码流程会根据设置自动计算,无需再次定义,定义字段请勿改动,否则流程将不会运行。特别注意的是当前流程只支持单头码和尾码协议,同时单头码和尾码不参与校验码计算的情况下适用,后续更新中会增加多位头码和尾码的情况和自定义校验码起始位。
05 存在的问题
1、本流程针对该款继电器模块只支持单路反馈,即每次只解析一个通道状态;该模块支持8路多通道的状态显示的,由于没有设备详细测试故暂不具备多通道同时解析功能,但这并不影响正常使用。
2、该继电器具备一条指令全关的功能,目前不具备该功能,后续流程可加以改进。
3、设备名称、通道名称目前都是批量生成,后续将增加对每个通道自定义的可选功能。
4、某些继电器模块具备自动轮询功能,后续考虑调整解析流程针对这类模块流程本身不再发送轮询指令。
以上问题并不影响数据的正确解析,只是在设备数量众多时可能影响反馈时间和反馈及时性。
06 关于解析流程获取
可通过链接快速访问获取3.1版解析流程:
3.1版RS485解析流程合集(个人版)
3.1版RS485解析流程合集(商用版)
07 结束语
欢迎在评论区留言讨论,你的反馈将帮助我不断优化流程,以便更好地服务于大家的需求。
请大家点赞、转发以便更多的朋友能够读到本文章,感谢大家的支持与厚爱!
5476

被折叠的 条评论
为什么被折叠?



