『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 43951|回复: 83

[插件集成] 解决空调伴侣控制格力空调【YAP0FB2】的问题及抓包分析

  [复制链接]

11

主题

108

帖子

833

积分

论坛技术达人

积分
833
金钱
715
HASS币
50
发表于 2019-2-21 16:03:10 | 显示全部楼层 |阅读模式
本帖最后由 iwha 于 2019-11-11 15:03 编辑

我的格力空调遥控器型号是YAP0FB2, 米家app使用正常,但是ha插件https://github.com/rytilahti/python-miio 以及 https://github.com/syssi/xiaomi_airconditioningcompanion 都无法使用
安装了homebridge-miio 也不能使用

只好自己动手抓包分析, 经过反复对比终于确定了最终匹配模式,然后在现有插件基础上做了写改动和补充。

针对python-miio的改动:
》更具体精准的 发送码 模式

针对syssi大拿的代码改动:
》添加了led灯初始化状态, 原来的代码开机是关闭led灯

我的米家空调伴侣V2, V3 都可以使用配合格力空调使用, 只适用于遥控器型号为YAP0FB2的格力空调以及米家app匹配格力第2、3套方案

使用方式: 下载压缩包,把两个文件放入~/.homeassistant/custom_component/climate/
配置和https://github.com/syssi/xiaomi_airconditioningcompanion 基本相同,只需要修改一下platform
climate:
  - platform: xiaomi_miio_gree
    name: AC
    host: 192.168.10.12
    token: 【token】
    target_sensor: sensor.temperature_158d0001f53706
    scan_interval: 10

抓包分析(只针对格力空调 设备类型为gree_2 - 0100010727)
如果你的空调还是不能完全匹配,可以试试自己抓包分析几个计算用的常数
抓包分析很简单
1. 安装wireshark
2. 安装android模拟器(我用的是Nox App Player)然后安装android版米家app
3. 安装nodejs 版的miio , 主要用来解析通讯包

npm install -g miio


4. 代开模拟器中的米家app,并打开空调伴侣控制界面
5. 打开wireshark, 选择网络接口,一般可忽略
Screen Shot 2019-02-22 at 11.04.59 AM.png
6. 在wireshark 顶部 “Apply a display filter“ 填写

udp.dstport == 54321 or udp.srcport == 54321
Screen Shot 2019-02-22 at 11.05.14 AM.png
7. 点击蓝色鲨鱼鳍 按钮开始监听
8. 在模拟器米家app操作伴侣, 刚开始的时候最好记住自己进行了那些操作和温度、扫风灯状态
9. 点击wireshar红色停止按钮 结束抓包
10. 选择wireshark 菜单 文件 -》 Export Packwt Dissections -》 As JSON  导出 json 文件
11. 打开命令行运行, 其中token就是空调伴侣的token

miio protocol json-dump dump.json  --token 【伴侣token】


12. 解析出的params 中类似
010001072711011801001908205002102000E01908207002000010C0

就是我们需要的
Screen Shot 2019-02-22 at 11.16.00 AM.png

13.然后按照匹配模式分组,[po][mo][wi][sw][tt][li]00[wtw][pmp][tt1]205002102000[tt2]0[wtw][pmp][tt1]2070020000[wbw]0[tt3]0

然后根据公式计算
( x + 设定温度 - 17 ) % 16 = 红框中的数
Screen Shot 2019-02-22 at 11.19.54 AM.png

其中tt1、tt2、tt3 都按上面的公式计算x

tt1 x变化不大, 我的空调除了auto外的模式都为1
tt2、tt3 x每个模式都不同
pmp 是常数 每种模式以及关闭状态都可能不一样


HomeAssistant > 0.89 自定义路径变化为conf/custom_components/xiaomi_miio_gree/climate.py
修复最新空调伴侣固件无法关空调的问题
修复不同风速无法开机的问题





