goto100 发表于 2020-1-7 18:36:05

终于搞定了格力云控,控制中央空调【局域网协议】

本帖最后由 goto100 于 2020-1-17 12:51 编辑

1月17更新:

建议使用 https://github.com/xcy1231/Ha-GreeCentralClimate 版本,可自动发现子设备,无需手动获取子设备 mac

原文:

自从家里安装了格力中央空调,接入 HA 就成了一个难啃的骨头。趁着最近手热,彻底研究了一下,终于被我搞定了。
过程就不细说了,非常曲折,曾一度想放弃走 modbus rtu 方案,但最终在严酷的现实(穷)面前(设备价格小2000),坚持了下来……

格力的通信协议采用的 udp,抓包不太方便,为了看代码各种逆向安卓 apk,最后终于被我找到相关协议代码,上网一搜,居然已经有了?!

https://github.com/arthurkrupa/gree-hvac-mqtt-bridge
https://github.com/RobHofmann/HomeAssistant-GreeClimateComponent

原来,格力云控的原理是把自己作为一个父设备,下面的空调作为子设备,而格力云控则直接通过格力普通空调的局域网 udp 协议对外暴露接口,问题在于,以上两个项目都是从普通空调做的逆向,并没有处理父子设备相关的逻辑,且中央空调和普通空调的功能上也有差异,需要做一些适配工作,HomeAssistant-GreeClimateComponent 的适配修改我已经做完了,目前还未合入,可以使用我的修改版 fork:

https://github.com/goto100/HomeAssistant-GreeClimateComponent

最终效果比较满意,状态读取、模式、温度、风向控制一应俱全。除了云控 api 偶尔会报错 400,状态更新可能有延迟。

此方案需要先获取到子设备的 mac 地址,此 mac 地址并不是真实 mac 地址,无法从路由器看到,还得通过官方云 api 获取,后续的运行时为完全局域网通信。感谢群内大佬 yinzhennan 之前的成果,这部分代码我可以不用重新写了:
https://github.com/goto100/HomeAssistant-GreeClimateComponent/blob/master/scripts/mac.py

python3 mac.py 用户名 密码

会输出所有子设备的名字和 mac,这里的 mac 就是 HA 插件配置文件中的 mac 了。

情非殇 发表于 2020-1-7 18:55:26

感谢分享,请教下这个是否适用于非中央空调的型号呢?

zxytddd 发表于 2020-1-7 19:10:14

本帖最后由 zxytddd 于 2020-1-7 19:34 编辑

感谢大佬,成功帮我节省了2000 购买 modbus RTU 的成本!
有一个疑问,
这个项目的README.md里提到,如果使用了安卓app,那么加密key可能会变化。
If your HVAC has already been configured to be controled remotely by an android app, the encryption key might have changed.
但是为了获取真实的MAC地址,又要先配置官方的API,就要使用安卓APP。
我的理解对么?

goto100 发表于 2020-1-7 19:33:40

情非殇 发表于 2020-1-7 18:55
感谢分享,请教下这个是否适用于非中央空调的型号呢?
https://github.com/arthurkrupa/gree-hvac-mqtt-bridge
https://github.com/RobHofmann/HomeAssistant-GreeClimateComponent

这两个应该都可以。我的修改版理论上也是支持的。

goto100 发表于 2020-1-7 19:41:56

zxytddd 发表于 2020-1-7 19:10
感谢大佬,成功帮我节省了2000 购买 modbus RTU 的成本!
有一个疑问,
这个项目的README.md里提到,如果使 ...

获取子设备 mac 地址的脚本应该不会影响这个,我也用 android 模拟器发送过相关请求,并未出现 key 变了的情况。

至于原组件中提到的情况,我用的 iOS,无法确认这个,不过理论上如果出现了,就用原文中提到的方法应该也可以解决。

新生活 发表于 2020-1-7 21:14:23

学习,谢谢分享

y_fmail 发表于 2020-1-8 08:48:10

留个脚印先

honry 发表于 2020-1-9 11:39:23

想从nodered直接控制,大佬这个可以在nodered里搞不:lol

ahome 发表于 2020-1-9 13:29:34

高手 什么时候能出 松下中央空调 接入协议啊

发表于 2020-1-9 14:02:37

honry 发表于 2020-1-9 11:39
想从nodered直接控制,大佬这个可以在nodered里搞不

你中毒了!
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 终于搞定了格力云控,控制中央空调【局域网协议】