掌控你的智能家居 - homeassistant详细搭建教程

前言

​ 作为专业的hello world工程师,新装修房子肯定是要整一套智能家居的。虽然小米的智能家居方案已经很不错了,但是也没法100%的满足需求。而且各个厂商都有自己的生态系统,小米的小爱同学对应的是米家,苹果的siri对应的是HomeKit。想用siri控制非HomeKit的设备显然不可以,HomeKit解决方案的价格也不是我这种傲(穷)骨(人)可以玩得转的,所以为了实现各个厂商的互通就有了home-assistant这个项目。

home-assistant

具体的介绍就不多说了,简单来讲home-assistant是一个智能设备平台,它可以调度上千种智能设备(截止到2020 08 11官方公布支持1622种),包括常见的米家Amazon AlexaGoogle AssistantGoogle Cast宜家等等,基本上覆盖了市面上所有常见的设备。具体列表可以在官网公布的支持列表中查看。

准备工作

后面简称home-assistant为hass

首先需要准备一个可以运行hass系统的硬件,hass基于python,所以支持windows,mac oslinux各种发行版。作为需要7x24运行的系统PC肯定不行了,功耗太高,所以在这使用树莓派作为基础平台。树莓派的特点在这就不多说了,本次我购买的是树莓派4B

树莓派系统

树莓派本身有官方系统,不过网评一般,所以在这安装的是Ubuntu 20.04.1 LTS。之前找过一个Debian-Pi-Aarch64 ★ 全新树莓派64位系统。性能很不错,就是系统依赖会有问题。树莓派的性能太低了,做点啥时间太长,所以放弃折腾直接使用官方的Ubuntu 20.04

系统的安装不多说了,下载镜像之后使用Win32DiskImager傻瓜式一键安装,唯一需要注意的是下载的系统是压缩包,记得把img镜像解压出来再安装。

连接WIFI

不得不说第三方优化的就是方便,上面的Debian-Pi-Aarch64配置wifi极为方便。ubuntu的坑就是按照官方文档来还是失败,而且网上的都是老版本的配置方法。

经过多次尝试总结了Ubuntu 20.04的WIFI配置方法:

  1. 安装完系统后先用有线连接你的路由器。

  2. 在路由器的管理界面找到树莓派的IP,如果你跟我一样安装的是ubuntu 20,那么路由器里的名称也应该叫ubuntu

  3. 找到树莓派的IP后使用ssh登陆,初始用户名和密码都是ubuntu。首次登录后需要设置一个新密码,然后使用新密码重新登陆一下。

  4. 成功连接树莓派后就可以配置wifi了:

    1. 打开/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg文件

      1
      sudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
    2. network: {config: disabled}写入到文件中,不用格式化。

    3. 创建/etc/netplan/01-netcfg.yaml文件并编辑:

      1
      sudo nano /etc/netplan/01-netcfg.yaml
    4. 把wifi配置添加到上面的文件中:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      network:
      version: 2
      renderer: networkd
      wifis:
      wlan0:
      dhcp4: true
      optional: true
      access-points:
      "你的wifi名称":
      password: "wifi密码"
    5. 在这需要注意,如果你连接的是5G wifi的话记得对应树莓派支持的信道和路由器的信道,否则是连接不上的。

    6. 应用配置并重启

      1
      2
      3
      4
      5
      6
      # 如果配置有错误会在这一步提示出来
      sudo netplan generate
      # 这一步有可能会有systemctl的错误提示,忽略即可
      sudo netplan apply
      # 重启系统拔掉有线就连接上wifi了
      sudo reboot

环境配置

首先需要一些基础环境配置

切换apt的源为清华镜像:

1
sudo nano /etc/apt/sources.list

删除掉里面的所有内容,然后添加下面的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

如果你跟我一样使用的是树莓派或者其他ARM架构的硬件则需要使用ubuntu-ports镜像,把地址替换为https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/

1
2
3
4
5
6
7
8
9
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse

安装前置依赖

在这我们使用pyenv来管理Python,所以先安装一下前置依赖:

  1. 更新apt

    1
    sudo apt update && sudo apt upgrade
  2. 安装依赖

    1
    sudo apt-get install -y gcc make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev

安装pyenv

pyenv使您可以轻松地在多个版本的Python之间切换。它简单,简单,遵循UNIX的一站式工具传统。

可以按照官方的方法来手动安装,同时官方提供了一键安装脚本:

1
curl https://pyenv.run | bash

一般会遇到ssl的问题,可以直接把脚本下载到本地来进行安装:

脚本地址:https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer

运行:

1
bash pyenv-installer.sh

不要使用sudo。滥用权限有可能导致一系列问题。

等待脚本执行完成后把环境变量添加到系统中:

1
sudo nano ~/.bashrc

添加:

1
2
3
export PATH="/home/ubuntu/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
1
source ~/.bashrc

运行pyenv version查看pyenv版本。

运行pyenv versions查看本机python版本,注意这里多个s

安装hass

pyenv安装成功后我们就可以安装管理python了。

hass需要Pyrhon 3.7及以上,实测3.6也可以,不过会提示失去支持。3.8版本依赖会报错,所以我们安装Python 3.7.8

如果对于你的网速有信心可以直接执行pyenv install 3.7.8。由于国内网络原因在这使用本地安装,首先使用各种方法去python官网下载Python-3.7.8.tar.xz,可以使用迅雷等p2p软件。然后把下载好的软件放到~/.pyenv/cache文件夹下,cache文件夹没有可以自己新建一个。然后执行pyenv install 3.7.8等待就可以了,期间没有安装进度,等待提示成功即可。

python安装完成后就可以安装hass了。首先全局配置清华pip源:

1
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

升级pip

1
pip install pip -U

利用venv 创建虚拟环境:

1
2
cd 任何想要的目录
python3 -m venv hass

进入虚拟环境并激活

1
2
cd hass
source bin/activate

安装hass

1
python3 -m pip install homeassistant

需要等待一段时间。。。

启动hass

1
2
3
hass
# 或者启动hass后打开web ui
hass --open-ui

第一次启动hass需要下载一些依赖,启动成功后在浏览器中打开地址即可:

如果有宝塔之类的面板记得在防火墙中放行8123端口

打开http:你的ip:8123

出现面板就是安装成功了,如果失败就再次执行hass

hass面板

结语

到此hass就搭建完成了,已经完成了智能家居联动的最重要步骤,后面的添加使用等有时间再出教程吧。

作者

刘念

发布于

2020-08-11

更新于

2023-11-22

许可协议

评论