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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27114397/article/details/85954396

搭建智能家居系统(2)

上篇中已经搭建好基本的智能家居系统需要的软件:Home Bridge + Home Assistant + HA-HB,这篇文章将继续介绍相关的配置

添加设备

正如上篇中所述 HASS 的核心配置围绕 configuration.yaml 文件展开, 在这里将进行很多基础配置。当然,最为重要的,将在该文件内完成所有设备的接入。

在 HA 中接入一个设备,只需要在 configuration.yaml 中添加这个设备的相关信息,例如:
添加树莓派的温度查看 “组件”,我们知道在树莓派终端中输入 cat /sys/class/thermal/thermal_zone0/temp 指令便可以获取 CPU 温度的千倍值,想让 HA 运行指令只需将其写入配置文件中。

sensor: //设备类型
  - platform: command_line
    name: CPU Temperature
    command: cat /sys/class/thermal/thermal_zone0/temp
    unit_of_measurement: "°C"
    value_template: '{{ value | multiply(0.001) | round(1) }}'

重启 HA 后,HA 便会添加一个 sensor.CPU_Temerature 的传感器,之后就和其他组件一样,可以对其随意个性化配置。

这里可以查看 HomeAssistant 提供的 component 。

Command Line 传感器组件

HA 之中接入一个设备往往需要经由“平台——组件”这一流程,过程十分繁琐,有时我们只是想运行一些简单的 Python 代码,或者只是想测试一下效果,因此完全没有必要特别去创建平台。

HA 为此特别提供了名为 “Command Line” 的传感器组件,这个强无敌的组件能让你在 HA 中运行任何支持该平台的命令,还可以显示输出结果。

同其他传感器组件一样,使用 Command-Line,只需在 configuration.yaml 中添加如下配置:

sensor:
  - platform: command_line
    command: SENSOR_COMMAND

Scrape Sensor 组件

Scrape Sensor 组件顾名思义是用来抓取(刮削)数据的,但是实测下来,效果有限。

基本配置如下:

sensor:
  - platform: scrape
    resource: https://home-assistant.io
    select: ".current-version h1"

稍有前端基础的朋友应该很快就可以明白其意,最后的 select 可以设定需要抓取的类或者是对象。

比如你是 IFTTT 的重度患者,想要在 HA 前端显示所用的 Applets 的情况,就可以这样配置:

sensor:
  - platform: scrape
    resource: http://status.ifttt.com/
    name: IFTTT status
    select: '.component-status'

摸清楚原理,我们很快就会意识到 Scrape 只能用来刮削结构简单的静态网页,一旦网页稍微复杂一些,数据根本无法被 select 出。

小米设备接入

我们知道小米生态链挺复杂,紫米、绿米各种子公司。不管牌怎么换,对于集成平台来说,想要一统江湖,我们只需关心设备的传输协议即可。

目前有一个简单粗暴的标准,即如果一个设备需要小米多功能网关才可以使用,一般来说它采用的是 Zigbee 协议,那么只要网关接入了 HA 就可以完美适配。而如果一个设备是独立接入网络的,比如米家 Wi-Fi 插座、扫地机器人、Yeelight 灯具等,我们则需要单独在 HASS 里接入它们。

类似的标准也适用于 Homeridge,homebridge-mi-aqara 插件正常情况下只支持 Zigbee 设备,其他设备需要另安装插件。

本篇教程将介绍将小米设备接入 HA 的方法,这里不介绍通过 HB 直连,下面我们以传输协议为划分标准,分别介绍小米设备接入智能家居系统的方法。

Zigbee 设备(网关类设备)

以小米多功能网关(第二代)为代表的网关类设备是大部分『米家』及 『绿米(Aqara)』 Zigbee 设备的联动基础,也是整个米家智能家居系统的核心。除多功能网关外,空调伴侣和 Aqara 监控摄像头都具备网关功能。

要将网关接入 HA,我们需要先打开网关的通信协议,并获取通讯密码。

