Skip to content
This repository has been archived by the owner on Oct 4, 2024. It is now read-only.

最新的小米空调伴侣协议已经解析 #91

Open
ms300 opened this issue Jun 26, 2020 · 11 comments
Open

最新的小米空调伴侣协议已经解析 #91

ms300 opened this issue Jun 26, 2020 · 11 comments

Comments

@ms300
Copy link

ms300 commented Jun 26, 2020

控制这个空调不需要IR码,只要事先配对设置好型号即可!!

获取型号:

 ->  192.168.50.182 data= {"id":9340,"method":"get_ac_model","params":[]}
 <-  192.168.50.82 data= {"id":9340,"result":[187,10502,1],"exe_time":0}

获取空调运行状态

 ->  192.168.50.182 data= {"id":9341,"method":"get_prop","params":["ac_mode","ac_state","load_power","en_nnlight","quick_cool_state","sleep_state","list_crc32"]}
 <-  192.168.50.82 data= {"id":9341,"result":[0,"P0_M0_T26_S0_D999",163.00,1,0,0,3636024793],"exe_time":0}

设置温度

 ->  192.168.50.182 data= {"id":9350,"method":"set_tar_temp","params":[25]}
 <-  192.168.50.82 data= {"id":9350,"result":["ok"],"exe_time":10}

设置开关

 ->  192.168.50.182 data= {"id":9352,"method":"set_power","params":["off"]}
 <-  192.168.50.82 data= {"id":9352,"result":["ok"],"exe_time":10}
 ->  192.168.50.182 data= {"id":9353,"method":"set_power","params":["on"]}
 <-  192.168.50.82 data= {"id":9353,"result":["ok"],"exe_time":10}

设置风速

 ->  192.168.50.182 data= {"id":9354,"method":"set_fan_level","params":["small_fan"]}
 <-  192.168.50.82 data= {"id":9354,"result":["ok"],"exe_time":10}
 ->  192.168.50.182 data= {"id":9355,"method":"set_fan_level","params":["auto_fan"]}
 <-  192.168.50.82 data= {"id":9355,"result":["ok"],"exe_time":10}

因为代码发送形式和目前的版本严重不符所以我就魔改了一份,因为很多代码不符合原有规范,就不开源了,坐等作者大大适配

@KevinDevs
Copy link

请问这个是通过什么端口和空调伴侣通信的呀

@ms300
Copy link
Author

ms300 commented Jul 27, 2020

请问这个是通过什么端口和空调伴侣通信的呀

miio

@KevinDevs
Copy link

KevinDevs commented Jul 27, 2020

求大佬开个源吧 这个作者好像好久没冒泡了
这个好像就这一个项目 研究好久了 技术不够就很难受

@airpeng66
Copy link

只能等作者大佬更新了

@shiqian42
Copy link

求一份开源大家一起帮忙看看呀

@Hcreak
Copy link

Hcreak commented Mar 20, 2021

@ms300 我用miio调用set_power 返回ok 但空调不启动 这种情况 您遇到过么

@ms300
Copy link
Author

ms300 commented Mar 20, 2021

@ms300 我用miio调用set_power 返回ok 但空调不启动 这种情况 您遇到过么

预先与空调配对过吗?在开启的情况下发送命令设置温度有效吗? 我用到现在还没有遇到过不好使的情况,另外特别频繁发送指令可能会导致空调伴侣不响应,重启下就可以了。

@Hcreak
Copy link

Hcreak commented Mar 20, 2021

@ms300 我用miio调用set_power 返回ok 但空调不启动 这种情况 您遇到过么

预先与空调配对过吗?在开启的情况下发送命令设置温度有效吗? 我用到现在还没有遇到过不好使的情况,另外特别频繁发送指令可能会导致空调伴侣不响应,重启下就可以了。

配对了 用米家APP是可以开启的 用米家APP开启用miio发送指令调温度 只有第一次可以 后面的也是返回ok但没有生效 我抓包后用miio解码发现两者的数据包并没有什么区别 这很奇怪

---------------------------Update---------------------------------------

我发现了原因: 使用 miio CLI 发送指令 id每次都为1 这说明每次运行 miio CLI 都会创建一个新的Device对象 而在程序中引用miio去执行则不会出现这个问题 这可能是小米做的限制

@ms300
Copy link
Author

ms300 commented Mar 22, 2021

@ms300 我用miio调用set_power 返回ok 但空调不启动 这种情况 您遇到过么

预先与空调配对过吗?在开启的情况下发送命令设置温度有效吗? 我用到现在还没有遇到过不好使的情况,另外特别频繁发送指令可能会导致空调伴侣不响应,重启下就可以了。

配对了 用米家APP是可以开启的 用米家APP开启用miio发送指令调温度 只有第一次可以 后面的也是返回ok但没有生效 我抓包后用miio解码发现两者的数据包并没有什么区别 这很奇怪

---------------------------Update---------------------------------------

我发现了原因: 使用 miio CLI 发送指令 id每次都为1 这说明每次运行 miio CLI 都会创建一个新的Device对象 而在程序中引用miio去执行则不会出现这个问题 这可能是小米做的限制

哦哦,没有用miio cli发过指令,没考虑过是sequence的问题,解决了就好~

@Charliecheung2
Copy link

你好,请问你怎么抓包的?我用的mumu跑的安卓虚拟机。监听固定端口,没有任何数据。过滤成目标ip和发送ip的话可以获得一些UDP数据,但是用json-dump命令什么都没有出来。

@Charliecheung2
Copy link

你好,请问你怎么抓包的?我用的mumu跑的安卓虚拟机。监听固定端口,没有任何数据。过滤成目标ip和发送ip的话可以获得一些UDP数据,但是用json-dump命令什么都没有出来。

已解决。抓出来的包用的是send_cmd,目前的包还能很好地兼容

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants