Homeassistant入门向导:安装、配置与进阶

引言

在智能家居市场,米家无疑是垄断地位。但是米家对于空调控制的优化不佳。首先是每次打开空调都是从 16° 起步,无法记住上次的温度。米家智能中温度风量只能二选一,只有 16° 和高速或者其他温度和自动风速。就在一个月前,一直稳定的 Yeelight 突然抽风,无线开关开始各种不受控。经多次反馈无果,被迫弃坑。你是否也受够了一成不变的米家?厌倦了多个 App 之间的频繁切换?不应该是让你去适应智能家居系统。现在,甚至不需要太多 Linux基础,几串代码就可以 DIY 最适合自己的智能家居控制系统。

Homeassistant 能做什么

最早接触的 Homeassistnt (下简称HA)是为了把米家设备接入 Homekit 用 Siri 和自动化管理设备。随着 HA 的版本迭代,HA 越来越稳定与个性化。HA 不光是连接 Homekit 和智能家居的桥梁,更是让家居更适应你需求的管理中心。

你是否也曾想过:

  • 开关电脑时自动开关台灯和氛围灯。
  • 用 Siri 遥控家里所有的智能设备和空调。
  • 日历与灯光同步,提醒你的不光是声音,甚至可以是味道。
  • 在一块面板上直观地看到家中温湿度、NAS 运行状态、你的明日安排、车辆定位。
  • 任何一个开关、设备状态成为智能家居的一环。

如果你着迷于更智能的家居,更协调统一的管理,那么你一定要试试最新版本的 Homeassistant 。下面,我将用实例演示 Homeassistant 的安装与部署。

安装 Homeassistant

事先准备

Nas 、软路由、树莓派、PC,Homeassistant 可以安装在任何机器上。作为智能家居的网关,稳定是关键。本文将使用树莓派安装。

硬件需求:

  • 树莓派(推荐4代+2G)
  • 32G(或以上)SD卡
  • 网线

首先下载所需 树莓派系统 并用 balenaEtcher 刷入。拔出SD卡后再插入电脑,在 root 根目录创建新文本文档改名为 SSH 。使用终端、 putty 连接树莓派,连接默认密码为 raspberry(输入密码时不显示)。 Win 系统可使用 finalshell 查看树莓派当前网络下载速度。

sudo timedatectl set-timezone 'Asia/Shanghai'

设置完时区后重新启动进入下一步。

一键安装

经过开发者和极客用户的不断努力,让普通用户的入门门槛变得越来越低,本文使用 neroxps 制作的一键安装脚本安装。该脚本集成 Docker 安装、更换国内源和Hassio安装。

sudo -s
wget https://code.aliyun.com/neroxps/hassio_install/raw/master/install.sh
chmod a+x install.sh
./install.sh

回车运行选择自己设备即可。值得注意的是,由于国内网络原因,会出现下载速度其慢或卡死,用 Ctrl+C 停止任务后再次运行脚本。此外,也可以在路由端添加代理规则,让下载更加顺畅。

官方文档 的安装方法,优势在于更加稳定。但是受限于国内网络,该安装方法可能会启动失败,且无法安装插件。

安装完成后,便可通过 http://树莓派IP:8123 登录 HA 管理界面。

配置 Homeassistant

HA 设备的接入方式并非一键连接,需要在树莓派目录 \usr\share\hassio\homeassistant修改配置文件 configuration.yaml

进入 HA 管理界面,点击侧边栏 Supervisor 中的 Add-on store ,安装并启动 File editor 插件便可在网页对 configuration.yaml 文件进行直接编写。

下面将以案例的形式讲解设备的接入。

Yeelight

以 Yeelight 灯带为例(非原生 Homekit 设备)。HA 自动搜索无法正确配置 Yeelight 灯带,因此需要手动加入。从路由器或 App 中获取 设备的 IP 地址 即可无缝接入 HA。

将以下内容拷贝至 configuration.yaml 中并更改 IP 地址。(注意 yaml 格式和缩进)

# 该方法不适用于已支持 Homekit 设备
discovery:
  ignore:
    - yeelight
yeelight:
    devices:
      192.168.1.110:
        name: 灯带 1
      192.168.2.111:
        name: 灯带 2

配置 - 服务器控制 重新启动后便可在首页看到设备。

Broadlink 博联全系列

博联接入 HA 最为省心。以博联智能开关为例,

# 「switch:」只需填写一次
switch:
  - platform: broadlink
    host: IP地址 1
    mac: MAC地址 1
  - platform: broadlink
    host: IP地址 2
    mac: MAC地址 2

