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

 找回密码
 立即注册
查看: 7956|回复: 7

[经验分享] 空调红外遥控(如魅族)状态反馈的另类实现方法

[复制链接]

16

主题

171

帖子

759

积分

高级会员

Rank: 4

积分
759
金钱
583
HASS币
40
发表于 2020-7-9 12:24:28 | 显示全部楼层 |阅读模式
本帖最后由 icase 于 2020-7-10 16:09 编辑

前言

事先说明,本文依然是小白系列,大佬请绕过。

关于红外遥控的问题,论坛里很多帖子,我此前比较关注魅族遥控器的帖子,目前最火的帖子如下:

https://bbs.hassbian.com/thread-8083-1-1.html
https://bbs.hassbian.com/thread-7976-1-1.html

其实无论使用 ESP8266 / 32,还是魅族遥控器来实现空调遥控或电视遥控,都有一个非常大的坑,那就是没有状态反馈。因为这也是把传统家电智能化的过程中的一个痛点。当然,你可以使用类似“空调伴侣”之类的设备来接入HA,也可以用可以检测电流电量的智能插座来接入HA,配合红外来实现状态反馈的条件判断。但这显然要增加硬件成本和接入成本。

今天我提供的这个也许仅仅是个思路,希望能帮助到各位如我一样的小白,当然大佬们如果有更好的方案,也欢迎参加讨论,为论坛添砖加瓦。

介绍

其实逻辑非常简单,主角就是:

input_boolean

通过Boolean(布尔值)的非假即真的特性来创建一个虚拟开关,并将该虚拟开关以条件的形式加入到空调或电视控制开关的状态状态参数中,当执行“开”的状态时,虚拟开关打开,并持续保持状态,当执行“关”的操作时,虚拟开关也同时关闭,等同于将你的每一次 on / off 的操作都用虚拟开关来进行记录,它相当于一个记录器,这样你的每一次操作都有了记录,没有操作变化,虚拟开关则保持原状不变,从 0 和 1 的逻辑上保证了你不会重复执行无效的操作,也就顺便另类的实现了状态反馈的需求,当然这不算一个100%的真状态,只是一个操作逻辑上的状态,但目前经过我的个人使用感受,在不增加任何接入成本的情况下,我认为足够。

根据官方文档的介绍:https://www.home-assistant.io/integrations/input_boolean/
input_boolean 的参数十分简单,示例如下:

input_boolean:
  notify_home:
    name: Notify when someone arrives home

其中 initial 参数决定了你的虚拟开关的初始状态,on打开,off关闭,但我们为了能实现各种情况下的状态反馈,我们在实际使用中,将不会手动定义 initial 的值,因为这涉及到了一个官方组件的策略,就是“当你不手动定义 initial 参数时,在HA重启之后,会恢复到重启之前的状态“ 这点很重要,这是可以持续记录当前操作状态的基础。

小提示:目前在0.112.3最新版本里,应该存在bug,不定义 initial 的情况下,重启以后还是会恢复到系统默认值,即 off (或是false),等待官方修复。

实战

我们拿大佬的帖子为例来介绍如何增加虚拟开关,来实现空调遥控的状态反馈。

原帖:https://bbs.hassbian.com/thread-8083-1-1.html

步骤如下:

  1. 先定义一个 input_boolean 到我们的配置文件里:
input_boolean:
  bedroom_ac_state:
    name: 卧室空调状态

没写错,就这么简单即可。

  1. 空调遥控器的配置:
climate:
  - platform: mqtt
    name: bedroom
    initial: 24
    min_temp: 20
    max_temp: 28
    modes:       ["off", "cool"]    # 可按官方说明添加其他选项,学码量相应翻倍
    mode_command_topic:       "myHASS/bedroom/ac/mode/set"
    temperature_command_topic: "myHASS/bedroom/ac/temperature/set"
    current_temperature_topic: "myHASS/bedroom/ac/temperature/state"
    swing_modes: ["数显", "强劲"]   #这是个人空调数显和强劲功能按键,绕下弯,添加到了摆页的模式选项
    swing_mode_command_topic: "myHASS/bedroom/ac/swing_mode/set"
    mode_state_template: >
      {% if is_state('input_boolean.bedroom_ac_state', 'off') %}off
      {% else %}on
      {% endif %}

