『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 14275|回复: 14

[基础教程] 【挖掘空调伴侣】 基于红外指令的空调伴侣插件

[复制链接]

19

主题

166

帖子

1678

积分

论坛技术达人

积分
1678
金钱
1497
HASS币
40
发表于 2018-9-8 18:36:52 | 显示全部楼层 |阅读模式
本帖最后由 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)

评分

参与人数 1金钱 +20 收起 理由
neroxps + 20 先加分再看

查看全部评分

回复

使用道具 举报

19

主题

166

帖子

1678

积分

论坛技术达人

积分
1678
金钱
1497
HASS币
40
 楼主| 发表于 2018-9-8 18:37:54 | 显示全部楼层
本帖最后由 yunsean 于 2018-9-8 20:11 编辑

如果有同学使用了,也欢迎把录制的遥控码发上来,我先发一个科龙空调的。
kelong_instruct.txt (78.97 KB, 下载次数: 21)
回复

使用道具 举报

0

主题

11

帖子

128

积分

注册会员

Rank: 2

积分
128
金钱
117
HASS币
0
发表于 2018-9-8 19:58:34 | 显示全部楼层
学习一下~
回复

使用道具 举报

30

主题

997

帖子

4151

积分

论坛元老

Rank: 8Rank: 8

积分
4151
金钱
3149
HASS币
0

活跃会员

发表于 2018-9-8 19:59:04 | 显示全部楼层
楼主辛苦,支持一下
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2018-9-8 19:59:58 | 显示全部楼层
yunsean 发表于 2018-9-8 18:37
如果有同学使用了,也欢迎把录制的遥控码发上来,我先发一个科龙空调的。
      - close:FE000000000000947 ...

楼主,其实可以发附件的 满屏都是码手机都划累啊。
Nero
回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16410
金钱
11664
HASS币
45
发表于 2018-9-8 22:27:38 | 显示全部楼层
虽然没有空调伴侣,但是支持楼主!
回复

使用道具 举报

5

主题

95

帖子

608

积分

高级会员

Rank: 4

积分
608
金钱
513
HASS币
0
发表于 2018-9-9 08:09:49 来自手机 | 显示全部楼层
支持楼主
回复

使用道具 举报

0

主题

2

帖子

24

积分

新手上路

Rank: 1

积分
24
金钱
22
HASS币
0
发表于 2018-9-9 14:00:48 | 显示全部楼层
支持一下!! !
但是不能同步空调状态?
回复

使用道具 举报

19

主题

166

帖子

1678

积分

论坛技术达人

积分
1678
金钱
1497
HASS币
40
 楼主| 发表于 2018-9-9 15:05:30 | 显示全部楼层
ddythink 发表于 2018-9-9 14:00
支持一下!! !
但是不能同步空调状态?

你是想怎么同步呢?空调会把当前状态通过红外发送给空调伴侣?
回复

使用道具 举报

10

主题

680

帖子

5650

积分

论坛元老

Rank: 8Rank: 8

积分
5650
金钱
4965
HASS币
50
发表于 2018-9-9 16:11:44 | 显示全部楼层
科龙?是不是同品牌的基本上通用我家的是科龙1P26那个神机
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 04:41 , Processed in 0.065985 second(s), 42 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表