XIAOMI 小米系列

区别于其他智能设备,小米设备不光要获取 IP 地址,还要要获取设备 API token

Token 的获取方法有很多,这里介绍最简单的一种。由 SchumyHao1 分享,下载 apk 在手机安装。在 app 通用设置 - 网络信息 中即可看到设备 token 。iOS 用户须下载安卓模拟器运行。

以小米智能开关为例,

# 「switch:」只需填写一次
switch:
  - platform: xiaomi_miio
    host: IP 地址
    token: TOKEN 码

小米智能网关需用 key 连接。还是用到之前的 App ,在网关页面中点击 关于 ,多次点击 插件版本 位置打开开发者模式。打开 局域网通信协议 便可获取 key

xiaomi_aqara:
  discovery_retry: 10
  gateways:
    - key: 获取的密码

连接成功后,小米网关下的所有智能硬件将自动接入 HA 。

Homekit

设备连接 HA 后,可利用 HA 内置的 Homekit 插件将所有设备接入家庭,用 iPhone 统一控制。在 configuration.yaml 中写入:

homekit:
    exclude_entities:
#以下实体不在 Homekit 中显示 (非必填,格式展示请勿复制)
      - binary_sensor.switch_xxxxxx
      - binary_sensor.wall_switch_xxxxxx
      - ……

重启 HA ,在通知中可看到二维码和 8 位连接码,扫描或手动接入即可。原生 Homekit 设备需先在 家庭 App 中移除 , HA 会自动发现,输入 Homekit 设备 8 位连接码后即可接入 HA 。

更多设备的接入可在 官方整合文档 中查询。

至此,Homeassistant 的设备接入工作完成。

Homeassistant 自动化

接入 HA 的设备,无论是开关、传感器(温湿度等特殊除外)、日历等,一般表示为 onoff 两个状态,HA 监测 设备状态、调用服务 达到家居自动化目的。

HA 前端已集成了自动化配置界面,下面将演示基础的自动化配置流程。

Google 日历 中有活动时打开灯泡为例,

在 HA 管理界面, 配置 - 自动化 中,点击右下角 + 号创建新自动化。当有活动时,日历状态从 off 变为 on ,那么将调用 switch.turn_on 服务。

当然,用户也可直接编写 automations.yaml 文件,以 小米无线开关 为例,

- alias: 工作模式
  trigger:
    platform: event
    event_type: xiaomi_aqara.click  
    event_data:
      entity_id: binary_sensor.switch_xxxxxxxxxxx 
      click_type: single 
  action:
#打开电脑
    - service: switch.turn_on 
      entity_id: switch.mypc
#开灯并调到指定颜色
    - service: light.turn_on 
      data:
        entity_id: light.table_light
        brightness: 255
        rgb_color: [255, 145, 26]
#打开空调并调整到指定温度
    - service: climate.set_temperature
      data:
        entity_id: climate.bedroom
        temperature: 23
        hvac_mode: cool

保存后,在 服务器控制重载自动化 即可,无需重启。

请在用户资料中开启高级模式

自动化保存后会以开关形式在 HA 和 Homekit 中显示,该开关也嵌套在新的自动化中。

课程表接入 HA ,在上课时开启房间最亮的灯,其效果不亚于上课睡觉时被点名回答问题。以至于我每次只能心惊胆战地睡觉。其次是启动电脑时开启一系列开关,HA 有自带集成 wake on lan 可 Ping 电脑,但是我总觉得不太安稳。我这里使用的是魔改的小米门窗传感器检测电脑电源状态。

Homeassistant 进阶

截至 0.109 版本,HA 可接入设备已经超过 1500 种。 PC 、 Synology 、特斯拉等都可以通过 HA 的内置插件直接连接。但是其他用户开发的自定义插件、主题、卡片还需手动添加。下面将举例演示如何在 HA 中安装自定义插件。

树莓派 Samba 安装与部署

安装 samba

sudo apt-get update
sudo apt-get install samba samba-common-bin

配置 samba

sudo nano /etc/samba/smb.conf

将以下内容(注意格式)添加到文件最下方, Ctrl+X 退出并 Y 保存文件。

[Hass]
    comment = Homeassistant
    valid users = pi,root
    path = /usr/share/hassio
    browseable = yes
    writable = yes

重启 samba 服务

sudo samba restart

添加登录账户并创建密码。

sudo smbpasswd -a pi

修改文件权限

sudo chmod 777 -R /usr/share/hassio