小提示:其中 mode_state_template(后面用 > 号替换 & g t; ,论坛没解析出来) 是当前空调或电视的开关状态配置参数,它下面的部分是该参数下的逻辑条件。条件里的语句的意思也就是当执行 关闭 off 操作时,input_boolean.bedroom_ac_state 同时关掉(off),否则就是打开(on)。

这个例子是基于 mqtt switch 的,官方文档在此:https://www.home-assistant.io/integrations/switch.mqtt/  其他的开关形式,大家可以到官方文档里去查找对于你使用的开关 state 是如何定义的,参数是如何写的即可,其实非常简单。

同理,如果你用 ping 组件,或其他可以触发on 或 off 的组件来配合一些无法获取状态反馈的开关也是可以的,这些基本上可以作为辅助条件任意发挥,关键点是在一定要对开关的 state 进行定义的基础上。

评分

参与人数 2金钱 +11 收起 理由
comeon_000 + 10 感谢楼主分享!
zyp0209 + 1 感谢楼主分享!

查看全部评分

回复

使用道具 举报

5

主题

166

帖子

1785

积分

金牌会员

Rank: 6Rank: 6

积分
1785
金钱
1619
HASS币
0
发表于 2020-7-9 16:43:05 | 显示全部楼层
学习了 学习了 谢谢楼主分享
回复

使用道具 举报

6

主题

34

帖子

719

积分

高级会员

Rank: 4

积分
719
金钱
685
HASS币
10
发表于 2020-7-9 17:11:46 | 显示全部楼层
写的很详细很受启发
回复

使用道具 举报

3

主题

150

帖子

941

积分

高级会员

Rank: 4

积分
941
金钱
791
HASS币
0
发表于 2020-7-9 20:20:59 | 显示全部楼层
谢谢分享,还在这条SmartIR
回复

使用道具 举报

1

主题

37

帖子

763

积分

高级会员

Rank: 4

积分
763
金钱
726
HASS币
0
发表于 2020-7-10 15:52:03 | 显示全部楼层
没看懂, 如果用遥控关闭了设备, HA的状态还是开的吧
回复

使用道具 举报

16

主题

171

帖子

759

积分

高级会员

Rank: 4

积分
759
金钱
583
HASS币
40
 楼主| 发表于 2020-7-10 16:01:21 | 显示全部楼层
浅月絮语 发表于 2020-7-10 15:52
没看懂, 如果用遥控关闭了设备, HA的状态还是开的吧

没有内嵌模块或对电流进行检测,肯定都没有办法实际判断设备的运行状态的。这种方法只限于你全部使用HA操控。已经在前言里说了,这只是个操作逻辑上的状态,而不是真状态。
回复

使用道具 举报

1

主题

77

帖子

456

积分

中级会员

Rank: 3Rank: 3

积分
456
金钱
379
HASS币
0
发表于 2020-7-10 21:39:39 | 显示全部楼层
空调这种一次传所有状态的红外码 可以这么玩  只要ha操作就能刷新状态  但是电视之类只是发送单一状态红外码的就会被干扰,不管是外部控制还是ha内控制之后没触发。所以还是老老实实用ping等方法检测在线状态好一些
回复

使用道具 举报

16

主题

171

帖子

759

积分

高级会员

Rank: 4

积分
759
金钱
583
HASS币
40
 楼主| 发表于 2020-7-11 01:18:01 | 显示全部楼层
本帖最后由 icase 于 2020-7-11 01:23 编辑
Sxx1314 发表于 2020-7-10 21:39
空调这种一次传所有状态的红外码 可以这么玩  只要ha操作就能刷新状态  但是电视之类只是发送单一状态红外 ...

智能电视的确用ping做state比较好。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-26 06:28 , Processed in 0.160442 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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