赞
踩
【说明】本系列为自用教程,记录以便下次使用
【背景】一台J1900 4G+64G的小主机,安装了OP系统,里面自带了Docker。为实现Homeassistant(简称HA)控制智能家居设备,进行如下配置。
【参考】主要基于GPT生成的教程,并基于自己的测试,进行配置。如有特殊参考,会在文中备注。
【通用账号】:能修改的使用root,不能修改的一般为admin
在N5105机器上,安装了unraid,然后使用docker-compose将下面的docker全部安装
sudo chmod -R 777 hass-all/
cd /mnt/user/appdata/hass-all/mosquitto/config
touch mosquitto.conf
chmod 777 mosquitto.conf
nano mosquitto.conf
写入以下内容:
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
allow_anonymous true
listener 1883
version: '3'
services:
homeassistant:
container_name: homeassistant
image: homeassistant/home-assistant:stable
volumes:
- /mnt/user/appdata/hass-all/homeassistant:/config
environment:
- TZ=Asia/Shanghai
network_mode: host
restart: unless-stopped
depends_on:
- mosquitto
- mariadb
mosquitto:
container_name: mosquitto
image: eclipse-mosquitto:latest
volumes:
- /mnt/user/appdata/hass-all/mosquitto/config:/mosquitto/config
- /mnt/user/appdata/hass-all/mosquitto/data:/mosquitto/data
- /mnt/user/appdata/hass-all/mosquitto/log:/mosquitto/log
restart: always
ports:
- "1883:1883"
- "9001:9001"
mariadb:
container_name: mariadb
image: mariadb:latest
volumes:
- /mnt/user/appdata/hass-all/mariadb:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=homeassistant
- MYSQL_USER=root
- MYSQL_PASSWORD=password
restart: always
ports:
- "3306:3306"
nodered:
container_name: nodered
image: nodered/node-red:latest
volumes:
- /mnt/user/appdata/hass-all/nodered:/data
user: "node-red"
restart: always
ports:
- "1880:1880"
esphome:
container_name: esphome
image: esphome/esphome
volumes:
- /mnt/user/appdata/hass-all/esphome:/config
network_mode: host
restart: always
ports:
- "6052:6052"
- "6123:6123"
/mnt/user/appdata/hass-all/homeassistant/configuration.yaml
文件,加入如下内容,其中password和url自己修改recorder:
db_url: mysql://root:password@127.0.0.1/homeassistant?charset=utf8
panel_iframe:
nodered:
title: 'Node-Red'
icon: 'mdi:shuffle-variant'
#填写node-red的地址
url: 'http://192.168.10.149:1880/'
esphome:
title: 'ESPHome'
icon: 'mdi:car-esp'
#填写node-red的地址
url: 'http://192.168.10.149:6052/'
Portainer 是一个用于 Docker 容器管理的可视化界面工具。方便管理容器和卷。
docker volume create portainer_data
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
指令的解释:
-d:表示在后台模式运行容器。
-p 9000:9000:这将宿主机的 9000 端口映射到容器的 9000 端口。
–name portainer:为容器指定一个名称。
–restart always:确保容器在任何情况下都会重新启动。
-v /var/run/docker.sock:/var/run/docker.sock:这允许 Portainer 直接访问 Docker API。
-v portainer_data:/data:将前面创建的数据卷挂载到容器内。
完成上述步骤后,你可以通过浏览器访问 http://<你的服务器IP>:9000 来使用 Portainer 界面进行 Docker 容器的管理。
要在 Docker 中安装 Home Assistant,你可以使用官方的 Home Assistant Docker 映像。
docker volume create homeassistant_data
docker run -d --name="home-assistant" -v homeassistant_data:/config -e "TZ=Asia/Shanghai" --net=host homeassistant/home-assistant:stable
指令的解释:
-d:表示在后台模式运行容器。
–name=“home-assistant”:为容器指定一个名称。
-v homeassistant_data:/config:将前面创建的数据卷挂载到容器内,用于存储 Home Assistant 的配置。
-e “TZ=Asia/Shanghai”:设置时区为上海 (你可以根据需要修改为其他时区)。
–net=host:这允许 Home Assistant 使用宿主机的网络,有助于自动发现和控制本地网络上的设备。
homeassistant/home-assistant:stable:使用稳定版的 Home Assistant 映像。
完成上述步骤后,你应该可以通过浏览器访问 http://<你的服务器IP>:8123 来访问 Home Assistant 的界面,并进行初始设置。
对于 MQTT 服务器,经常推荐使用的是 Eclipse Mosquitto。Mosquitto 是一个开源的 MQTT 代理,非常轻量级且可靠,可以很好地与 Home Assistant 和 Node-RED 配合使用。
额外参考:https://zhuanlan.zhihu.com/p/452896841
docker volume create mosquitto_config
docker volume create mosquitto_data
docker volume create mosquitto_log
mosquitto_config
下创建文件mosquitto.conf
,特别注意,由于使用docker volume创建,应该是在mosquitto_config的_data文件夹下。实际路径如下:cd /opt/docker/volumes/mosquitto_config/_data
touch mosquitto.conf
chmod 755 mosquitto.conf # 需要给权限,因为容器可能要读写
nano mosquitto.conf
写入以下内容:
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
allow_anonymous true
listener 1883
docker run -d \
--name mosquitto \
--privileged \
-p 1883:1883 \
-p 9001:9001 \
-v mosquitto_config:/mosquitto/config \
-v mosquitto_data:/mosquitto/data \
-v mosquitto_log:/mosquitto/log \
--restart always \
eclipse-mosquitto
Home Assistant 默认使用 SQLite 数据库,但在大型设置或长时间使用后,使用 MariaDB 或 PostgreSQL 可能更高效。
为了长时间运行的稳定,那还是设置吧
docker volume create mariadb_data
docker run -d \
--name mariadb \
--privileged \
--restart always \
-e MYSQL_ROOT_PASSWORD=password \
-e MYSQL_DATABASE=homeassistant \
-e MYSQL_USER=root \
-e MYSQL_PASSWORD=password \
-v mariadb_data:/var/lib/mysql \
-p 3306:3306 \
mariadb:latest
recorder:
db_url: mysql://root:password@127.0.0.1/homeassistant?charset=utf8
Node-RED 是一个基于流的开发工具,用于连接硬件设备、API 和在线服务。
docker volume create nodered_data
docker run -d --name nodered -p 1880:1880 -v nodered_data:/data --user node-red --restart always nodered/node-red:latest
指令的解释:
-d: 表示在后台模式运行容器。
–name nodered: 为容器指定一个名称。
-p 1880:1880: 这将宿主机的 1880 端口映射到容器的 1880 端口。
-v nodered_data:/data: 将前面创建的数据卷挂载到容器内,用于存储 Node-RED 的配置。
–user node-red: 以 node-red 用户身份运行 Node-RED,增加安全性。
–restart always: 确保容器在任何情况下都会重新启动。
nodered/node-red:latest: 使用最新版本的 Node-RED Docker 映像。
完成上述步骤后,你应该可以通过浏览器访问 http://<你的服务器IP>:1880 来访问 Node-RED 的界面并开始构建你的流。
ESPHome 是一个很好的选择,尤其是如果你计划使用 ESP8266 或 ESP32 微控制器来扩展你的 Home Assistant 设置。
docker volume create esphome_data
docker run -d \
--privileged \
--net=host \
--name esphome \
-p 6052:6052 \
-v esphome_data:/config \
--restart always \
esphome/esphome
完成上述步骤后,你应该可以通过浏览器访问 http://<你的服务器IP>:6052 来访问 ESPHome 的界面,并开始创建和管理你的设备配置。
必须使用host和privileged ,否则esphome无法发现设备。
Duplicati 是一个备份软件,用于存储加密的、增量的、压缩的备份到云或本地存储。下面是在 Docker 中安装 Duplicati 的步骤:
docker volume create duplicati_backups
docker volume create duplicati_config
docker volume create duplicati_data
docker run -d \
--name duplicati \
-p 8200:8200 \
-v duplicati_backups:/backups \
-v duplicati_config:/config \
-v duplicati_data:/data \
-v /opt/docker/volumes:/source:ro \
--restart unless-stopped \
duplicati/duplicati
参考官方:https://hacs.xyz/docs/setup/download/,使用container的教程
wget -O - https://get.hacs.xyz | bash -
panel_iframe:
nodered:
title: 'Node-Red'
icon: 'mdi:shuffle-variant'
#填写node-red的地址
url: 'http://192.168.5.1:1880/'
esphome:
title: 'ESPHome'
icon: 'mdi:car-esp'
#填写node-red的地址
url: 'http://192.168.5.1:6052/'
HA添加集成MQTT,并配置如下:
进行测试
使用MQTT发布一个传感器给HA的教程,请参考另外一个博客。
可以在主页显示好看的时序数据,比如温湿度、流量、等等
HACS搜索并安装
添加如下卡片:
手动添加卡片到资源中
可能会出现卡片无法检索到,需要手动添加。
首先在HACS的该卡片,打开源获得该卡片路径:http://192.168.5.1:8123/hacsfiles/mini-graph-card/mini-graph-card-bundle.js
其次,在配置-仪表盘-资源(右上角选择),添加如下资源。可以看到,这里还包括的彩云天气得到资源
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。