* 2019.11.11 修复了HA 0.101.3的兼容性问题 (基于https://github.com/syssi/xiaomi_airconditioningcompanion修改版本,感谢syssi)
xiaomi_miio_gree.zip (8.6 KB, 下载次数: 38)







xiaomi_miio_gree.zip

7.4 KB, 下载次数: 46

HA>=0.89

评分

参与人数 2金钱 +30 收起 理由
windgo + 10 大神666!
+ 20 厉害了word楼主!

查看全部评分

回复

使用道具 举报

8

主题

870

帖子

5218

积分

论坛元老

Rank: 8Rank: 8

积分
5218
金钱
4348
HASS币
0
发表于 2019-2-21 17:04:39 | 显示全部楼层
本帖最后由 新生活 于 2019-2-21 17:06 编辑

谢谢分享,赞,请问led状态可以设置吗?
回复

使用道具 举报

11

主题

108

帖子

833

积分

论坛技术达人

积分
833
金钱
715
HASS币
50
 楼主| 发表于 2019-2-21 17:12:59 | 显示全部楼层
新生活 发表于 2019-2-21 17:04
谢谢分享,赞,请问led状态可以设置吗?

现在是根据上一次的状态设置的
回复

使用道具 举报

24

主题

884

帖子

5055

积分

论坛元老

Rank: 8Rank: 8

积分
5055
金钱
4166
HASS币
20
发表于 2019-2-21 18:10:11 来自手机 | 显示全部楼层
没明白,用ha控制,不也是先通过米家匹配了,ha控制空调伴侣发送匹配好的指令的吗?为什么会出现米家可以ha不可以的情况?
回复

使用道具 举报

11

主题

108

帖子

833

积分

论坛技术达人

积分
833
金钱
715
HASS币
50
 楼主| 发表于 2019-2-21 18:13:22 | 显示全部楼层
chenquanhao 发表于 2019-2-21 18:10
没明白,用ha控制,不也是先通过米家匹配了,ha控制空调伴侣发送匹配好的指令的吗?为什么会出现米家可以ha ...

米家app也是发送指令给伴侣,再根据匹配空调找到合适的红外码再发送
因为miio发送的空调码不匹配,所以伴侣不能正确解析指令导致我的空调不工作
回复

使用道具 举报

5

主题

295

帖子

3994

积分

论坛元老

Rank: 8Rank: 8

积分
3994
金钱
3699
HASS币
0
发表于 2019-2-21 18:25:25 | 显示全部楼层
看一下怎么解决的,看样子我的也可以继续用了
回复

使用道具 举报

2

主题

240

帖子

1278

积分

论坛积极会员

积分
1278
金钱
1038
HASS币
0
发表于 2019-2-21 19:01:13 | 显示全部楼层
感谢分享
回复

使用道具 举报

24

主题

884

帖子

5055

积分

论坛元老

Rank: 8Rank: 8

积分
5055
金钱
4166
HASS币
20
发表于 2019-2-21 20:39:13 | 显示全部楼层
iwha 发表于 2019-2-21 18:13
米家app也是发送指令给伴侣,再根据匹配空调找到合适的红外码再发送
因为miio发送的空调码不匹配,所以伴 ...

空调码不是通过米家使空调伴侣找了合适的红外码,保存到伴侣机器中。

之后无论米家还是ha,都只是让空调伴侣发送之前保存好的红外码吗?

难道是每次发送操作指令时匹配一次红外码?
虚心求教
回复

使用道具 举报

11

主题

108

帖子

833

积分

论坛技术达人

积分
833
金钱
715
HASS币
50
 楼主| 发表于 2019-2-21 21:15:36 | 显示全部楼层
chenquanhao 发表于 2019-2-21 20:39
空调码不是通过米家使空调伴侣找了合适的红外码,保存到伴侣机器中。

之后无论米家还是ha,都只是让空调 ...

米家App的工作流程是这样的:
伴侣界面操作 -》 发送http请求到小米服务器 -》返回红外码 -》 发射红外码

如果通过udp发送给伴侣的请求码 格式不正确的话,结果是无法得到正确的红外码,要么干脆不发射红外命令(多数是这种情况),要么发射错误的红外命令
回复

使用道具 举报

24

主题

884

帖子

5055

积分

论坛元老

Rank: 8Rank: 8

积分
5055
金钱
4166
HASS币
20
发表于 2019-2-21 22:22:48 | 显示全部楼层
iwha 发表于 2019-2-21 21:15
米家App的工作流程是这样的:
伴侣界面操作 -》 发送http请求到小米服务器 -》返回红外码 -》 发射红外码 ...

谢谢指教。如果这样,空调伴侣岂不是不能在局域网下工作?我找时间试验下才行,我一直以为初次匹配好了,就下载了一套红外码保存里本地。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-28 18:54 , Processed in 0.058535 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表