搭建智能家居系统

  • 搭建智能家居系统(1)
    • 介绍
    • 软件安装
      • 简便安装
      • Home Assistant
      • Home Bridge
      • Home Bridge - Home Assistant
    • 相关配置
      • HASS 配置框架
        • 主文件设置
      • Homebridge 设置
      • 鹬蚌相争
      • 设备追踪设置

搭建智能家居系统(1)

介绍

将 Pi 接入智能家居控制系统并不新鲜,现有通过 Homebridge (下称「HB」)接入 Homekit 的教程本身已经非常全面,但是由于 Homekit 本身的局限性,使其对智能家居设备的支持广度和深度不足,间接影响了用户的使用体验。例如,早期 homebridge-aqara 插件并不支持小米网关 2 的自带灯光控制,白白浪费了设备的功能。

为了摆脱这一束缚,我们可以利用另一个强大的智能家居平台:Home Assistant(下称「HA」)。

Home Assistant 是一个成熟完整的基于 Python 的智能家居系统,设备支持度高,支持自动化(Automation)、群组化(Group)、UI 客制化(Theme) 等等高度定制化设置。背后又有庞大的社群基础,且不断在更新。最重要的是我们可以通过 Homeassistant-homebridge 插件打通两个平台,同样实现设备的 Siri 控制。整套体系的框架如下:

可以看出,Home Assistant 作为接入所有智能家居设备的「平台」,通过 Homebridge 这一「桥梁」,最终实现 iOS 及 macOS 设备对智能家居的设置。

我们知道 Homebridge 本身可以接入部分原生不支持 Apple Homekit 的设备,但由于 Homekit 本身的局限性,“桥梁”再强大,也无法逾越其极限。

打个比方来说,每个人都能单独过桥到对岸,但是速度始终有限,如果我们把人装进车里一起运送过桥,效率则更高,同时多了车内这么一个空间。这里的“车”就可以看作是 HA。

HA 本身作为一个独立的平台,有能力集成大量量产或 DIY 的智能家居设备,并且拥有独立的控制前端,在层级上来说是和 Appple Home 平台平起平坐的大 Boss。换言之,通过 HB 接入 Homekit 只是这个平台应用的一部分,对于其他非 Apple 生态用户,HA 也同样给予其完整丰富的智能家居体验。

本系列将围绕安装、配置、开发等内容,详细介绍 HA 平台的方方面面,同时针对 HA 与 HB 兼容与选择,自动化配置方法等等问题给出自己的观点和探索,希望可以给大家玩转智能家居带来新的启发和收获。

HA 支持大部分平台,包括 Docker、macOS、Linux、Windows等。简而言之,只要你的主机能跑 Python,基本就能安装 HA。配合『魔镜』项目,以及便捷性的考虑,我选择的平台是树莓派 3B,本系列教程也将基于树莓派展开。

软件安装

简便安装

使用这种方式需要重新刷树莓派的系统,使用 Hassbian 或者 Mossbian 或者 Hass.io

Home Assistant

Home Assistant 是一个基于 Python 3 开发的开源家庭自动化平台。可以跟踪和控制家庭中的所有设备,并实现自动化控制。不同于商业化的平台,Home Assistant 依托的是庞大的社群,目前支持 779 种不同组件,在 Github 上还有更多的定制组件,0.50 版本后,能够直接接入小米设备。它最大的优势在于丰富的自动化配置以及高度自由的定制化。

  • 根据 Home Assistant 官网 进行安装配置
  • 添加开机自启动
  • 添加相关的配置
  • 等待过后,在局域网内任意设备的浏览器输入:http://ip:8123,将出现如下 Home Assistant 页面。(替换为树莓派的 ip 地址)

Home Bridge

Home Bridge 是前苹果员工的作品,基于 NodeJS,模拟 iOS HomeKit API。有如其名,作为“桥”来连接 iOS 设备,使得本不支持 HomeKit 的设备能够接入。

  • 根据 GitHub 安装
  • 类似与 Home Assistant 添加开机自启动
sudo npm install -g --unsafe-perm homebridge

Home Bridge - Home Assistant

  • 安装 HA-HB
sudo npm install -g homebridge-homeassistant

这里还需要进行在 HomeBridge 的配置文件 config.json 中添加配置信息:

