本帖最后由 zxl_hass 于 2021-9-18 23:23 编辑
2021年9月18日更新,manifest.json 添加版本信息,支持最新ha版本 直接下载附件即可。 airbox(2021-09-18)
2020年12月11日更新,支持多台空气盒子,见置顶帖
!!!!!!请在2020年2月15日 16:50之前下载附件的,重新下载一遍覆盖,voc位置写错了,导致获取到的VOC与海尔智家显示的不一致,其他功能不影响!!!!!
经过几天的折腾,终于成功将前端时间买的2个海尔空气盒子接入homeassistant,不敢独享,代码水平拙劣,大佬勿喷。目前还有一些不完美的地方,可以显示温湿度,可以通过homeassistant学习红外码和发射红外码。
通过网络搜索,在github上面找了两个有关的项目,一个项目是haier-airbox(PHP版本),这个项目是从海尔的服务器获取空气盒子的数据,需要抓包获取
appKey,获取的数据格式如下:
{"retCode":"00000","retInfo":"获取成功","data":{"dateTime":"20200214205520","temperature":605,"humidity":330,"pm25":20,"voc":70,"mark":84,"markInfo":"空气很棒 ","rank":17,"city":null,"lat":null,"lng":null,"distance":null}}
在测试的几天中,pm25和voc值几乎从来没变过,感觉似乎并不是很准。而且还要手动抓包获取appKey,过于繁琐。论坛已经有人发帖了,感兴趣的可以去搜索一下。
另外一个项目是一个早期的空气盒子ios端源代码 ,有兴趣的可以看一下,我用vscode大概看了一下,SDK封装了一层,看不到手机端与设备端的具体协议,水平太LOW,看不太懂,只把温湿度算法抓出来了。
进入正文,海尔空气盒子运行后会开放56800端口作为TCP服务端,APP的红外功能基于该协议,暂时不清楚APP的传感器显示是不是依赖于该协议,暂时仅将 温湿度和VOC接入,舒适度是根据温湿度计算出来的,但是不清楚VOC数值的具体单位,暂时除以1000,单位mg/m³,插件仅支持sensor和switch,只需要传入设备的IP地址,配置实例如下:
sensor:
- platform: airbox
host: 10.19.230.123
scan_interval: 60
switch:
- platform: airbox
host: 10.19.230.123
switches:
iptv_vol: #这个名字自己随意
friendly_name: IPTV音量
command_on: ''
command_off: ''
iptv_channel: #这个名字自己随意
friendly_name: IPTV频道
command_on: ''
command_off: ''
注意!!不配置switch,服务中不会出现学习红外和发射红外的服务项
写完配置文件,将插件放在config/custom_components/,重启hass,重启完成后会出现4个传感器的实体,开关的实体根据你自己定义的数量会有不同,然后就可以去开发者工具>服务里面去调用学码服务(发射红外码同理),host地址填空气盒子的IP地址,点击调用服务,然后空气盒子的PM2.5指示灯会变成红色,按下需要学习的按键,学码成功后,学到的码会出现在通知里,复制之后填到command_on:或command_off:后面,全部学完后重启hass,完成。
|