美文网首页
跨品牌智能家居控制_从原理到实现_HomeAssistant

跨品牌智能家居控制_从原理到实现_HomeAssistant

作者: xieyan0811 | 来源:发表于2024-02-07 10:20 被阅读0次

    项目地址:https://github.com/home-assistant/core

    Star:67 K

    1 引言

    最近去南方玩,住了一些智能酒店,自动开关电视、窗帘、灯、空调,还挺好用的,尤其喜欢关灯这功能。先不说它的理解能力(对同一命令的不同描述),单讲控制能力,还比较粗糙。比如:无法细化具体开关哪个灯;有的只能控制部分电器;有的只是把语音控制转换成遥控器按键,完成一个功能需要多个步骤…… 更喜欢住智能酒店的原因主要是:这些酒店多是这两年建的,比较新、比较干净。

    对智能家居产生了一点兴趣。现在的智能家居用品真的不贵,比如小米的产品,就想要不也把自己家改造一下。刚好在 github 的趋势榜 top15 中看到了智能家居工具 Home Assistant,下面就一起来了解一下智能家居系统。

    Home Assistant(后简称 HA)诞生于 2013 年,是一款基于 Python 的智能家居开源系统,它的主要功能是将不同品牌的智能家居设备连接起来互联互通,并将本地控制和隐私放在首位。

    2 背景知识

    2.1 使用方法

    一般的操作流程是:用户通过语音与智能助理进行交互,或者用手机以及其它输入设备进行控制;通过主控设置或者直接与智能硬件连接;智能硬件可以作为输入产生数据如温度传感器,也可以作为输出设备接受控制如空调;用户还可以在主控中进行设置,比如在低温时打开空调,以实现智能家居的自动化。使用场景包括:智能音箱、手机、手表、PC、家电、汽车、交通等。

    2.2 设备通讯

    我们的计算机无法与智能设备直接通讯,常需要一些附加设备。智能家居有很多连接方式,目前主要使用的有:wifi 连接、蓝牙连接和 Zigbee 连接。

    • WiFi:许多智能设备(如智能灯泡、智能插座、智能热水器)都支持 WiFi,可以直接通过家庭的无线网络与 HA 进行通信。使用的协议通常包括 HTTP、MQTT 等。
    • ZigBee:许多低功耗的智能设备(如传感器、开关等)使用 ZigBee 协议。如需使 HA 与这些设备通信,需要外加一个 ZigBee 设备,如 ConBee 或 ZigBee2MQTT,设备可通过 USB 接口连接到运行 HA 的物理机上。
    • Z-Wave:Z-Wave 是另一种常用于智能家居设备的无线通信协议。也需要一个 Z-Wave 控制器(如 Aeotec Z-Stick)连接到物理机上。
    • 蓝牙:一些设备(如某些智能锁和温湿度传感器)使用蓝牙进行通信。如果物理机支持蓝牙,那么 HA 就可以直接与这些设备通信。
    • 红外/射频:一些设备(如空调、电视和其他遥控设备)使用红外或射频信号进行通信。可以使用如 BroadLink 等红外/射频桥接设备,让 HA 能够控制这些设备。

    3 功能和用途

    3.1 用途

    Home assistant 是一种智能家居总控软件,它通过一个软件控制各种智能硬件。轻松实现设备的语音控制、自动化;集中管理各品牌的智能家居,避免了在多个应用程序之间来回切换。当前的版本已经支持了 1000 多个模块,如果需要添加较新的设备,可以通过插件商店 HACS 安装新插件。此外,添加设备和设置自动化只需要在图形界面上进行操作,无需修改配置文件。

    3.2 功能

    • 集成设备和服务:HA 支持很多品牌和类型的智能设备,这些设备通常通过 API 接口与 HA 通信,而 HA 通过集成的通讯协议来实现对它们的控制和管理。
    • 跨平台:HA 可以运行在不同的操作系统上,如:Linux, macOS,Windows,树莓派等。
    • 自动化:允许用户设置设备之间的联动和自动化规则,通过多种触发器来实现复杂的功能,以提升智能化水平。
    • 打通语音助手与智能家居:HA 支持通过 Google Assistant, Amazon Alex 虚拟助手来进行语音命令操作,进一步增强用户体验的便利性。除了控制硬件设备,也可通过组件方式提供服务,比如 openai 对话功能。
    • 个性化扩展:HA 使用插件和组件的形式,允许用户安装第三方提供的功能和服务,以增加平台的可扩展性和个性化能力。

    4 部署

    我觉得,开始使用时,与其弄个树莓派从头开始学习刷系统,不如直接在计算机上安装 HA,外加一些 USB 设备来支持 ZigBee、Z-Wave 和红外设备,这样省时省力省钱。等到设备都能正常使用后,再考虑购买嵌入式硬件。

    4.1 源码

    git clone https://github.com/home-assistant/core
    

    代码分析:

    • 代码 100% 由 Python 编写,代码量 155W 行,其中一半是核心代码一半是测试用例。
    • homeassistant/components 目录中包含组件,代码 68W 行,目前支持 1200 多种智能硬件和服务,前端、用户管理也分别作为组件实现。

    4.2 部署

    $ docker pull homeassistant/home-assistant:latest
    $ docker run --rm -d --name homeassistant -v /exports/data/homeassistant/config:/config -e TZ=Asia/Shanghai -p 8123:8123 homeassistant/home-assistant:latest
    

    docker 具体参数请参考:https://www.home-assistant.io/installation/linux

    此时,可以在 8123 端口打开服务:

    (设置时建议科学上网)

    主站:https://www.home-assistant.io/

    插件商店:https://hacs-repositories.web.app/

    (建议科学上网,并使用英文搜索,如:xiaomi)

    加入设备方法:设置 (左)->集成 (上)->添加集成 (右下)

    5 一些想法

    理想很丰满,现实却很骨感。目前来看,由于硬件的种种限制,能把灯和空调控制好就不错了。

    随着自然语言大模型应用的进展,对语言理解的大幅提升,以及自动将复杂问题细化成简单问题。智能家居技术可能很快就能普及到普通家庭中。

    统一管理不仅是智能家居领域的问题,几乎我们所有的数据都需要统一管理,也许能实现更广泛意义的互联互通和智能助手。而 HA 提供了很好的框架,让智能家居系统不再是一个黑盒,而是可以被我们所用。也许有一天,我们可以用某种方式把自己的”脑子“也作为模块接入。

    6 参考

    智能家居达人QA专栏篇十四:homeassistant最新教程,十几块钱DIY的空调伴侣升级版,增加更多选择和可玩性

    好玩的开源项目 Docker下部署HomeAssistant智能家居系统

    万物皆可HA?教你把各种智能设备接入Home Assistant 图文教程

    相关文章

      网友评论

          本文标题:跨品牌智能家居控制_从原理到实现_HomeAssistant

          本文链接:https://www.haomeiwen.com/subject/irehadtx.html