Home Assistant智能家居入门
使用旧电脑搭建智能家居服务器,并连接传感器
2023-02-07
Home Assistant智能家居入门1. 旧电脑安装Ubuntu Server
- 下载xubuntu-22.04-desktop-amd64.iso
- 使用Universal-USB-Installer-2.0.0.8.exe制作启动盘
- 安装Ubuntu Server
- 连接网线更新系统并安装
net-tools
- 插入USB网卡(RTL8187)自带驱动,但
ifconfig
命令无法直接得到网卡名字,利用iwlist scanning
命令可得到无线网卡的名字,利用ifconfig 无线网卡名字 up
开启无线网卡
- 利用wpa_supplicant连接wifi
- 设置开机连接WIFI
- 利用Crontab定时连接到指定SSID
- 设置NPC(NPS_Client)内网穿透
- 拔掉网线、键盘、显示器,并将服务器转移到一个能接受WIFI的隐蔽角落
- 安装SSH_Server,通过Tabby连接,以root身份登录
- 设置局域网静态IP:本地通过局域网静态IP访问,远程通过内网穿透访问。
- 设置笔记本盖上盖子后仍能远程重启
2. 安装Home Assistant
- 安装Docker、Docker UI
- 利用DOCKER安装Home Assistant
- 修改Nginx反向代理
- 修改
configuration.yaml
使其支持外网访问,http-trusted_proxies区段添加127.0.0.1和172.17.0.1,地址与docker容器网络模式有关,前者是net=host模式本机IP,后者是net=bridge模式docker的主IP,见下图

- 安装HACS
3. USB摄像头监控家庭电压
- 插入USB免驱摄像头,注意找到电压最足的USB口,以防无线网卡和摄像头同时插入时供电不足
- docker安装nginx-rtmp服务器
- docker安装jrottenberg/ffmpeg,使用
docker run --restart=always --name=voltage --privileged --network host -d -v /home/docker/usbcamera:/config jrottenberg/ffmpeg -i /dev/video0 -f flv rtmp://0.0.0.0:1935/live/voltage
命令启动,添加privileged以使用宿主机设备,添加network host以使用宿主机网络
- 后面发现FFMPEG占用了大量的硬件资源,将近80%的CPU占用率,因此停止FFMPEG直播和rtmp服务器,改为利用opencv定期拍照,图片文件存到
/home/docker/homeassistant/camera.png
中,修改configuration.yaml
添加local_file形式的,地址填即可
camera
/config/camera.png
利用OpenCV和百度OCR对电压表进行数字提取,利用cv.morphologyEx(img, cv.MORPH_CLOSE, kernel)
函数进行闭运算,使得数字各部分连起来,然后用百度OCR进行识别4. ESPHome远程开关
5. 搭建MQTT服务器
6.全屋WiFi信号覆盖
- 准备4个华为A2三频路由器
- 连接光猫千兆口和主路由器WAN口
- 先后按下主路由器和副路由器的Mesh键,LED红灯闪烁->绿色常亮表示配对成功,配对前需恢复出厂设置
7.传感器
8.电动窗帘
- 2GT-6mm同步带×10米
- gt2同步轮(20齿,孔径5mm,高16mm)×2
- 42步进电机(长60mm,大扭矩)×1
- A4988红色PCB版(大电流)×1
- 12V2A电源适配器
- ESP8266刷MicroPython
9.WiFi空调
- 准备红外发射和接收LED模块
- 安装Arduino IDE
- 在首选项的URL中填写
http://arduino.esp8266.com/stable/package_esp8266com_index.json
- 在开发板管理器中添加ESP8266
- 设置OTA和MQTT
- 在库管理器中添加
IRremoteESP8266
- 使用
IRrecvDumpV3
例程记录遥控器每个按钮的红外编码RawData
- 使用
IRsend
例程发送对应编码
- 整合各功能于一个程序中,使用HA控制
10.接入监控
- 利用Home Assistant的generic类型的摄像头,导入本地IP摄像头的RTSP地址
- 调用自动化中的camera.snapshot对摄像头进行截图,保存到
/config/www/snapshot/entrance_watcher.jpg
中
- 通过local_file类型的摄像头,调用截图
11.自动备份
- 设置Github通过ssh_key推送
- 在docker目录执行git init,并定时上传到github,注意在.gitignore中加入
home-assistant_v2.db
,限制大文件上传
12.使用mysql
- 通过docker安装Mysql,注意映射/etc/mysql/conf.d目录和3306端口
- 在conf.d目录下新建my.cnf文件,将
socket=/var/run/mysqld/mysqld.sock
写入[mysqld]中
- 在yaml文件中添加
recoder: db_url: mysql://xxx