本帖最后由 xz0609 于 2021-1-6 01:25 编辑
分析过程
当前集客网关X86版本:V3.1 Build2020121800
下载地址:http://file.cnrouter.com/index.php/Index/apbeta.html
如何在浏览器里抓包,还请自行百度,抓包后可以看到,访问了2次/api/login的地址,第一次是get方式来获取json中的msg值,第二次是post方式用来提交登录的账号跟密码,经过多次抓包发现,loginid为登录账号,passwd为32位的md5登录密码,登录是经过js加密过的,每次登录都不一样。用loginid和passwd做为关键词搜索JS文件(/dest/jquery.all.js跟/dest/jkgw86.js),在/dest/jquery.all.js中可以看到passwd是通过encryptPasswd函数来加密的,另外在/dest/jkgw86.js中可以看到在登录提交前把passwd用hex_md5(hex_md5(e.password) + a.msg)函数再次加密的,其中a.msg就是访问/api/login地址第一次是get方式来获取json中的msg值,知道了密码加密算法后,接下来就简单了,因为抓包返回的都是json。
在写py代码的时候,本来是用execjs来解密JS加密算法,py文件上传到HA里后,发现docker里的HA中没有JavaScript环境,后来换成js2py,就不用再配置JS环境了。
插件插件
基于trz0332大佬的高格device_tracker.py修改而来。
之前AP是刷老毛子的padavan固件,感谢trz0332大佬的padavan的插件。
github地址: https://github.com/xz0609/JiKe_GateWay_AC_HA
HA的yaml配置
device_tracker:
- platform: jike_gateway_ac
host: !secret jike_gateway_ac_host # 必填项,集客网关AC的IP地址
username: !secret jike_gateway_ac_username # 必填项,集客网关AC的登录账号
password: !secret jike_gateway_ac_password # 必填项,集客网关AC的登录密码
include:
- K2P # 可选项,值为AP的设备名称,用于过滤AP
- RM2100
# latitude: !secret home_latitude
# longitude: !secret home_longitude
consider_home: 30 #设备离线延时
interval_seconds: 15 #扫描间隔时间
new_device_defaults:
track_new_devices: true
插件使用说明
把jike_gateway_ac文件夹放到HA的config/custom_components目录下,并按以上的yaml配置后,重启HA就可以了。
备注
网关AC默认是一分钟同步一次,所以扫描间隔时间不要设置太低了,没啥用,浪费资源。
按以上配置测试过,基本上90秒左右,HA里有反馈。家里AP多了之后,有个AC来管理维护那是想到的方便。
感谢集客的固件,毕竟AC+AP都是免费的。
家里,现在有6个AP:
|