思涯谷

  • 首页
  • 探索
  • 标签
  • 关于
思涯谷 ©2025
京ICP备2022030312号GitHub User's stars

Home Assistant智能家居入门

使用旧电脑搭建智能家居服务器,并连接传感器

...
标签:Ubuntuwifi智能家居阿里云Home Assistant
点赞(0)
返回顶部
2023-02-07
Home Assistant智能家居入门
Home Assistant智能家居入门

留言

1. 旧电脑安装Ubuntu Server

  1. 下载xubuntu-22.04-desktop-amd64.iso
  2. 使用Universal-USB-Installer-2.0.0.8.exe制作启动盘
  3. 安装Ubuntu Server
  4. 连接网线更新系统并安装net-tools
  5. 插入USB网卡(RTL8187)自带驱动,但ifconfig命令无法直接得到网卡名字,利用iwlist scanning命令可得到无线网卡的名字,利用ifconfig 无线网卡名字 up开启无线网卡
  6. 利用wpa_supplicant连接wifi
  7. 设置开机连接WIFI
  8. 利用Crontab定时连接到指定SSID
  9. 设置NPC(NPS_Client)内网穿透
  10. 拔掉网线、键盘、显示器,并将服务器转移到一个能接受WIFI的隐蔽角落
  11. 安装SSH_Server,通过Tabby连接,以root身份登录
  12. 设置局域网静态IP:本地通过局域网静态IP访问,远程通过内网穿透访问。
  13. 设置笔记本盖上盖子后仍能远程重启

2. 安装Home Assistant

  1. 安装Docker、Docker UI
  2. 利用DOCKER安装Home Assistant
  3. 修改Nginx反向代理
  4. 修改configuration.yaml使其支持外网访问,http-trusted_proxies区段添加127.0.0.1和172.17.0.1,地址与docker容器网络模式有关,前者是net=host模式本机IP,后者是net=bridge模式docker的主IP,见下图 ha-configuration.yaml
  5. 安装HACS

3. USB摄像头监控家庭电压

  1. 插入USB免驱摄像头,注意找到电压最足的USB口,以防无线网卡和摄像头同时插入时供电不足
  2. docker安装nginx-rtmp服务器
  3. 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以使用宿主机网络
  4. 后面发现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远程开关

    1. 购买ESP8266系列芯片、继电器、杜邦线等
    2. docker安装esphome/esphome,并以宿主模式启动
    3. 设置本地反向代理,端口传递:6052(local)->9052(local with password)->28052(aliyun with password)
    4. 访问ESPHome Dashboard,用有线方式刷入第一个固件,让ESP芯片可以自动连接WIFI
    5. 通过OTA技术,利用WIFI进行后续固件更新
    6. 通过修改yaml文件,增加switch字段,实现开关功能
    7. 增加sensor字段,实现温湿度传感器功能

    5. 搭建MQTT服务器

    1. docker下载和安装eclipse-mosquitto,设置匿名访问和持久存储,从而实现主机重启不影响MQTT数据;设置max_keepalive=0以兼容micropython客户端
    2. HA搜索MQTT集成,输入192.168.10.123和1883端口完成添加
    3. 编辑configuration.yaml和main.py,实现基于mqtt协议的通信
    4. 实现基于MicroPython的Switch

    6.全屋WiFi信号覆盖

    1. 准备4个华为A2三频路由器
    2. 连接光猫千兆口和主路由器WAN口
    3. 先后按下主路由器和副路由器的Mesh键,LED红灯闪烁->绿色常亮表示配对成功,配对前需恢复出厂设置

    7.传感器

    1. 光照强度:BH1750模块
    2. 温湿度:DHT11模块
    3. 雨量:LM393+雨滴传感器+AO口输出
    4. 人体感应:HC-SR501

    8.电动窗帘

    1. 2GT-6mm同步带×10米
    2. gt2同步轮(20齿,孔径5mm,高16mm)×2
    3. 42步进电机(长60mm,大扭矩)×1
    4. A4988红色PCB版(大电流)×1
    5. 12V2A电源适配器
    6. ESP8266刷MicroPython

    9.WiFi空调

    1. 准备红外发射和接收LED模块
    2. 安装Arduino IDE
    3. 在首选项的URL中填写http://arduino.esp8266.com/stable/package_esp8266com_index.json
    4. 在开发板管理器中添加ESP8266
    5. 设置OTA和MQTT
    6. 在库管理器中添加IRremoteESP8266
    7. 使用IRrecvDumpV3例程记录遥控器每个按钮的红外编码RawData
    8. 使用IRsend例程发送对应编码
    9. 整合各功能于一个程序中,使用HA控制

    10.接入监控

    1. 利用Home Assistant的generic类型的摄像头,导入本地IP摄像头的RTSP地址
    2. 调用自动化中的camera.snapshot对摄像头进行截图,保存到/config/www/snapshot/entrance_watcher.jpg中
    3. 通过local_file类型的摄像头,调用截图

    11.自动备份

    1. 设置Github通过ssh_key推送
    2. 在docker目录执行git init,并定时上传到github,注意在.gitignore中加入home-assistant_v2.db,限制大文件上传

    12.使用mysql

    1. 通过docker安装Mysql,注意映射/etc/mysql/conf.d目录和3306端口
    2. 在conf.d目录下新建my.cnf文件,将socket=/var/run/mysqld/mysqld.sock写入[mysqld]中
    3. 在yaml文件中添加recoder: db_url: mysql://xxx