|
本帖最后由 yunsean 于 2018-10-15 17:22 编辑
唔,这周不想写代码,APP暂时没啥更新的,在这开始凉爽的秋天,写一个空调伴侣的插件来纪念已经过去的夏天。
https://github.com/yunsean/hass/tree/master/plugin
通过小米空调伴侣实现的空调遥控插件。
有点饶舌,不是利用空调伴侣原生的空调控制功能,而是通过工具(tools/recordkey.py)提前录制好遥控器的一系列指令(体力活哦),然后当通过home assitant控制时,利用空调伴侣的红外发送功能,将这些预先录制好的红外指令发送出去,实现对空调的控制。
0、背景
我们家用的是科龙空调,整个夏天过去了,无论是通过米家APP控制,还是通过home assistant控制,都没有好用过
比如比较奇葩的,调温度,调到制冷27度,他关机了。。。他居然关机了
比如,我让他开机,结果他关机了,我让他关机,他开机了,好像那个开关都是toggle模式的,每个准数!
然后,然后,我无语了,就搞了这么一个发送红外指令的插件来控制呗!
然后,有的同学看完可能会说,录制指令得累死,好吧,确实挺累的,但你们有我累吗?我调试程序翻来覆去录制了三四次,遥控器都被我按哭了。。。
再然后,有同学可能会说,这一次加载几百个指令到home assistant中,怕机器扛不住哦,好吧,别小看你的机器,几百条数据?home assitant的history记录轻松上十万好吧?别那么担心,除非你的机器内存只有50M。。。
下边是正题。。。
1、空调指令录制
(高强度体力活,请慎重。)
首先打开tools目录下的recordkey.py文件,找到这一行:
xiaomi = AirConditioningCompanion("YOUT IP", "YOUR TOKEN")
修改其中的YOUR IP和YOUR TOKEN为你的空调伴侣对应的IP和token,哦,token咋个找,我不负责!
其次,可以设置你想录制的空调温度范围:
minTemp = 18
maxTemp = 30
然后,开始运行,需要你的环境中有miio的python包,安装方式:
pip3 install python-miio
如果你直接在home assistant上运行的话,应该是已经安装好了的。
然后运行:
python3 recordkey.py
接下来你可以看到录制提示,强烈推荐先把你的空调插头从伴侣上拔下来,否则后边一开一关的,你的空调会疯掉。
这里估计有一百来个按键需要你逐个输入录制,录制过程中,请按照提示来做,但是每个空调的流程不太一样,所以一般情况下,你得录制两三次来熟悉你的空调遥控器(前面已经说了是高强度体力活哦)
比如:
【录制关机指令】现在,请先用手掌捂住遥控器的发射灯,并将空调模式调整为通风模式(风速Auto,摆风关闭),然后松开手掌,并按下关闭空调:
就是提示接下来就是录制关机指令,那么,你得先把遥控板置于打开状态啊,这个时候,如果发现你的遥控器本来就是关闭的,怎么办呢,用手把空调遥控器上的发射灯(一般在顶部)捂住,捂严实了,避免被伴侣收到遥控码,然后将遥控器调到打开状态,再松开手掌,对着伴侣按下开机键,就完成了录制哦。
慢慢体会吧,体力活体力活。
另外提醒一句,后边的那些录制基本都有询问要不要录制,如果录制错了,可以通过省略之前的部分,只重新录制需要录制的部分,然后将结果进行合并。
当录制完成后,将会直接在窗口中输出之前收到的控制码,控制码的格式是:
- close:FE00000000000094701FFF96FF0500AC278d003600AA01C80347138832010100000000000100010100000000000101010000000000000001000101010000000000000000000000000000000000030000000000000001000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000010100000100010103000000000000000001000100000100000000000000000000000000000000000000000000000100000000010001000000010000000100000004E5
这个格式基本上可以直接拷贝到配置文件中去(后边会说),如果发现无法满足,请批量替换处理一下吧
简单说一下格式:
最前面的减号-,这是home assistant配置文件(yaml格式)中对于数组定义所需要的,也就是说这些指令是当做数组配置给插件使用的
close以及heat-high-off-28、heat-quiet-off-24-aux这种,代表指令名称,插件中是按照规则来匹配的:
close固定为关机指令
其他指令按照这个格式:
模式-风速-摆风开关-温度-电辅加热
模式根据后续配置文件指定(自动转换为小写)
风速也根据配置文件来指定(自动转换为小写)
摆风开关取值on或者off
温度为16~30的整数,具体取值范围也根据配置文件来
当开启电辅加热时,后面增加-aux,否则省略该段
举例:
- close: 关机
- cool-auto-off-18: 制冷模式,自动风速,摆风关闭,18度
- cool-auto-off-19: 制冷模式,自动风速,摆风关闭,19度
- cool-low-off-21: 制冷模式,风速低,摆风关闭,21度
- heat-auto-off-24: 制热模式,自动风速,摆风关闭,24度
- dehumidify-auto-off-18: 除湿模式,自动风速,摆风关闭,18度
- ventilate-auto-off: 送风模式,自动风速,摆风关闭
- heat-quiet-off-24-aux: 制热模式,静音风速,摆风关闭,24度,开启电辅加热
这玩意儿反正比较重体力活,慢慢弄吧!
附带了一个科龙空调的指令表,配置直接配置使用。
唔,多说一嘴,在运行过程中,每个询问你要不要做什么的环节,按y或者yes并且回车代表要做,按n或者no并且回车代表跳过,然后,按下r或者q并且回车,会显示前面已经录制的所有指令哦。。。用途?自行体会!!!
2、插件配置:
将custom_components复制或者合并到home assistant的配置目录中去。
修改configure.yaml:
climate:
- platform: xiaomi_miio_ir
name: primary_bedroom_climate
host: YOUR IP
token: YOUR TOKEN
target_sensor: sensor.caiyun_hourly_temperature
min_temp: 20
max_temp: 28
fan_mode_list: Low,Medium,High,Auto,Quiet
operation_list: Heat,Cool,Auto,Dehumidify,Ventilate
swing_list: On,Off
support_aux_heat: true
instructs:
- close:FE00000000000094701FFF96FF0500AC278d003600AA01C80347138832010100000000000100010100000000000101010000000000000001000101010000000000000000000000000000000000030000000000000001000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000010100000100010103000000000000000001000100000100000000000000000000000000000000000000000000000100000000010001000000010000000100000004E5
- cool-auto-off-18:FE00000000000094701FFF96FF0500AC278d003600AA01C60346138832010100000000000100010100000000000000010000000000000100000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000101000001000103000000000000000001000100000100000000000000000000000000000000000000000000010100000000010001000000010000000000000004DC
- cool-auto-off-19:FE00000000000094701FFF96FF0500AC278d003600AA01C60346138832010100000000000100010100000000000000000000000000000100000100000000000000000000000000000000000000030000000000000001000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000100000101000103000000000000000000010000000000000000000000000000000000000000000000000000010100000000010001000000000101000001000004DC
格式都是之前的老格式,说一下几个配置字段:
name host token没啥好说的,和miio空调伴侣一样
target_sensor这个和miio空调伴侣的一样,代表当前温度从哪个传感器获取
min_temp 界面上允许选择的最低温度,一般来说,和你遥控器的上能设置的最低温度一样就行了,当然,如果你录制指令想偷懒,那么可以设置的不同,比如20,那你只需要录制20度以上的指令
max_temp 界面上允许选择的最高温度,和min_temp一样一样的
fan_mode_list 界面上允许选择的风速模式,一般来说,你遥控器上风速按钮出现的有几个就设置几个,当然,如果你想偷懒,哼哼。。。
operation_list 界面上允许选择的工作模式,一般就Heat,Cool,Auto,Dehumidify,Ventilate,我反正把Auto都删了
swing_list 界面上允许选择的摆风模式,如果你不想录制摆风模式下的一倍指令,那这个字段不设置(删除这一行就好了),界面上就看不到摆风的选项了
support_aux_heat 你的空调是否支持辅热,唔,如果支持,你有的辛苦了,需要把所有的制热模式多走一遍,大约是(30-18+1)(温度范围)*4(种风速)=72行指令,哇哇哇
instructs 这个就是指令数组了,就是通过上边工具录制出来的指令码。
然后。。。
然后?
就和miio的空调伴侣一样的使用了呗。
plugin.zip
(20.88 KB, 下载次数: 33)
|
评分
-
查看全部评分
|