一、基本简介
智能家居:广义上来讲就是物联网,狭义上来说是家庭内部电器的智能化、自动化控制
二、基本结构
1、通用的使用方式是:直接使用厂商的产品以及对应的APP服务进行控制(如:米家、Aqara、HomeKit等厂商的生态,其中Aqara厂商对生态放宽,可以兼容到米家和 HomeKit的APP中进行控制)
- 优点是:使用体验好,配置方便
- 缺点是:各厂商生态互不相同,Homekit购买配件较贵
2、搭建Home Assistant+其他厂商的产品: 通过搭建homeassistant本地服务,将厂商的不同生态产品全部集成在一起,包括自定义开发板(ESP8266、ESP32、Arduino等)、通过配套的 Home Assistant APP进行控制,或者对接小爱同学、HomeKit家庭APP、Siri语音控制等
- 优点是:可以集中使用不同生态的不同产品
- 缺点是:需要自行搭建服务(需使用独立服务器)并且有一定的动手能力
三、服务框架及开发设备简介
1、Home Assistant
Home Assistant 简称HA或HASS,是一款基于 Python 的智能家居开源系统,支持众多品牌的智能家居设备,可以轻松实现设备的语音控制、自动化等。
2、ESPhome
ESPHome 是一个通过简单而强大的配置文件控制您的 ESP8266/ESP32 并通过家庭自动化系统远程控制它们的系统。
通常以插件形式安装在homeassiatant中,当然也可以独立安装
四、搭建系统
1、Home Assistant 搭建
访问Home Assistant官网查看官方安装教程,官方教程总体可以分为四类
- Home Assistant Operating System(OS镜像)
- Home Assistant Container(Docker容器)
- Home Assistant Core(Python 虚拟环境)
- Home Assistant Supervised(脚本完全安装)
官方推荐前两种即使用OS镜像或Docker容器,可以非常方便的将系统部署在你的设备上
- 优点:适合小白搭建,有完整教程
- 缺点:缺少Add-on Store插件商店,如:不能安装esphome插件
使用Pythone虚拟环境搭建
- 优点:适合小白搭建,有完整教程
- 缺点:缺少Add-on Store插件商店,如:不能安装esphome插件
通过脚本完全安装
安装过程基本可以从参考这篇文章
详细步骤
安装依赖
1、Home Assistant Supervised 依赖的操作系统和软件版本如下
- Docker CE >= 19.03
- Systemd >= 239
- NetworkManager >= 1.14.6
- AppArmor == 2.13.x (built into the kernel)
- Debian Linux Debian 10 aka Buster (no derivatives)
Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun
NetWorkManager
创建配置文件,配置NetworkManager不使用随机MAC
sudo mkdir -p /etc/NetworkManager/conf.d/
cat << EOF | sudo tee /etc/NetworkManager/conf.d/100-disable-wifi-mac-randomization.conf
[connection]
wifi.mac-address-randomization=1
[device]
wifi.sacn-rand-mac-address=no
EOF
安装
sudo apt-get install -y network-manager
停止ModemManager服务
sudo systemctl stop ModemManager
sudo systemctl disable ModemManager
其他依赖软件
sudo apt-get install -y apparmor-utils jq software-properties-common apt-transport-https avahi-daemon ca-certificates curl dbus socat
配置Docker
将root用户加入docker组
sudo usermod -aG docker root
设置docker的日志驱动,以及镜像的国内下载点
if [ | -d /etc/docker ];then
sudo mkdir -p /etc/docker
fi
cat << EOF | sudo tee /etc/docker/daemon.json
{
"log-driver":"journald",
"registry-mirrors":[
"https://rw21enj1.mirror.aliyuncs.com",
"https://dockerhub.a2k8s.cn",
"https://reg-mirror.qiniu.com",
"https://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
安装Home Assistant Supervised
国内网络的安装方法
国内网络无法正确解析https://raw.githubusercontent.com/的IP地址,可以通过改写hosts文件手动添加,但是下载经常失败,安装脚本也包含了部分在线下载的部分,无法正确执行。
此处改写了安装脚本,把在线下载的文件拷贝到本地,然后从本地路径加载,完成安装。
这种方法的问题时,当版本更新之后,在线获取的版本号可能需要手动更新一下。
官方安装地址
修改版国内安装地址下载包后上传到服务器
sudo bash installer.sh --machine raspberrypi4
等待安装完成即可
首次安装完成后,可能不会立即打开网页,需要耐心等待系统后台下载文件后才能打开
问题处理
安装docker提示
Repository ‘http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian buster InRelease’ changed its ‘Suite’ value from ‘stable’ to ‘oldstable’
需要apt update
安装homeassistant
[Warning] This installer is no longer supported.
[Warning]
[Warning] Home Assistant might work today, tomorrow maybe not.
[Warning]
[Warning] If you want more control over your own system, run
[Warning] Home Assistant as a VM or run Home Assistant Core
[Warning] via a Docker container.
[Warning]
Please typ “not supported” to continue this installation
使用的脚本不对,这个提示是在使用官方脚本时进行提示,使用国内修改版不会提示
安装任何插件
进入系统后提示无法安装任何插件,系统日志中有关于 supervisor 的错误日志,请重新手动安装 supervisor
apt install supervisor
4、刷入ESPhome系统
5、Home Assistant添加集成
6、 Home Assistant 连接HomeKit
使用苹果生态homekit控制的设备,如果需要远程控制的话,需要在本地使用一台ios设备(只支持:Apple TV、homepod)登录相同的icloud账号即可远程控制
五、自动化设置
1、使用家庭app(homekit)设置自动化
必须绑定本地中枢后才能使用
2、使用homeassistant设置自动化
安装后需要安装esp8266固件开发包
刷入系统(esp easy)
下载espeasy程序文件
六、显示组件
使用中文字体需要安装pillow python插件,使用该包将 TrueType 文件转换为内部格式
需要python环境
sudo apt-get install python
提示错误:
The following packages have unmet dependencies:
python-dev : Depends: libpython-dev (= 2.7.11-1) but it is not going to be installed
Depends: python2.7-dev (>= 2.7.11-1~) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
解决方法:
1.安装aptitude
sudo apt-get install aptitude
2.利用aptitude来安装
sudo aptitude install python-dev
aptitude与apt-get的区别和联系
aptitude与apt-get都是Debian及其衍生系统中的包管理工具。aptitude在处理包依赖问题上更好。
安装pip
python 2:wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python3:wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
修改ubuntu的默认python版本
ubuntu14.04LTS上装有两个版本的python:python2.7.6与python3.4,默认使用python2.7.6。
可以使用以下命令来修改默认python版本:
sudo cp /usr/bin/python /usr/bin/python_bak #备份
sudo rm /usr/bin/python #删除
sudo ln -s /usr/bin/python3.4 /usr/bin/python #默认设置为python3.4
这样在终端中运行Python时,默认启动的就是3.4版本了
安装插件
pip install Pillow
查看版本pip -V
查看pip插件列表 pip list
字体文件放入/usr/share/hassio/homeassistant/esphome/fonts/该目录