请选择 进入手机版 | 继续访问电脑版

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

 找回密码
 立即注册
查看: 535|回复: 8

[基础教程] 忙碌的老新手的HA学习之旅---sonytv,scene,script

[复制链接]

3

主题

98

帖子

331

积分

中级会员

Rank: 3Rank: 3

积分
331
金钱
233
HASS币
0
发表于 2019-5-11 12:36:53 | 显示全部楼层 |阅读模式
开这篇文章的原由来自与上周工作相对较空闲,像HA群中的各大佬请教问题后,按约写一个教程,也算对自己所了解的进行一个总结。
其中很多只是我片面的了解,如有错误,请各位大佬指正。对于和我一样的新手,希望本文对你有一定的帮助。
为啥自称老新手呢,其实我在控客出小k时就已经开始关注智能家居设备,同时在那个时间小米也出了zidgee插座,HA也开始慢慢进入眼中,在那时,已经开始在接触HA,但是说来惭愧,由于工作原因,同时对代码的能力也有限,在论坛中,一直处于拿来主义,到处看各位的教程和插件,一直没有好好把HA用起来。最近在关注到sony_TV其实是支持HA的。同时其hdmi源的选择比红外更靠谱,所以有了如下的HA学习之旅,我也将以入门者的视角来说说一些HA的使用方法。老鸟们可以忽略。
环境:群晖docker的HA,sony tv, 电信IPTV盒子,先锋的老功放,先锋的老的5.1声道家庭影院,zidoo-x9s播放器,小米按钮,小米万能红外,天猫精灵。
我的是典型的客厅电视+客厅家庭影院的结构。平时老年人喜欢看电视直播,使用的电信的IPTV。周末我和老婆想放松,会切换到家庭影院模块,看在线点播,或者群晖里的蓝光电源。所以会存在电视机需要在不同情况使用不同的HDMI口工作,切换hdmi,对于老年人来说非常麻烦,故存在的简单切换工作场景的需求。基本连接图如下:

电视1.jpg
在没有使用HA时,操作方式为
1.单击小米按钮,使用小米红外,打开电视,打开网络机顶盒,并且需要使用红外模拟 上下按钮,选择hdmi按钮,等,模拟人工按遥控板的方式去切换HDMI。
2.双击小米按钮,打开功放的智能插座,使用红外命令去打开功放,使用红外命令模拟人工遥控板方式去切换HDMI。

3,长按小米按钮,切断所有的电源
这种方式我全在 mi家的app里设置就好。但是里面你会发现有很多弊端,在这几年使用这种方式,一直容易出问题:
1.红外切换HDMI,很容易失败,因为你是模拟的人工切换,所以会有 点切换hdmi按钮,按上,下等去选择hdmi,然后再确定。红外的不确定性,经常会某一个上,或者下的命令没有很好的执行成功,就导致HDMI没有切换到需要的模式,特别是父母在家看电视,我在上班的时候,老年人遇到这种情况就完全不会操作了。
2.在IPTV模式和家庭影院相互切换过程的逻辑非常难处理。比如现在在看IPTV,你这个时候要看碟,逻辑就只需要打开家庭影院,而不能去按电视的红外开关。但是有时候,你在电视还没打开的时候想看碟了,你就需要同时打开电视,并去打开家庭影院的那一套电源。在家庭影院模式切换回IPTV模式,或者直接关机,还有IPTV模式直接关机。等这几种可能性,导致的设备操作都不相同且不兼容。状态非常的多,且在每个状态下,红外的命令也很容易出问题。

终于在某天了解到sony电视可以接入HA后,进行了如下的改进。
1.单击小米按钮,使用HA的sony插件,打开电视,并直接设置hdmi3.打开IPTV的智能插座,开电后iptv自动开机,不需要再使用红外命令。使用红外关闭功放电源,延迟3s,设置家庭影院智能插座为关。
2.双击小米按钮,HA关闭IPTV智能插座,打开家庭影院智能插座,设置sony电视为开,并切换到hdmi2.延迟3s,使用红外发命令给功放开机。
3.长按小米按钮,HA,使用红外关闭功放,延迟3s,关闭家庭影院插座,设置sony电视为关。

新的模式基本抛弃了红外,这样不管在那种模式,均能切换到正确的工作状态而相互不冲突。

要实现上面的功能,HA中需要如下操作:
1,将智能插座,红外设备加入到HA。论坛里教程非常多。我就不再加了。
2,将sonytv加入到HA,其论坛里也有教程。官网描述:https://www.home-assistant.io/components/braviatv/    注意,在添加时,需要和sony电视屏幕上进行配对。不然不会成功。
3,写自动化和HA配置。

在上面的工作模式可以看到,其实我们有3种工作状态,在HA中其实有本身的组件可以使用,那就是scene(特别感谢c1hper大神,流水无味大神的耐心指导),官网地址:https://www.home-assistant.io/components/scene/   ,他的意思表示场景,即将一堆设备的状态作为一个组合,并定义为一个场景名,那你选择某个场景,这些设备即自动切换到某工作状态。本文即使用了场景这个概念(但是里面有坑,后续会描述)。
使用方法,在configuration.yaml文件中添加如下一句话:scene: !include scenes.yaml