打开米家 app,连接设置多功能网关,点击进入网关页面,点击右上角「…」,进入「设置」。点击第二行「关于」,狂点空白处,便会跳出「局域网通信协议」以及「网关信息」。进入「局域网通信协议」,打开开关,记录下密码,这就是之后待填的 「key」。回到上级页面,进入「网关信息」,记录下 mac 地址,这就是之后待填的 「sid 或 mac」

HA 0.50.0 及之后版本已经添加对米家平台的官方支持,我们只需要直接配置即可。如果之前有复制 custom_componets 文件夹的同学,升级后请删除该文件夹。 打开 configuration.yaml 文件,添加以下配置:

此设置适用于 HA 0.54.0版及之后

xiaomi_aqara:
  gateways:
      - mac: MAC 地址 (地址不带 "-" 或 ":" ,行首的「-」必须保留)
        key: 通讯密码

如果你有多个网关,则按以下格式设定:

xiaomi_aqara:
  gateways:
    - mac: xxxxxxxxxxxx
      key: xxxxxxxxxxxxxxxx
    - mac: xxxxxxxxxxxx
      key: xxxxxxxxxxxxxxxx

重启后,HA 主界面将会自动识别网关及捆绑的所有设备。

Yeelight 灯具

Yeelight 目前已经从小米独立出来,运作良好,原生支持 Google Assistant 等平台,应该说是小米生态链下『走出去』的先锋。Yeelight 在 HA 中支持色温、色彩、亮度等控制,基本实现全品支持。

配置前请先在 Yeelight App 中打开『局域网控制 (LAN Control)』,服务器选择中国大陆、新加坡皆可,注意如果所选服务器与米家 App 中不同,则设备无法接入米家 App,但不影响在 Yeelight App 及 HA 中的控制。(Yeelight App 3.0 之前版本中,『局域网控制』为『极客模式』)

之后重启 HA,重启前请打开灯具,稍等几分钟,确认一下设备是否已经被 HA 自动识别添加。如果是的话,皆大欢喜,什么都无需再做了;如果没有,请打开 configuration.yaml 文件,在合适位置添加如下字段:

light:
  - platform: yeelight
    devices:
      192.168.1.25:              #Yeelight灯具ip
        name: Living Room      #昵称
        transition: 1000
        use_music_mode: True #音乐随动模式,默认关闭

以上 2 个是最常见的具有统一平台的设备适配,下面是使用 WiFi 传输协议设备的具体配置方法:

Wi-Fi 设备

获取 token

所有的小米 WiFi 设备都必须先取得设备的 token 方可接入 HA,以下简要介绍获取 token 的方法之一

首先在安装有 Node.js 的电脑上安装 miio 库

sudo npm install miio

之后,重置待连小米设备的网络,使其产生 WIFI 热点,将电脑连接至该热点上,之后输入:

miio --discover

即获取设备的 token,请集中保存。获取 token 后,如需绑定米家 App,请直接在 App 中添加设备,切勿继续重置设备,否则 token 将重新生成,原有 token 将失效。

米家扫地机器人

HA 原生支持米家和石头扫地机器人(2nd),使用专门的类—— vacuum。

按照上方教程获取扫地机的 token,之后在 configuration.yaml 中填入以下配置:

vacuum:
   - platform: xiaomi_miio
      name: '***'                    #昵称
      host: 192.168.1.2            #ip
      token: R@#RT$TFEW    #token

空气净化器

HA 目前原生支持 2 代空净,暂不支持 Pro 版。
按照上方教程获取空气净化器的 token,之后在 configuration.yaml 中填入以下配置:

fan:
  - platform: xiaomi_miio
    name: Xiaomi Air Purifier 2
    host: 192.168.130.66
    token: YOUR_TOKEN

空调伴侣

米家和 Aqara 均发布了自己品牌的空调伴侣,除外观差异外,内核并无不同。小米已于近日固件更新中开放空调伴侣的『局域网通信协议』,空调控制和网关功能请分别使用各自插件接入。另,目前插件仅支持部分空调品牌的部分预设模式,详见插件说明页,未支持的型号请自行抓包空调码。

