01 前言
本文章原文发表于我的微信公众号,请大家关注阅读,涉及的源代码等都在公众号,请搜索公众号: 智能家居NodeRed和HomeAssistant 即可关注。
02 场景概要
本次接入采用的是ZH B19自定义(私有)485协议的VRF中央空调控制器,首先感谢粉丝朋友提供设备数据进行测试,因为本身我是没有这套设备。
之所以采用私有485协议VRF中央空调控制器,是因为我发现私有协议的解析处理效率更高,响应更快速。
网友的中央空调配置4台室内机,至于系统布线和连接我不介绍,因为我没有设备给大家 讲解,故请大家自行完成这项工作;我能做的就是通过提供的协议和数据测试场景进行流程测试,当然这套流程网友已经运行至少一个月以上,目前并没有反映有什么问题,说明工作良好。
03 接入HomeAssistant
接入HomeAssistant仍采用自己开发的全新NodeRed解析流程2.0,采用私有485协议接入,接入后界面和前面的小超人一致。
在系统配置方面基本和小超人大同小异,只是代表的意义有所差别,但是最大的区别是流程函数在处理数据时采用不同解析逻辑,具体使用方法如下(修改“Slave_2 空调VRF”节点即可):
Device配置(从站配置)
Add:设置从站地址;
STD:设置为ZHVRF,即采用中弘私有485VRF协议(如果不设置STD值则调用Modbus协议解析);
CRC:数据校验方式为SUM,即采用校验和校验方法;
DevName:自动发现为设备的名称,可自定义;
analysis配置(寄存器配置)
基本配置:
CH:通道序号,保留定义项,可以任意设置值;
DrvClass:HA中的设备类别;
entities:HA中的实体名称定义(设置的值并非生成的最终实体值,而是系统会自动添加对应的室内机地址例如:climatezhvrf_0);
Path:MQTT路径,需以“/”结尾,可喜好需要修改;
功能配置:
Fun:定义空调的功能配置分别为:开关、设置的温度、工作模式、风速模式、当前回风温度;前面的数值为Fun功能值所在485报文的位置,例如报文第6位值为0,则对应power值为0;
Funset:为调用写寄存器功能时的寄存器地址与功能值的对应关系,如果寄存器地址以16进制表示可以在数组前加上0x;
modes:为空调模式显示、选择设置,可根据功能可选功能设置,HomeAssistant支持的模式有:"auto", "dry", "cool", "heat", "off", "fan_only"六种,前面数值对应与模式的关系,例如1: "cool",表示值为1时解析为当前为制冷模式;
fan_mode:为风速模式显示、选择设置,可根据功能可选功能设置,HomeAssistant支持的模式有:"auto", "high","medium", "low"四种,前面数值对应于模式的关系,例如;0: "auto",表示值为0时解析为当前为自动模式;
power:为电源开关设置,一般都是0关1开。
Notes和Master:细心的朋友可能已经发现前面并没有实体名称Notes的配置,VRF和小超人最大的不同之处就在这里。不管是小超人是还是VRF都以可以通过蓝牙连接网关设备的,并对其进行设置和配置,以下是VRF的蓝牙配置界面:
上图中1-0、1-1、1-2、1-3前面是数字代表主机地址即VRF控制器的地址,但不同于485的地址值,具体根据小程序中的值为准,将此值设置为Master的值;后面的值为室内的的地址,需要自行测试分别属于哪个房间,例如0代表客厅,则在Notes中修改为对应的名称,如: 0: "客厅",此名称为HA中显示的实体名称,另外你有几台室内机则都需在Notes中设置完成,如例中所示。
如果同样也是ZH VRF中央空调网关,只需要更改Add值和对应的Notes值即可使用,流程会生成相应室内机编号的实体名称。当完成以上设置并配置好MQTT服务器后可点击注入节点流程即可自动运行,流程运行5S后会发送自动发现主题至HA,HA则会自动发现空调开关和空调设备,可在HA中的设置>设备与服务>集成>MQTT中找到发现的空调设备,添加至仪表盘后效果如下:
特别说明:在自动发现同时会生成开过实体和空调实体,因为HA的空调实体不带开关功能,这样就可以对空调开关进行操作:
!