mkdir ~/.homebridge
cd ~/.homebridge
vi config.json
{"bridge": {"name":"Homebridge","username":"B8:27:EB:DA:70:F9","port":51826,"pin":"233-78-123"},"platforms": [{"platform": "HomeAssistant","name": "HomeAssistant","host": "http://127.0.0.1:8123","password": "","supported_types": ["automation", "binary_sensor", "climate", "cover", "device_tracker", "fan", "group", "input_boolean", "light", "lock", "media_player", "remote", "scene", "script", "sensor", "switch", "vacuum"],"logging": true,"default_visibility": "visible"}]
}

相关配置

前面的软件安装完成后,我们就可以在 IOS 的家庭中访问了(这里需要扫描 Homebridge 运行时生成的二维码或者输入 8 位设备编码或者在 app 中可以自动发现设备)

大多数人初接触 HASS 的时候经常一头雾水,原因是 HASS 的配置体系十分混乱,一个设备的完美接入需要涉及多个配置文件。实际上,系统架构不清晰也是 HASS 的最大缺点,因此,在开始配置教程前,我先帮助大家捋一捋 HASS 的配置框架。

HASS 配置框架

HASS 的核心配置围绕 configuration.yaml 文件展开, 在这里你可以进行时区、度量单位、开发者模式、主题选择等等基础配置。当然,最为重要的,你将在该文件内完成所有设备的接入。这也是本篇教程的重点。

HASS 的运行依赖于一个个相对独立的功能组件(Components),比如小米米家平台就可以视作一个组件。有些时候,部分设备或者功能仍未得到 HASS 的官方支持,你必须在主目录下新建自定义组件 custom_components 文件夹,添加相关的设备支持文件。

完成上述的文件修改,加上 HB 的配置,你就可以自如控制所有智能家居设备了。

然而,使用一段时间后,你可能会觉得设备太多显示凌乱,想给界面换个风格,或者 configuration.yaml 文件看起来要炸了。此时,你会考虑把部分配置剥离出去形成独立的文件,以满足你的强迫症。例如你开启了“设备追踪功能”(Device Tracker),那么 HASS 将在主文件下自动生成 known_devices.yaml 文件,你将在这里配置需要追踪的设备。

主文件设置

上篇中已经安装了 SFTP ,使用 FileZilla 软件连接上树莓派,既可以访问树莓派的文件系统,配置文件位于 /home/homeassistant/.homeassistant/configuration.yaml

打开 configuration.yaml,文件默认包含如下内容,我们按需修改:

homeassistant:#经纬度latitude: 32.87336longitude: 117.22743#海拔elevation: 430#度量单位,默认米unit_system: metric#时区time_zone:Asia/Shanghai#系统昵称,显示在主界面顶部name: Home

正常情况下,剩下的部分便无须变动了。现在添加雅虎天气服务小试牛刀一下吧:

weather:- platform: yweatherwoeid:2151849

其中,woeid 是城市代码,打开雅虎天气官网输入城市后搜索,url 的最后几位数字便是

保存,重启 HASS。

恭喜你,接入了第一个 HASS 组件~ 现在你大概明白 HASS 是怎么个操作原理了,HASS 支持上千款智能家居设备,你可以到此寻找你的设备按上述方法接入。

如果你是苹果用户,需要 Homekit 服务,那么我们还需要转到 Homebridge 进行相关设置。

Homebridge 设置

执行指令前,请先运行一次 Homebridge。

注意:如果添加了开机自启任务,勿重复运行 Homebridge,否则会出现端口占用错误。

Homebridge - homeassistant 插件版本为 2.3.0 以上的,特别注意添加最后一行配置,否则家庭 app 内设备为空。

