> 来源 | HaaS技术社区
1. home assistant简介
1.1 概述
![image.png](https://ucc.alicdn.com/pic/developer-ecology/e4a01c4811a0460e9139a66559e18770.png)
home assistant是一个基于python的家庭智能化平台,可运行于本地服务器,或者树莓派上。利用该平台,可以统一控制家庭中所有的智能设备。
home assistant集成了小米、博联等公司的通信协议,可以直接发现并控制这些公司的智能设备,也可以通过mqtt协议连接其它设备。同时可以通过插件扩展与苹果的Apple HomeKit互动,使用Siri语音控制其它智能设备。
同时他也集成了一些第三方智能语音平台,方便使用语音控制家中的智能设备。home assistant同时还集成了一些如天气、汇率、在线音乐等云端服务。
他的控制页面可以通过网页显示,也可以通过手机APP(支持安卓及iOS)展示。
1.2 GitHub数据统计
目前,github上搜索iot,star数排名第二的项目是home-assistant/core,目前star数42.2k,fork数13.9k,贡献者2429个,发布release版本752个,最新版本2021.4.6(2021/5/4日数据)。
1.3 示例
下图是https://demo.home-assistant.io/在电脑浏览器展示的其中一个示例:
![image.png](https://ucc.alicdn.com/pic/developer-ecology/2ced3f4d0e9d4802afe053585ad11605.png)
上图展示了下列内容:
- 展示了灯的开关状态,并可以通过页面按钮控制灯的开关。
- 展示了门铃目前的状态及统计数据。
- 展示了当前温度,并可控制空调的温度及开关。
- 显示了电视当前的视频的内容,视频输出接口,音量,观看时长等数据。
- 房间的全景图,显示每个房间温度、是否有人、灯是否亮
- 客厅音响正在播放的音乐,并可以切换音乐。
- 上下班
- 安全警戒,入侵告警
手机APP显示的页面如下图:
![image.png](https://ucc.alicdn.com/pic/developer-ecology/c2c3696238394d9e97cc0f10b9c29df9.png)
2. home assistant系统组成
2.1 home assistant内核
负责启动应用,管理状态,处理事件,接入服务,组件间功能交互等通用的功能。
2.2 home assistant组件
组件负责对外交互,包括与智能设备交互,与云服务交互、与浏览器交互等,目前home assistant支持多达上百种设备交互协议、云服务等,详见https://github.com/home-assistant/core/tree/dev/homeassistant/components。
下面是一些接入的常用及主要功能组件:
- accuweather
ACCU天气服务
- Amazon Alexa
亚马逊Alexa智能语音服务,用于语音控制智能设备。
- ecobee
加拿大智能温控公司Ecobee的产品发现及接入。
- ESPHome
乐鑫的智能家居系统,支持ESP8266/ESP32及常用传感器,支持接入home assistant、HomeKit等。
- Google Assistant
谷歌智能助理,用于移动设备及智能家居设备。
- Google Cast
谷歌投屏服务,类似于苹果的AirPlay。
- IKEA TRADFRI
宜家智能照明系统。
- MQTT
MQTT是物联网通用的通信协议,通过该协议,可以连接所有自定义设备。
- Philips Hue
飞利浦个人智能照明系统。
- Plex Media Server
Plex多媒体服务器,可以在手机、平板、电视、电脑上通过该服务播放NAS上的多媒体文件。
- SmartThings
SmartThings智能家居公司,目前已被三星收购。
- Sonos
家庭智能音箱系统。
- Z-Wave
智能家居无线组网标准。
- Zigbee
短距离低功耗无线通信技术。
- KNX
住宅及楼宇控制标准。
- xiaomi/xiaomi_aqara/xiaomi_miio/xiaomi_tv
小米路由器、电饭煲、扫地机、电视、网关等设备发现及接入
对于home assistant还没有支持的协议或者厂家设备,可以自己增加组件的方式增加对应的支持。
2.3 配置文件configuration.yaml
在该配置文件种配置接入设备的信息、网络协议、云服务、安全授权及其它定制项,文件为yaml格式,遵循yaml语法,可以包含子yaml配置文件。
详细规则见 https://www.home-assistant.io/docs/configuration/yaml/
下面是一个开关的配置示例:
switch:
- platform: mqtt
unique_id: haas600_switch
name: "HaaS600 Switch"
state_topic: "/publish/amp-hello/home/bedroom/switch1"
command_topic: "/publish/amp-hello/home/bedroom/switch1/set"
availability:
- topic: "/publish/amp-hello/home/bedroom/switch1/available"
payload_on: "ON"
payload_off: "OFF"
state_on: "ON"
state_off: "OFF"
optimistic: false
qos: 0
retain: true
2.4 其它配套
- MQTT
对于大量的非品牌,非标准协议智能设备,home assistant可以通过MQTT协议与之交互。
home assistant自带了MQTT服务器功能,也可以使用自己安装的MQTT服务器,或者使用第三方MQTT服务器,比如阿里云的MQTT服务。
- HomeBridge
HomeBridge用于支持与苹果的HomeKit对接,以支持使用siri语音控制智能设备。
备注:最新的home assistant已经默认支持HomeKit,不再需要该组件。HomeBridge本身可以单独使用,以对接HomeKit。
- NodeRed
NodeRed是IBM推出的开源物联网项目,可以通过WEB流式编程来快速连接物联网设备与云端服务。
可以使用NodeRed对home assistant管理的设备的业务逻辑进行更加复杂的配置,以实现更加高级、更加个性化的控制,包括多设备间联动,与云端服务互动等。
3. home assistant安装及运行简介
3.1 home assistant安装
基于python3.5以上版本pip安装homeassistant,命令如下:
pip install homeassistant
pip install sqlalchemy
安装homeassistant过程中,可能会出现卸载ruame. yaml失败的提示,可以在python的site_packages目录,手工删除ruame. yaml
- 启动homeassistant,命令如下:
hass --open-ui
这一步时间比较长(5到10分钟左右),需要耐心等待。中途windows系统上会弹出防火墙策略,需要选择允许访问网络。执行完后,会自动打开浏览器,出现如下页面:
![image.png](https://ucc.alicdn.com/pic/developer-ecology/2e5aec705dc24f14bc6275a316bb8f70.png)
在上一步出现的网页上,输入自定义的姓名,用户名,密码等,创建账户。然后依次点击下一步,完成配置。
配置完成后的界面如下:
![image.png](https://ucc.alicdn.com/pic/developer-ecology/ad35ff43e9bb4a63898dbbe2177f2cfe.png)
3.2 MQTT安装与配置
局域网中,可以使用内置的MQTT服务,或者自己安装MQTT服务器,以实现更加高级的MQTT功能。如果要连接公网上的设备,则需要使用公网的MQTT服务,比如阿里云IOT的MQTT服务。
使用内置MQTT,直接参考home assistant帮助使用。
自己安装MQTT服务器,推荐安装EclipseMosquitto,下载地址 https://mosquitto.org/download/
使用阿里云的MQTT服务,可以参考阿里云帮助文档 https://help.aliyun.com/document_detail/73742.html?spm=a2c4g.11174283.6.614.4e611668aOJWtg
3.3 HomeBridge安装与配置
HomeBridge的项目地址 https://github.com/homebridge/homebridge ,安装参考章节Installation章节介绍。
要配置home assistant使用,还需要安装一个homebridge-homeassistant插件,地址在https://github.com/home-assistant/homebridge-homeassistant。
说明:最新的home assistant已经内置支持HomeKit,不需要安装HomeBridge。
4. 总结
本文主要带读者了解了下github上热门的物联网项目 - home assistant。并动手动手安装后查看了他的效果。
有兴趣的读者可以在自己的设备上将此项目跑起来试试。
更多精品好文
如何用几行Python代码在物联网设备上实现语音AI自动识别?