Home Assistant智能家居入门 - 思涯谷Home Assistant智能家居入门
使用旧电脑搭建智能家居服务器,并连接传感器
2 年前
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进行识别
- 利用WxPusher进行电压提醒
4. ESPHome远程开关
- 购买ESP8266系列芯片、继电器、杜邦线等
- docker安装esphome/esphome,并以宿主模式启动
- 设置本地反向代理,端口传递:6052(local)->9052(local with password)->28052(aliyun with password)
- 访问ESPHome Dashboard,用有线方式刷入第一个固件,让ESP芯片可以自动连接WIFI
- 通过OTA技术,利用WIFI进行后续固件更新
- 通过修改yaml文件,增加switch字段,实现开关功能
- 增加sensor字段,实现温湿度传感器功能
5. 搭建MQTT服务器
- docker下载和安装eclipse-mosquitto,设置匿名访问和持久存储,从而实现主机重启不影响MQTT数据;设置max_keepalive=0以兼容micropython客户端
- HA搜索MQTT集成,输入192.168.10.123和1883端口完成添加
- 编辑configuration.yaml和main.py,实现基于mqtt协议的通信
- 实现基于MicroPython的Switch
6.全屋WiFi信号覆盖
- 准备4个华为A2三频路由器
- 连接光猫千兆口和主路由器WAN口
- 先后按下主路由器和副路由器的Mesh键,LED红灯闪烁->绿色常亮表示配对成功,配对前需恢复出厂设置
7.传感器
- 光照强度:BH1750模块
- 温湿度:DHT11模块
- 雨量:LM393+雨滴传感器+AO口输出
- 人体感应:HC-SR501
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