背景
家里空调用的是日立的,其专用i-EZII远程控制器虽然能接入到小度、米家、天猫精灵、华为等智能平台,但就是无法接入到HA,万物HA的乐趣就多了一丝遗憾,真是后悔当初没有下狠心花重金直接入手米家的VRF中央空调控制器或相关兼容产品,那样一步到位就省了后续的折腾,当然可能也就没有今天这篇分享了。
一直在网上搜索i-EZII接入HA方面的资料,用抓包工具查看过【日立智家】的数据,做过一些研究,无奈能力不行、精力也有限,整个项目基本没什么进展。幸运的是,2022年论坛上的一篇帖子海信5G中央空调抓包接入HA并打通Homekit让我看到了项目有望实现的曙光,该帖作者hudan717介绍的是实现海信中央空调接入HA的案例,而日立与海信是两个深度绑定的品牌,从抓包数据上看,实现远程控制的服务器,甚至API接口也几乎是一致的,这就有戏了。
因此,我也就顺理成章地站在巨人的肩膀上实现了日立中央空调接入HA的重大突破,所以,非常有必要特别感谢hudan717所做的探索!虽然时隔两年,但总算完成了,懒癌啊,没办法!
下面就正式进入正文。
实现
日立接入基本原理与海信接入是一样的,区别于hudan717的方案,我在他基础上以模块化的思路精简优化了一些代码,特别是增加了自动更新访问令牌功能,这样就再也不用频繁抓包手动更换token了。
HA配置文件里添加MQTT climate配置代码:
mqtt:
#日立空调配置
climate:
- name: '储藏室空调'
unique_id: chu_cang_shi_kong_diao
modes: #空调支持的模式
- "off"
- "cool"
- "dry"
- "fan_only"
- "heat"
fan_modes: #风力
- "low"
- "medium"
- "high"
max_temp: 32 #空调最高温度
min_temp: 16 #最低温度
power_command_topic: "/ac_00/power" #电源开关,climate.turn_on/off调用需要
mode_command_topic: "/ac_00/mode" #模式控制
temperature_command_topic: "/ac_00/temp" #温度控制
fan_mode_command_topic: "/ac_00/fan" #风力控制
current_temperature_topic: "/ac_00/tempnow" #当前室温(如果空调本身由这个功能可以加上)
fan_mode_state_topic: "/ac_00/fannow" #当前风力状态
mode_state_topic: "/ac_00/state" #当前模式
temperature_state_topic: "/ac_00/tempstate" #当前选择的温度
此处配置代码里各topic定义上要注意几点:
- 有多台内机,就要复制“- name:”往后在多份代码,其中name、unique_id要确保唯一性。各个topic字符串定义要规范统一,我给出的示例是"/ac_00/XXX",一般多台内机,就按ac_01、ac_02……依次编号,这样在Node-RED中可以从topic中获取内机编号,编写代码时更加方便,抄作业时不要乱改。
- modes、fan_modes子项可以根据自家空调实际情况调整,具体可参考HA文档资料。
- 如果需要增加其他配置项,请仔细研究第二项里给出的文档资料,还要在NR里添加相应的节点、流程,我提供的方案只针对我家的实际情况。
Node-RED里导入以下流程:
上面所示“00 储藏室”“01 次卧”内机控制模块,按自己实际情况添加。
根据自己抓包获取的信息,修改下面所示几个function节点里的数据。抓包技能相信玩HA的终归要自行掌握的,我也就不多啰嗦了。
补充说明:上图中content-length后面的436是按我自己的请求体长度计算的,没有测试字符数是否会影响request,如果提交报失败,需要各位按自己的msg.payload内容重新计算下,或者按“控制指令配置”节点里的代码,用JSON.stringify(msg.payload).length来自动计算。
MQTT In/Out节点里的服务端,要按自己系统配置,主题要按HA里配置代码更改。
几个模块之间,使用link节点连接,按以下总览图恢复:
特别说明下,HA的MQTT Climate集成对于开机控制的机理我还没有完全搞明白,仪表板里,只提供了“关闭、制冷、除湿、送风、制热”几个模式按钮,查了一大堆资料后,只能在控制模块里添加代码变通实现,即判断在模式按钮点击时,如果是关机状态,则先发送开机指令,再发送模式切换指令,这样来实现开机。坛友们有如更好方法,也请多赐教!
flow.zip
(8.03 KB, 下载次数: 26)
最后
本接入方案是在坛友基础上进一步修改完成的,本着共享互助的精神分享到论坛上,也算是对多年来从论坛索取的回报,希望大家能把这样的理念宗旨传递下去,造福广大坛友。
此方案只经过短期的试用,还没有经过长时间的测试,在稳定、安全、合规等方面没有任何承诺。如果在按此方案实现过程中造成任何有形或无形的财产损失、人身伤害,或面临任何法律风险,本人不承担任何责任。