cd /home/pi/.homebridge
sudo nano config.json
sudo nano config.json
{"bridge": {"name": "Homebridge","username": "CC:22:3D:E3:CE:30",     //树莓派 mac 地址"port": 51826,     //运行端口"pin": "123-45-678"    //连接密码,自行设定},"platforms": [{"platform": "HomeAssistant","name": "HomeAssistant","host": "http://127.0.0.1:8123",     //HA 运行的网址,可以是 ip 也可以是域名"password": "raspberry",     //HA 的 api_password,及密码,如有设置请添加"supported_types": ["automation", "binary_sensor", "climate", "cover", "device_tracker", "fan", "group", "input_boolean", "light", "lock", "media_player", "remote", "scene", "sensor", "switch"],"default_visibility": "visible"    //特别注意此项}]
}

ctrl+x,y,回车。之后清除 Homebridge 的缓存:

sudo rm -rf /home/pi/.homebridge/persist/

请大家记住此步指令,今后若出现重新配置 HA、HB 导致 iOS 设备无法识别新设备或树莓派的,大部分情况均可以使用此指令解决。

这样我们就完成了 Homebridge 的设置,重启 Homebridge:

sudo systemctl restart homebridge

经过上述设置,我相信你的智能家居设备已经在 HA 和 HB 里稳定运转了,现在不妨尝试使用 Siri 操控你的设备。

鹬蚌相争

我们知道 Homebridge 本身可以通过安装插件的方式将智能设备接入 Apple Home 平台,有的时候设备同时支持 HA 和 Apple Homekit 2 个平台,这时我们就面临平台选择。

首先,这个问题只存在 iOS 以及未来的 macOS 用户身上,因为只有你们可以使用 Siri,才可以痛并快乐着。 对于其他终端系统的用户而言,要么和设备厂家的 app 斗智斗勇,要么享受 HA 网页操控的快感,至于语音控制,就还需等待了。

其次,以米家设备为例,同是网关,HA 可以控制夜灯功能,获取光感数据,Homekit 则不能;而针对扫地机器人,HA 的接入方法十分复杂,且现阶段只能实现开关功能,HB 的插件安装配置更为容易,且可以控制吸力……可以说两个平台之间没有绝对的胜者,都需要具体情况具体分析。个人认为大多数情况下,HA 对设备的支持更好,并且基于社群支持,跟进速度也更快。

在这里再次提醒初学者:二者必取其一,同一设备请通过一个平台接入,否则未经『自定义设置』将产生冲突。


对于已经将设备通过 HB 接入,但想转入 HA 平台的派友,这里提供如下兼容方案:

  1. 在 HA 接入相关设备,详见上文。
  2. 在 HA 主页面侧边栏,点击下方 “<>”,获取设备的 entity ID:

  1. 在 HA configuration.yaml 配置文件中添加如下设置:

则该设备将在 Homebridge 中被隐藏,重启后不会被 家庭 App 重复识别添加。
此时,你可以通过 Apple Homekit 和 HA 平台同时控制该设备。

设备追踪设置

HA 可以追踪同一路由器内网设备联网状态,我们转换一下思路,便可以利用这个系统判断家人是否在家等,非常方便。

我的路由器是 ASUS AC66U-B1,HA 原生支持大部分品牌的路由器,包括小米路由器、TP-LINK 等。不同的路由器对应配置方法不同,具体请大家前往 官网 查询。设置前需要打开路由器的 SSH 模式,请大家设置好密码等,保护数据安全。建议设置仅限 LAN 用户拥有 SSH 权限。

打开 configuration.yaml 文件,末尾添加:

device_tracker:- platform: asuswrt (按需填写,小米为“xiaomi”,Netgear为“netgear”,TP-LINK为“tplink”)host: 192.168.xx.1 #路由器Ipusername: ***** #管理员账号password: ****** #管理员密码track_new_devices: no #是否自动添加新设备

不出意外,重启 HA 后,主文件夹下便会自动生成 known_devices.yaml 文件,打开之后你会发现,系统已经自动为嗅探到的连接到路由器的设备添加了默认配置:

devicename: name: Friendly Name #昵称mac: EA:AA:55:E7:C6:94 #mac地址picture: https://home-assistant.io/images/favicon-192x192.png #图片icon: mdi:human-female #图标,和图片取一个设置track: yes #是否追踪hide_if_away: no #离开后是否自动隐藏

树莓派开发笔记(二)搭建智能家居系统(1) — Home Bridge + Home Assistant相关推荐

  1. 树莓派开发笔记(三)搭建智能家居系统(2) — Home Bridge + Home Assistant

    搭建智能家居系统 搭建智能家居系统(2) 添加设备 Command Line 传感器组件 Scrape Sensor 组件 小米设备接入 Zigbee 设备(网关类设备) Yeelight 灯具 Wi ...

  2. 《动手搭建智能家居系统》——2.5 遥控设备

    本节书摘来异步社区<动手搭建智能家居系统>一书中的第2章,第2.5节,作者: [德]Othmar Kyas,更多章节内容可以访问云栖社区"异步社区"公众号查看 2.5 ...

  3. 树莓派3B+基于domoticz搭建智能家居服务器之记录

    主要是在无界面树莓派raspberry系统上部署[宝塔面板].[frp内网穿透].[domoticz智能家居系统].[DSP8266].[Arduino].[DHT11温湿度传感器].[手机domot ...

  4. 一种基于蓝牙和语音控制的智能家居系统【100010378】

    2018年大学生电子设计竞赛设计报告 一种基于蓝牙和语音控制的智能家居系统 摘要:本项目使用 STM32F407 作为主控芯片,通过蓝牙和语音控制实现安全.便宜的智能家居系统.实现了手机实现家电控制: ...

  5. 小爱(小米),天猫精灵(阿里),小度(百度),小艺(华为)智能家居系统选择

    现在的智能家居系统可谓群雄逐鹿,不少人在琳琅满目智能家居产品中选择时候,会陷入纠结,到底选择小米系比较好呢,还是选择阿里系好呢等等.针对此问题,那么现在就简单介绍一下目前主流的四种智能家居系统. 一. ...

  6. Home Assistant 基于EZSP Zigbee Dongle创建Zigbee智能家居系统

    本文描述了如何在家庭自动化平台Home Assistant (Hass.io) (https://www.home-assistant.io/)中使用基于Silicon Labs的Zigbee Don ...

  7. 树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统 篇二:初步配置 Home Assistant 并连接小米设备与 HomeKit

    树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统 篇二:初步配置 Home Assistant 并连接小米设备与 HomeKit 通过本篇教程,你将完成对 H ...

  8. 基于树莓派+STM32+OneNET云平台打造智能家居系统(一)硬件设计篇

      本次分享的是之前一个课程设计, 会分为几篇博文进行分享.智能家居是目前研究与发展的一大热点,本设计是结合STM32微处理器/树莓派(Raspberry Pi)3b+.温湿度传感器.继电器以及ESP ...

  9. python 网关控制家居_在树莓派上搭建智能家居网关

    智能家居系统利用大量的物联网设备(如温湿度传感器.安防系统.照明系统)实时监控家庭内部状态,完成智能调节.人机互动.随着物联网技术的发展,其应用范围.数据规模.市场份额将进一步扩大,智能家居设备之间的 ...

最新文章

  1. python数据结构与算法:栈
  2. 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--12864(ST7565P)液晶驱动(十三)...
  3. java中构造方法和方法全面解析
  4. 经典C语言程序100例之一
  5. 图形界限命令在命令行输入_CAD骚操作,恭喜你又学会了几个重要的命令
  6. 获取ASP.NET MVC中的完整操作URL [重复]
  7. 菜鸟的spring security学习教程
  8. 产品思维训练 | 经典产品面试题
  9. 创业成功第一步:写好商业计划书 第三章习题答案
  10. 铃木敏文《零售的哲学》品读之对产品经理和程序员的现实意义 下篇
  11. DAO 的具体内涵与概念
  12. HERO2009 午夜骚魂
  13. 欧盟要求谷歌美国站点也要执行“被遗忘权”
  14. EI收录的中国(中文)期刊(2022版)
  15. android 盈利模式
  16. 从刘维尔方程到Velocity-Verlet算法
  17. Isometric terrain
  18. 【Angular】Angular8开发拼多多——Angular CLI的环境配置
  19. 有什么好的电影网站,好的在线电影网站
  20. XSS Trap—XSS DNS防护的简单尝试

热门文章

  1. OpenCV学习笔记 - OpenCV必知必会的基础
  2. 音视频技术开发周刊 | 265
  3. 约瑟夫环问题有10(100人或者n个)个人围成一圈,从第一个人开始报数(报1、2、3),只要报3的人就出去, 然后不停的循环报数,直到最后剩下一个人,计算出这个人最开始的位置。
  4. 档案管理在计算机中的应用,计算机信息技术在档案管理中的应用论文原稿
  5. 会议室预约管理系统----会议室管理服务
  6. linux下实现原理,Linux系统TSO的实现原理
  7. 嵌入式系统开发教程 - 创新课程设计- “AI人脸识别+扩展系统”
  8. Prolog教程 5
  9. Oracle EBS FA摊销调整框控制逻辑
  10. RMAN-06207 RMAN-06208