终于搞定了格力云控,控制中央空调【局域网协议】 |
您所在的位置:网站首页 › 空调联网失败114169 › 终于搞定了格力云控,控制中央空调【局域网协议】 |
本帖最后由 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 了。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |