目的
终于到了这一临门一脚了。前面了解了这么多基础知识,这一篇,我们终于可以完成这最后一步了 ———— 接入硬件。
接入
理论上市面上所有能接入 Wifi 用手机控制的电器都能用 HomeAssistant 控制。
比如我的硬件列表有:Yeelight, 小米多功能网关, 米家智能插座, sonoff开关,还有 ESP8266 模拟 Wemo Switch,最后还有一个神器 BroadLink。
Yeelight 接入。
文档在这里,配置很简单
1 | light: |
light
系统关键字,指定这是一个控制灯的服务。然后指定你的灯是什么品牌,在 platform
处声明,注意 platform
前面的横杠 -
,这在 YAML 语法里面表示数,也就是说你有其他品牌的灯就在下方写 - platform: other_brand_light
就可以了。回到 yeelight 的配置,devices
下面填上灯的 IP 地址,可以登录路由器管理页面查到,如果你有多个 yeelight,就写多个 IP,然后用 name
区分。配置好之后,重启 HA。你就能在管理页面看到 Light 这个板块了。
点击你灯的名字处,就会弹出操作板,然后你就可以随意控制了。
其他的 Wifi 设备也都是一个套路。
BroadLink 的使用
BroadLink 本质上是一个红外/频射发射器,他本来是通过学习红外码和频射信号,然后把手机作为一个超级遥控器控制其他电器使用的。但 HomeAssistant 已经集成了 BroadLink ,这让语音控制那些只能用红外/频射遥控的家电成为了可能。最常见的就是空调了。
相关文档在这里
1 | switch: |
BroadLink 集成到了 Switch 下的一个 platform,也就是 HA 把你的家电作为了一个开关处理,这也意味我们只能控制家电的开、关状态,虽然不能像遥控器上进行更多操作,比如空调设定温度,电视选频道,但开和关绝对是最大的需求了。配置中 host
和 mac
都可以在路由器的管理页面找到,重点我们看 switches
字段的配置。
switches 下面就是你所有的设备。每个设备都有 friendly_name,commandon*,command***off** 三个属性。friendly_name 就是你给你的设备取的名字,commandon 和 commandoff 就是开和关对应的红外码或者频射码,这两个码如何获得呢?
我们来到 HA 控制页面,选择 Developer Tools 下的 Service 选项,在 Call a service from a component 的 Domain 下面选择 broadlink, Service 选择 learncommand19216810_250,然后点击CALL SERVICE。
不出意外,你的 Broadlink 亮起了橙色的灯,标记正处于学习状态,下一步你要做的就是拿起遥控器,比如我现在要学习空调开的红外码,我就对准 Broadlink 按下空调遥控板上“开”的按钮。
当橙色灯熄灭了,就表示学习成功了。然后前往 Developer Tools 下的 States,在这里你会发现 Recieved packet is: 后面跟着一长串字母和数字,那就是你刚才按下按钮的红外码了。
复制这一串红外码到配置文件中的 command_on 或者 command_off,如果你按的是 开,就把开的红外码复制到 command_on,其他我就不说了。
重启 HA ,你就能在控制页面看到了。HA 的控制页面不仅仅可以桌面上看,手机上也可以哦。
Broadlink 真是个好东西,它的意义在于让一些老家电可以毫不费力地摇身一变成智能设备,进而实现语音控制。
说到语音控制,上面已经接入了这么多家电,都是用 HomeAssistant 的控制页面进行控制,说好的 Amazon Echo 语音控制呢?别急,我们这就开始配置 Amazon Echo 服务。
Alexa / Amazon Echo 的文档在这里, 但是这个文档是介绍如何在 Echo 上自己创建一个能让 HA 识别 Skill,对我们没有作用,我们需要的仅仅是让 Echo 开关设备就行了,所以你应该看Emulated Hue Bridge 这个服务。
顾名思义,Emulated Hue Bridge 就是把你的电器模拟成 Hue Bridge,而 Hue Bridge 是 Amazon Echo 官方支持的设备。所以就能实现 Echo 控制你的家电了,看到这个原理,是不是醍醐灌顶,真是巧妙啊。
Hue Bridge 的最简单只要配置两个参数就能运行了。
1 | emulated_hue: |
重启 HA,通过 Amazon Echo 的官方 App ———— Alexa 就能扫描到所有设备了。
由于 Emulated Hue Bridge 默认是把所有开关都模拟了,所以你的 Echo 能识别出一些不是硬件的服务,比如 check config, restart hass…. 这些都是我设置的其他服务,由于也是开关,所以都被 Emulated Hue Bridge 给模拟了。解决办法就是 homeassistant 这个服务下的 customize 里通过 emulated_hue: false 手动进行忽略。
1 | homeassistant: |
如果 Alexa 的 Your Devices 里面出现你的家电,也就意味着你已经可以用语音控制你的家电了。只是,你得说英文。