新建一个scenes.ymal文件,里面用来定义你不同的场景,下面以我的为例。
  - name: TV
    entities:
      switch.keting_iptv: on
      media_player.sony_tv:
        state: on
        source: HDMI3
        is_volume_muted: false
      switch.plug_158d000114b282: off
  - name: Movie
    entities:
      switch.plug_158d000114b282: on
      switch.keting_iptv: off
      media_player.sony_tv:
        state: on
        source: HDMI2
        is_volume_muted: true
      # script.gongfang:
      #   state: on
  - name: poweroff_tv
    entities:
      switch.keting_iptv: off
      switch.plug_158d000114b282: off
      media_player.sony_tv: off

同时,你可以在你的自动化页面去设置自动化,并调用这个场景,下面以我的关机为例。
#关电视
- alias: POWEROFF_TV
  trigger:
    - platform: event
      event_type: xiaomi_aqara.click
      event_data:
        entity_id: binary_sensor.switch_158d0001151d46
        click_type: long_click_press # 关机模式
  action:
    - service: script.gongfang
    - delay: 00:00:03
    - service: scene.turn_on
      entity_id: scene.poweroff_tv



在上面的代码中你会发现一个问题,那就是我在自动化中除了使用scene,还调用了其他的?为啥呢?这就是scene的坑了,scene中无法使用delay这个命令(也许是我不知道怎么使用,如果可以使用的话,请老鸟们指点)。如果你在控制中需要使用红外等这些需要延迟的设备和命令,那scene中就无法满足你。这个时候,你要么必须选择script来实现,要么直接在自动化中实现,从这里看就会觉得scene比较low。但是scene仍然有他的好处,那就是代码非常简洁,只需要一句设置状态即可,不需要像script中或者自动化中,要去调用service。

随着后续的使用,又增加了天猫精灵的控制,其中会使用到天猫精灵的搭建,虚拟按钮的使用等知识,也接触到nodered这些系统,有时间下回再分解。




评分

参与人数 1金钱 +20 收起 理由
Jones + 20 论坛有你更精彩!

查看全部评分

回复

使用道具 举报

51

主题

1316

帖子

4252

积分

论坛元老

Rank: 8Rank: 8

积分
4252
金钱
2911
HASS币
250

活跃会员教程狂人

发表于 2019-5-11 13:30:44 | 显示全部楼层
官方这个插件貌似不太好用,不过功能倒是挺全,好像一般都用这个:

https://github.com/custom-components/media_player.braviatv_psk


回复

使用道具 举报

3

主题

98

帖子

331

积分

中级会员

Rank: 3Rank: 3

积分
331
金钱
233
HASS币
0
 楼主| 发表于 2019-5-11 13:39:22 | 显示全部楼层
咸味土豆 发表于 2019-5-11 13:30
官方这个插件貌似不太好用,不过功能倒是挺全,好像一般都用这个:

https://github.com/custom-components ...

先收藏,目前官方的这个插件我用起来还挺稳定的,出现问题后再切换到老大推荐的插件
回复

使用道具 举报

9

主题

784

帖子

2193

积分

金牌会员

Rank: 6Rank: 6

积分
2193
金钱
1409
HASS币
30
发表于 2019-5-11 13:50:17 | 显示全部楼层
写的很好  再排排格式就完美了
希望继续出教程  其实接入本身就是这样了 重点是如何创建自己的联动 自动化等
多看看也有收获~
回复

使用道具 举报

7

主题

1811

帖子

4716

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
4716
金钱
2905
HASS币
145

灌水之王

发表于 2019-5-11 13:50:33 | 显示全部楼层
先定后看看这么长
回复

使用道具 举报

8

主题

254

帖子

1177

积分

金牌会员

Rank: 6Rank: 6

积分
1177
金钱
923
HASS币
30
发表于 2019-5-11 20:22:48 | 显示全部楼层
咸味土豆 发表于 2019-5-11 13:30
官方这个插件貌似不太好用,不过功能倒是挺全,好像一般都用这个:

https://github.com/custom-components ...

官方的没问题

一会试试这个看看有什么新鲜
回复

使用道具 举报

9

主题

145

帖子

766

积分

高级会员

Rank: 4

积分
766
金钱
621
HASS币
0
发表于 2019-5-11 21:18:52 | 显示全部楼层
我是用HDMI-CEC来控制,电视盒、功放和电视都支持
回复

使用道具 举报

8

主题

254

帖子

1177

积分

金牌会员

Rank: 6Rank: 6

积分
1177
金钱
923
HASS币
30
发表于 2019-5-12 10:54:37 | 显示全部楼层
咸味土豆 发表于 2019-5-11 13:30
官方这个插件貌似不太好用,不过功能倒是挺全,好像一般都用这个:

https://github.com/custom-components ...

运行完美 而且没有官方的各种报错信息了

感谢土豆
回复

使用道具 举报

1

主题

239

帖子

516

积分

高级会员

Rank: 4

积分
516
金钱
277
HASS币
0
发表于 2019-6-13 23:38:21 来自手机 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2019-8-24 12:34 , Processed in 0.097933 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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