本帖最后由 bainiu 于 2021-6-6 11:12 编辑
新手,主要是自己记录一下折腾第一个自动化,不是教程,新手折腾多多包涵。
折腾前环境:
一、硬的
1、一台华为EC6110-M机顶盒,中国移动宽带时配的,自己已线刷了沙发管家固件,但有个蛋疼的地方,每次待机(关机)操作,都呼出一个界面(取消、确认),不像电视一样一键关机。
2、一台LG 55LM6200-CE电视机(老爷机、无WIFI接入),开始我接了有线网络(主要是为了ping他是否在线),后来没联网了,也基本可以玩。
3、j1800软路由openwrt+docker 上部署Home Assistant 2021.5.5
4、新买的博联黑豆RM mini3
5、1个天猫精灵
二、软的
1、接入黑豆到hass,调用学码服务,把机顶盒遥控器上主要的按键全部学码,并制作了开关实体;同时给机顶盒制作了一个ping传感器(就是ping他是否在线,为自动化确定状态)
2、用github上的smartir项目,接入LG电视到hass,
3、用论坛大神们的技能将hass中的LG电视接入天猫精灵(用语音控制电视机的开关机)
三、自动化
1、因为红外遥控不好获取设备状态,设备到底是开还是关,通过hass中的ping传感器可以获取机顶盒真实状态,但是这个电视状态没有建ping传感器,如果第一次与系统状态匹配,如果后面没有用原电视遥控器或机顶盒学码到的电视开关来干扰状态的话,黑豆的命令能一直匹配真实状态(当然还有一种就是黑豆发红外码或电视接收失败也会干扰状态),所在我禁用了其他控制电视机开关的红外遥控,电视机只能由黑豆的红外码来开关。
2、机顶盒则没这么问题,继续用原机顶盒手动控制。
3、语音开机同步,叫天猫精灵打开电视(黑豆发码开电视),hass自动化检测如果机顶盒不在线,则黑豆同步打开机机盒开关。
4、语音关机同步,叫天猫精灵关闭电视(黑豆发码关电视),hass自动化检测如果机顶盒在线,则黑豆同步发3个红外码关机顶盒(1个待机码、一个方向移动到确认的码,一个确认码)。
5、语音关机同步,加一个失败再关一次自动化,hass检测电视为关,机机盒在线的话,自动化再关一次机顶盒(这个情况比较少出现,除非黑豆在关机顶盒时,再用机顶盒遥控器干扰)。
6、手动开机同步,手动按机顶盒遥控器开机,hass自动化通过ping检测到机顶盒在线后,如果电视状态为关闭,则用黑豆同步打开电视机。
7、手动关机同步,手动按机顶盒遥控器关机,hass自动化通过ping检测到机顶盒不在线后,如果电视状态为开,则用黑豆同步关闭电视机。
8、以上都成功实现,当然hass界面中一样的操作成功。
9、以上情况试了几个场景基本能应付,一是怕黑豆和机顶盒遥控两个同时开关机(主要是怕老婆这样),二是怕黑豆发码到设备接收如果失败(这个机率比较小)。所以电视接有线网络搞个ping传感器应该靠谱。
四、发个码
alias: 关电视就关机顶盒
description: ''
trigger:
- platform: state
entity_id: media_player.living_room_tv
from: 'on'
to: 'off'
condition:
- condition: state
entity_id: binary_sensor.dian_shi_he_zi
state: 'on'
action:
- service: switch.turn_off
target:
entity_id: switch.he_zi_kai_guan
- delay:
hours: 0
minutes: 0
seconds: 2
milliseconds: 0
- service: switch.turn_on
target:
entity_id: switch.an_jian_zuo_you
- delay:
hours: 0
minutes: 0
seconds: 1
milliseconds: 0
- service: switch.turn_on
target:
entity_id: switch.she_zhi_que_ding
mode: restart
- id: '1622877311765'
alias: 打开电视就开机顶盒
description: ''
trigger:
- platform: state
entity_id: media_player.living_room_tv
from: 'off'
to: 'on'
condition:
- condition: and
conditions:
- condition: state
entity_id: binary_sensor.dian_shi_he_zi
state: 'off'
action:
- service: switch.turn_on
target:
entity_id: switch.he_zi_kai_guan
mode: restart
- id: '1622897875815'
alias: 机顶盒开电视机同步开
description: ''
trigger:
- platform: state
entity_id: binary_sensor.dian_shi_he_zi
from: 'off'
to: 'on'
condition:
- condition: state
entity_id: media_player.living_room_tv
state: 'off'
action:
- service: media_player.turn_on
target:
entity_id: media_player.living_room_tv
mode: restart
- id: '1622898203155'
alias: 机顶盒关电视同步关
description: ''
trigger:
- platform: state
entity_id: binary_sensor.dian_shi_he_zi
from: 'on'
to: 'off'
condition:
- condition: state
entity_id: media_player.living_room_tv
state: 'on'
action:
- service: media_player.turn_off
target:
entity_id: media_player.living_room_tv
mode: restart
- id: '1622900151831'
alias: 电视关机顶盒失败再关一次
description: ''
trigger:
- platform: state
entity_id: media_player.living_room_tv
from: 'on'
to: 'off'
for: 00:00:25
condition:
- condition: state
entity_id: binary_sensor.dian_shi_he_zi
state: 'on'
action:
- service: switch.turn_off
target:
entity_id: switch.he_zi_kai_guan
- delay:
hours: 0
minutes: 0
seconds: 2
milliseconds: 0
- service: switch.turn_on
target:
entity_id: switch.an_jian_zuo_you
- delay:
hours: 0
minutes: 0
seconds: 1
milliseconds: 0
- service: switch.turn_on
target:
entity_id: switch.she_zhi_que_ding
mode: restart
|