Home Assistant 中空调伴侣以自定义组件的方式加入,此组件为爱好者 Mac_zhou 制作,欢迎大家前往 项目地址 点赞。

插件使用前需获取设备的 token:进入『米家』应用,点击空调伴侣,选择右上角『•••』—— 『关于』—— 狂点空白区域 —— 网关信息 “token=xxxxxxx"即是 。

将 Github 中的对应文件放入文件夹,层级与 Github 中展示一致,将其中的目录拷贝到你的 HomeAssistant 配置文件目录中,之后在配置文件中增加以下配置:

climate:
    - platform: mi_acpartner
      name: mi_acpartner
      host: 10.0.0.234 #ip地址
      token: ****** #token
      target_sensor: sensor.temperature_158d00015aefc4 #温度传感器 ID
      target_temp: 26 #目标温度

custom_components 目录示意:

在这里插入图片描述

WiFi 插座及智能插线板

0.56.0 的更新带来了插座的支持,接入前先获取设备的 token,具体方法见前文。之后,在 configuraiton.yaml 添加如下设置:

switch:
  - platform: xiaomi_miio
    name: Original Xiaomi Mi Smart WiFi Socket
    host: 192.168.130.59
    token: YOUR_TOKEN

净水器

小米净水器插件由 bit3725 制作,欢迎前往 项目 点赞~
使用方法:从 Github 下载 mi_water_purifier.py,放入 custom_components/sensor/ 文件夹内(文件层级项目本身已经很清晰地给出了),在 configuration.yaml 添加如下设置:

sensor:
  - platform: mi_water_purifier
    host: YOUR_SENSOR_IP
    token: YOUR_SENSOR_TOKEN
    name: YOUT_SENSOR_NAME

接入后自动会生成几项相关的传感器数值,如果需要集中查看,请使用群组:

group:
  - xiaomi_water_purifier:
    name: Xiaomi Water Purifier
    icon: mdi:water
    entities:
      - sensor.tap_water
      - sensor.filtered_water
      - sensor.pp_cotton_filter
      - sensor.front_active_carbon_filter
      - sensor.ro_filter
      - sensor.rear_active_carbon_filter

PM 2.5 监测仪

PM 2.5 监测仪插件由 bit3725 制作,欢迎前往 项目 点赞~

使用方法:从 Github 下载 mi_air_quality_monitor.py,放入 custom_components/sensor/ 文件夹内(文件层级项目本身已经很清晰地给出了),在 configuration.yaml 添加如下设置:

sensor:
  - platform: mi_air_quality_monitor
    host: YOUR_SENSOR_IP
    token: YOUR_SENSOR_TOKEN
    name: YOUT_SENSOR_NAME

在 Home Bridge 中添加设备

在 Home Bridge 中添加设备需要安装插件,并在 homebridge 的配置文件 config.json 中添加相关配置,安装插件的方法见 GitHub

sudo npm install -g homebridge-xxx

这里可以搜索很多相关的插件

树莓派相关

sudo npm install -g  homebridge-raspberrypi-temperature
sudo npm install -g  homebridge-pc-volume
sudo npm install -g  homebridge-camera-rpi
  • Home Bridge 配置文件示例:
{
	"bridge": {
		"name": "InfiniteYuan's Home",
		"username": "B8:27:EB:13:B8:A1",
		"port": "42583",
		"pin":"214-13-416"
	},
	"accessories": [
		{
		"accessory": "RaspberryPiTemperature",
		"name": "树莓派温度",
		"updateInterval": 1000
		},
		{
		"accessory": "ComputerSpeakers",
    		"name": "树莓派音量"
		}
	],
	"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"
		},
		{
		"platform": "rpi-camera",
		"cameras": [{"name": "Pi Camera"}]
		}
	]
}

猜你喜欢

转载自blog.csdn.net/qq_27114397/article/details/85954396