记大金空调DS

您所在的位置:网站首页 大金中央空调接入智能家居 记大金空调DS

记大金空调DS

#记大金空调DS| 来源: 网络整理| 查看: 265

前言

当年装修选购中央空调的时候,JS号称是可以用APP远程控制的,于是就入了个坑。在安装的时候发现这个设备非常的坑,这个空调网关有两种连接方式,一种是直接通过家里的内网直连,不需要任何鉴权(安全性堪忧,只能祈求家里的内网不被入侵了),一种是需要注册账号密码绑定到远程服务器,可以通过APP远程操控设备。

然而代理商的师傅安装现场调试的时候发现,如果不注册可以通过内网来控制。如果注册了远程账号,则内网、远程都挂掉了,还没有任何解绑的方法....

后来代理商师傅请来了大金官方的师傅,大金师傅说这设备要想解绑只能回厂冲刷。结果,愉快地注册死多个设备之后,大金师傅说不要注册了,不要远程控制了,就内网将就这用吧....据说这网关兼容性很差,有很多华为路由器用户连内网都是用不了....

zsj654qk8hp8suz6wnbhswryfwjv3v8k

这个神级的控制系统叫做DS-AIR。最近APP更新了一个版本,似乎解决掉了上述问题。不过,为了实现智能家居的统一控制,集成全硬件的自动化,为了少安装一个APP,还是决定将空调接入到HA中。在网上关注了很久,HA官方有集成大金的组件,但似乎不支持我家的这个设备,于是决定自己开发个组件,折腾的历程就这么开始了....

这个APP的网络连接基于TCP,传输协议是二进制的,单纯抓包无法解析报文结构,于是决定尝试反编译apk,通过代码解析辅助抓包来分析。

折腾过程 反编译apk

反编译一般使用ApkTool、dex2jar和JD-GUI三个工具。

ApkTool用来提取apk中的资源文件,由于我只是需要解析代码,不需要资源文件,所以没有用这个工具,直接unzip解压apk提取代码文件了。dex2jar用来将apk的dex文件还原成class文件打成jar包。JD-GUI则将jar反编译为java文件。

反解出来的代码目录结构如下,整体的反解质量还不错。

代码结构

不过某些文件的代码比较奇怪,有语法错误,还有大量重复的语句,像是做了混淆。还有一些文件的部分代码没能成功反解出来,以注释代替了。另外变量名不能够还原,代码分析起来比较痛苦,不过可以借助IDE很方便的rename变量名。

反解错误

变量名

报文分析

消息报文格式如下所示:

Bit | 0 | 1 2 | 3 4 | 5 | 6 | 7 8 9 10 | 11 | 12 13 14 15 | 16 | 17 18 | ... | last | Hex | 02 | 10 00 | 0d 00 | 01 | 00 | 01 00 00 00 | 00 | 00 00 00 00 | 00 | 01 00 | ... | 03 | Dec | 2 | 16 | 13 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | ... | 3 | Desc | start | length | res | subbody | res | increased | device | device | need | cmd | subbody | end | | | | | version | | ID | type | ID | ack | ID | content | |

报文格式为小端序,起止符号分别为02和03,具体字段定义如下:

| field | description | | start | 消息起始符02 | | length | 长度为不包含起止标识和长度位本身的消息字节数,空subbody时为16 | | subbody version | 子内容版本 | | increased ID | 消息自增ID | | device type | 设备类型 | | device ID | 设备ID | | need ack | 消息是否需要ack,0或1 | | cmd ID | 控制指令ID | | subbody content | 不同命令所附加的消息子内容 | | end | 消息结束符03 | | res | 保留字 |

分析出来的主要控制流程如下: 1.发起HandShake请求,等待响应,建立握手 2.发起GetRoomInfo请求,获取房间信息 3.发起AirConQueryStatus请求,获取各个空调状态 4.发起AirConControl请求,控制空调

期间,需要每隔60秒发送一次Heartbeat,否则网关会主动断开连接。Heartbeat格式为:

02 00 00 03

早些时候反解老版本DS-AIR,做了一个node版的实现,地址为daikin-dsair。后来DS-AIR出了新版,于是决定使用更易接入HA的Python来编写组件。

HA Component开发

开发HA组件主要参考了官方的开发文档,组件基于原生的climate组件开发platform,目前组件仍在开发中,地址为ha-dsair,后续开发完成后再补充组件的实现细节。

参考链接 反编译Android APK详细操作指南[ApkTool,dex2jar,JD-GUI](Mac) ApkTool dex2jar JD-GUI 大金DS-AIR官网 home-assistant开发文档 home-assistant GitHub Repo


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3