如何玩转智能家居 - HomeAssistant介绍

HomeAssistant是什么

HomeAssistant,简称 HA,是一款基于 Python 的智能家居开源系统,支持众多品牌的智能家居设备,可以轻松实现设备的语音控制、自动化等。

初次接触 HA 是很早之前,当时被那种万物互联所震撼,智能之家的想法吸引。随着自己的成长,有空间去做这些事。也是时候进入 HA 的世界了,为后面的物联网之家打下基础。

推荐学习站点:

HA 的安装

初次接触 HA,卧槽,根本不知道如何下手。那我们还是从相关概念开始。

HA 的安装方式有很多,大家可以参考这里:installation。简单说 HA 的安装方式有4种:

  • HA Operating System,又称 HassOS,提供了一个支持多平台的最小化的 HA 操作系统,底层基于 Docker 容器引擎,通过容器化部署的 Supervisor 容器化控制 HA Core 及相关应用。由于是 OS,因此需要独立设备或者虚拟机进行安装。官方推荐
  • HA Container,基于容器技术独立安装 HA Core,如 Docker。免去了各种环境的不统一困扰。需要在支持容器化技术的系统上使用。
  • HA Supervised,前身 Hass.io,是一个基于容器化的系统,通过容器化部署的 Supervisor 容器化控制 HA Core 及相关应用。HA 提供了 手动安装 脚本。较于 HA Operating System 最大的区别就是可以安装在已有的操作系统上,其它都一样。
  • HA Core,手动安装在 Python 虚拟环境中,纯手动,可能需要一定的折腾能力。

官方建议使用专用干净系统来运行 HA。即用一台独立的硬件来装 HassOS,如果不知道怎么选择,可以使用 Raspberry Pi 和 HassOS。如果有现有系统且支持 Docker,用 HA Container 也不错,如 NAS。

HA 的衍生

围绕着 HA,衍生了很多插件、系统,各种名词,眼花缭乱。新人接触,很容易被整懵,不适合新人学习。这里我把我所接触到的关于 HA 的衍生介绍给大家,希望大家尽快入门。

0、Hass 是什么?
Hass 简单来说就是 HA 实际运行中,为我们服务的程序实例,具体可参考 HA 机制

1、Hassbian 是什么?
类 Raspberry Pi 操作系统 raspbian,那么内置了 HA 可安装在 Raspberry Pi 的操作系统就称呼为 hassbian,这是一个统称。

具体的系统可以到这里:操作系统

2、HassIO (hass.io)是什么?
是一款 HA 特别定制的高集成度、图形化操作、易上手的系统。系统由 ResinOS 及 Docker 驱动,旨在简化 HA 的配置操作。(现在已经没有这个说法了,称作 supervised,合并到 操作系统)。

架构是这样的: ha-hassio-arch

HassIO 通过 docker 将 HA 部署起来,管理着 HA,并通过 HA 的 API 进行有效交互。同时提供了一套插件标准 Add-ons,该标准规范了 HassIO 的容器编写规范。

3、HomeBridge 是什么?
简称 HB。通过模拟 iOS HomeKit API,架设一个桥梁,使得不支持 HomkeKit 的智能设备接入 HomeKit。

HA 与 HB 是两个完全独立的系统,各自可以独立运行。HB 的主要目的是桥接不支持 HomeKit 的智能设备,桥接完成后我们可以通过 iOS 家庭 进行管理。或者接入 HA 自动化管理。

目前 HA 已经内置了 Bridge,通过 配置 -> 集成 -> 添加集成 -> 搜索HomeKit 即可。不过据说,HB 可以支持更多的智能设备,且它的 UI 做得比较棒。当然两者都可以自行定制 UI,不过得自我折腾。

4、HACS(Home Assistant Community Store) 是什么?
可以理解为 HACS 是一个为 HA 提供强大 UI 的商店,用于页面美化以及个性化自定义的。里面也支持了很多强大的插件,大家可以自己慢慢体会。

5、Node-RED 是什么?
Node-RED是一种编程工具,用于以新颖有趣的方式将硬件设备、API 和在线服务连接在一起。

它提供了一个基于浏览器的编辑器,可以轻松地使用面板中广泛的节点连接流,这些节点可以在一次单击中部署到运行时。 node-red-example

总之想要将这些东西玩起来还是需要费一定功夫的,如果没有人指导个人觉得比较难入门。

HA 的机制

HA 是运行在 Python3 环境中的,核心进程是:Core,目前版本通过日期形式定义:最新版本

如果按照分层概念来看的话,可以分为三层:操作系统、运行环境、Hass。 homeassistant-full-arch

而 HA 又主要分为三大块:HA CoreIntegration 和配置文件 configuration.yml,它们组成了完整的 HA。

1、HA Core 是整个系统的大脑,相当于操作系统的内核,用来决策和调度相关资源。它有四个核心部分:

  • 事件总线(Event Bug),HA 的心脏,负责监听和触发事件
  • 状态机(State Machine),跟踪事物的状态,并 state_changed 在状态更改后触发事件
  • 服务注册表(Service Registry),在事件总线上侦听 call_service 事件,并允许其他代码注册服务
  • 计时器(Timer),time_changed 每1秒在事件总线上发送一个事件

ha_architecture

2、Integration 集成,Core 作为大脑,总得有可利用的手脚吧,集成就是如此。

HA Core 通过集成进行扩展。每个集成都负责 HA 中的特定域。集成可以侦听或触发事件,提供服务并维护状态。集成由组件(基本逻辑)和平台(与其它集成集成的位)组成。集成是用 Python 编写的,可以实现 Python 能够提供的所有优势。开箱即用的 HA 提供了许多 内置集成component-interaction

HA 中定义了4种集成类型:

  • 定义物联网域,该集成定义了物联网设备的 特定类别,如灯 light,它定义了什么数据和格式在 HA 可以使用。另外已定义的 域列表。如果要建立一个新的域,还可以在 这里讨论
  • 定义与外部设备和服务互动,该集成定义了在 HA 中如何通过已定义的《物联网域》与外部设备和服务进行交互,如灯 light,一个例子是 Philips 灯可以作为灯的实体在 HA 进行交互,更多信息:实体体系结构
  • 表示虚拟/计算数据点,该集成表示基于虚拟数据的实体。如 input_booleanIntegration,即虚拟交换机。或者通过 HA 中其它数据做处理输出,如 templateIntegrationutility_meterIntegration
  • 由用户或响应事件触发的动作,该集成提供了家庭自动化逻辑的小片段,可在您的房屋中执行常见任务。最受欢迎的一种是 automation集成,它允许用户通过配置格式创建自动化。如 fluxIntegration,它可以根据太阳落山来控制灯光。

3、configuration.yml 配置文件是用来帮助我们完成上述功能的,当然也可以通过 HA front 网页 UI 进行操作。

具体配置详细,请参考下篇文章。

本文链接:参与评论 »

--EOF--

提醒:本文最后更新于 1127 天前,文中所描述的信息可能已发生改变,请谨慎使用。

专题「智能家居」的其它文章 »

Comments