在访达或此电脑中输入 //树莓派IP 以账户名 pi 访问 \hass\homeassistant 配置文件。

插件安装

由于 HA 没有内置红外码库,用户想要遥控空调,只能自行学码或者安装插件。

下面演示 SmartIR 空调遥控插件的安装流程。

  • \homeassistant创建新文件夹 custom_components
  • 下载 插件,将压缩包中 smartir 文件夹拖入 \homeassistant\custom_components 中 。

custom_components文件夹需自行创建

  • configuration.yaml 中写入:
#博联红外遥控器
smartir:
switch:
  - platform: broadlink
    host: 192.168.10.10          
    mac: '00:00:00:00:00:00'     
climate:
  - platform: smartir
    name: Office AC               
    unique_id: office_ac          
    device_code: 1000       #参照插件目录获取空调代号
    controller_data: 192.168.10.10       #博联RM IP地址
    temperature_sensor: sensor.temperature  #温湿度传感器在 HA 中的ID名
    humidity_sensor: sensor.humidity
    power_sensor: binary_sensor.ac_power

重启 HA 后可见空调控制面板。

更多插件可访问 官方论坛

官方插件市场 HACS

Add-store 是功能性插件下载中心, HACS 则是自定义 UI 的下载中心。

HACS 本质上是插件,安装方式同上方。 下载 解压后将整个 hacs 文件夹拖入 custom_components 后重启即可完成安装。

之后在 配置 右下角 + 号中搜索 「hacs」。

Github 个人访问令牌请从 这里 创建。无需勾选其他选项,创建完成后复制粘贴即可完成配置。

HACS 中包含了用户制作的卡片样式,主题等,可一键安装。主题安装后,可在用户资料中更改。卡片需自行配置。

下面以 button-card 为例,在 HACS PLUGINS 中选择自己想要的卡片下载安装后,点击 ADD TO LOVELACE 按钮。

概览 右上角 配置UI 中添加 水平堆叠 卡片,将卡片依次加入。

请输入图片标题

type: 'custom:button-card'   #卡片类型(必填)
entity: switch.tai_deng  #设备ID (必填)
icon: 'mdi:desk-lamp'  #图标
size: null  #根据需要配置
styles:  
  name:
    - font-size: 13px
    - align-self: middle

官方提供了部分图标,可在 这里 选取。用户也可将自行制作的图标放在 \homeassistant\www 下,用 entity_picture: /local/xxx.png 调取。 推荐在 配置 - 自定义 中进行全局更改

Homeassistant × 屏幕

树莓派上连接一块触屏,登陆 HA 管理界面,就可以直接控制家里的智能设备。

但这个方法有许多不足。大多小尺寸触摸屏(10 寸以下)非独立供电,无法自动化熄屏。DIY的小屏幕虽然可以通过连接智能开关熄屏,但是触控质量参差不齐,不建议大家踩坑。秉持「万物都应自动化」原则,我淘了一块亚马逊平板,1920*1200 的分辨率,价值 300 元。大家也可以选择手边的闲置安卓平板。

HA 提供 App ,需在 Google Play 上下载,若无此条件也可直接使用浏览器、将网页打包成 app或使用 APKPure 下载替代 App。值得注意的是,老旧安卓系统内 「WebView」版本过低 时会导致自定义UI显示错误。需在 Google Play 上更新 WebView 版本。

安卓系统开发者模式中有「充电不关闭屏幕」选项,但是依旧会降低屏幕亮度。如有需要可下载app Tasker ,创建 充电常量,断电熄屏 任务。将充电线插在智能开关上,创建自动化便可在指定时间,或随智能灯泡开关屏幕。

我将只把最常用的开关放在了首页,其他是天气、温度、课程表、汽车状态等信息,尽量做到简单。

至于为什么要把车辆保养状态这种没用的信息放进去,仅仅是我觉得「把汽车接入智能家居」这件事太酷了。

最后,官方文档官方论坛瀚思彼岸ioBroker将会帮到你很多。

谢谢大佬分享 辛苦了

大佬感谢分享,论坛因你更精彩

树莓派和 Homeassistant什么关系呢?我缕的有点头疼

简单来说是主机和软件的关系

有一个简单问题,在configuration.yaml里配置的设备,为啥device list里没有?配置和你文章里基本一样。日志里也啥都没有

最简单的就是把你的yaml的配置截图发上来,看看哪里出问题了。

请教一个问题,如何修改 Supervisor 中的 Add-on store方式安装的“Node-RED"的用户名与密码?

为homeassistant的登陆名和密码。