hass工控
home assistant 部署方式
-
haos
-
容器Container
-
Supervised (建议)
(用haos占内存少)
涂鸦是垃圾

下载地址 https://github.com/home-assistant/operating-system/releases
https://www.home-assistant.io/installation/linux#home-assistant-os
下载 haos_generic-aarch64-14.0.qcow2.xz 解压后导入kvm/pve虚拟机运行
虚拟机部署
haos_ova-16.3.qcow2.xz
qm create 109 \
--name "haos16" \
--memory 4096 \
--cores 2 \
--sockets 1 \
--cpu host \
--machine q35 \
--bios ovmf \
--net0 virtio,bridge=vmbr0
qm importdisk 100 haos_ova-16.3.qcow2 local-lvm --format=qcow2
空机 ,也需要动态部署容器(约20分钟)
haos终端
haos需要uefi方式启动
host info
network info
host shutdown
Web Terminal 附加件
修改IP
login #进入终端
nano /etc/NetworkManager/NetworkManager.conf # 配置管理的网卡
ls -l /etc/NetworkManager/system-connections/*.nmconnection #配置网卡的IP设置
nmcli dev status # NetworkManager 命令行工具
nmcli con show #查看网口
nmcli dev #查看网口
空配置
nmcli con add type ethernet ifname enp6s18 con-name static-enp6s18 ipv4.addresses 192.168.11.118/24 ipv4.gateway 192.168.11.111 ipv4.dns 114.114.114.114 ipv4.method manual
排除故障
nmcli con delete static-enp6s18
nmcli device set enp6s18 managed yes
nmcli con modify static-enp6s18 connection.interface-name enp6s18
nmcli con up static-enp6s18
配置
nmcli con edit "Supervisor enp0s18"
print ipv4
set ipv4.dns 8.8.8.8
set ipv4.addresses 192.168.11.221/24
set ipv4.gateway 192.168.11.1
save
quit
在 /etc/NetworkManager/system-connections/ 下生成配置文件
生效
systemctl restart NetworkManager #重启系统生效
systemctl disable systemd-networkd #免得互相抢网卡
systemctl enable NetworkManager #重启系统生效
注解掉 /etc/network/interfaces #内网卡占用
ping 192.168.11.1
fping -lt 1000 192.168.11.1
http://192.168.11.221:8123/
Supervisor部署
可以lxc容器部署 (不可以pve设置网络)
pct create 2727 /var/lib/vz/template/cache/debian-12-standard_12.12-1_amd64.tar.zst \
--arch amd64 --hostname lxc-debian12 --rootfs local-lvm:15 --memory 2048 --swap 0 \
--cores 4 --ostype debian --unprivileged 0 --net0 bridge=vmbr0,name=eth0 \
--features nesting=1,keyctl=1
pct config 2727 | grep rootfs # local-lvm:vm-2727-disk-0
mkdir -p /mnt/lxc2727
mount /dev/pve/vm-2727-disk-0 /mnt/lxc2727
chroot /mnt/lxc2727 /bin/bash
passwd
umount /mnt/lxc2727
错误
/proc/sys/kernel/dmesg_restrict: Read-only file system
nano /etc/pve/lxc/2727.conf
pct start 2727
pct stop 2727
lxc.cap.drop:
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.auto: proc:rw
lxc.mount.auto: proc:rw sys:rw cgroup:rw
lxc.cgroup2.devices.allow: c 188:* rwm
lxc.cgroup2.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
lxc.cgroup2.devices.allow: c 10:200 rwm
安装debian12
关键是安装
docker 和 os-agent 和 network-manager
haio 必须使用debian12 不可以lxc容器部署
不建议装 portainer 管理docker
systemctl set-default multi-user.target
systemctl isolate multi-user.target
systemctl get-default
timedatectl set-timezone Asia/Shanghai
hostname --ip-address
ip link set eth0 up
ip addr add 192.168.186.199/24 dev eth0
ip route add 0.0.0.0/0 via 192.168.186.1
echo "nameserver 8.8.8.8" > /etc/resolv.conf
cp /etc/apt/sources.list /etc/apt/sources.list~
sed -i 's|deb.debian.org/debian|mirrors.tuna.tsinghua.edu.cn/debian|g' /etc/apt/sources.list
apt update && apt install network-manager
apt install apparmor apparmor-utils cifs-utils wget curl dbus jq libglib2.0-bin \
lsb-release network-manager nfs-common systemd-journal-remote \
udisks2 dbus software-properties-common -y
装docker
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian $(lsb_release -cs) stable"
apt install docker-ce docker-compose
sup实现包
- os-agent 与主机系统通信
- homeassistant-supervised 协调docker安装其他服务
安装 os-agent
https://github.com/home-assistant/os-agent/releases/latest #下载deb包
wget https://github.com/home-assistant/os-agent/releases/download/1.6.0/os-agent_1.6.0_linux_x86_64.deb
dpkg -i os-agent_1.6.0_linux_x86_64.deb
gdbus introspect --system --dest io.hass.os --object-path /io/hass/os #检查安装成功与否
安装 homeassistant-supervised
vi /etc/docker/daemon.json
wget https://github.com/home-assistant/supervised-installer/releases/download/1.5.0/homeassistant-supervised.deb -O /mnt/homeassistant-supervised.deb
chmod 777 /mnt/homeassistant-supervised.deb
apt install /mnt/homeassistant-supervised.deb #自动安装器
systemctl status hassio-supervisor #开始部署docker应用
timedatectl
ss -ln |grep :8123 #landingpage
curl 127.0.0.1:8123 -v
检查
aa-status
ha supervisor info | grep healthy
ha jobs options --ignore-conditions healthy # 忽略健康检查
ha jobs options --ignore-conditions none # 恢复
nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="splash verbose apparmor=1 security=apparmor"
update-grub
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=boot
查看启动项
lsblk -f
efibootmgr --create --disk /dev/sda --part 1 --label "haos" --loader "\EFI\DEBIAN\GRUBX64.EFI"
efibootmgr --create --disk /dev/sda --part 1 --label "deb12" --loader "\EFI\DEBIAN\SHIMX64.EFI"
efibootmgr -v
设置IP
关闭默认网卡管理器 ,使用 NetworkManager
systemctl stop systemd-networkd
systemctl disable systemd-networkd
systemctl status systemd-networkd
systemctl mask systemd-networkd
systemctl restart networking.service
systemctl enable NetworkManager --now
nmcli con show
nmcli d #查看网卡 被识别的网卡
eth0 ethernet connected (externally) eth0
lo loopback connected (externally) lo
网卡会被修改成 "Supervisor ens18"
nmcli con show
nmcli connection up "Wired connection 1" ifname eth0
nmcli connection up "Supervisor eht0" ifname eth0
nmcli d #查看网卡 被识别的网卡
nmcli con modify "Supervisor ens18" +ipv4.addresses 192.168.11.118/24
nmcli con modify "Supervisor ens18" +ipv4.dns 8.8.8.8
nmcli con show "Supervisor enp0s18"
nmcli con down "Supervisor enp0s18"
nmcli con up "Supervisor enp0s18"
快速备份镜像
ghcr.io/home-assistant/amd64-hassio-supervisor:2025.11.4 2c97271fbcdc 445MB 0B U
ghcr.io/home-assistant/amd64-hassio-supervisor:latest 2c97271fbcdc 445MB 0B U
ghcr.io/home-assistant/qemux86-64-homeassistant:2025.11.3 82efeef0f409 2.09GB 0B U
docker save -o ~/qemux86-64-homeassistant.tar ghcr.io/home-assistant/qemux86-64-homeassistant:2025.11.3
docker save -o ~/amd64-hassio-supervisor.tar ghcr.io/home-assistant/amd64-hassio-supervisor:latest
scp ./*.tar root@10.86.25.7:/root/
docker load -i ~/qemux86-64-homeassistant.tar #导入镜像
docker load -i ~/amd64-hassio-supervisor.tar #导入镜像
docker 平替
hen套装
version: "3.6"
services:
homeassistant:
image: ghcr.io/home-assistant/home-assistant:stable
container_name: homeassistant
cap_add:
- NET_ADMIN
- NET_RAW
network_mode: host
privileged: true
restart: always
volumes:
- ./homeassistant/config:/config
- /etc/localtime:/etc/localtime:ro
- /run/dbus:/run/dbus:ro
environment:
- TZ=Asia/Shanghai
emqx:
image: emqx/emqx:5.6.1
container_name: emqx
network_mode: host
restart: always
environment:
- EMQX_NODE_NAME=emqx@127.0.0.1
- EMQX_ALLOW_ANONYMOUS=true
- TZ=Asia/Shanghai
volumes:
- ./emqx/data:/opt/emqx/data
- ./emqx/log:/opt/emqx/log
nodered:
image: nodered/node-red:latest-20
container_name: nodered
network_mode: host
user: "0:0"
restart: always
environment:
- TZ=Asia/Shanghai
volumes:
- ./nodered/data:/data
| 服务 | 默认端口 | 访问地址 |
|---|---|---|
| Home Assistant | 8123 | http://宿主机IP:8123 |
| EMQX Dashboard | 18083 | http://宿主机IP:18083 (public) |
| MQTT | 1883 | tcp://宿主机IP:1883 |
| Node-RED | 1880 | http://宿主机IP:1880 |
emqx ctl admins passwd admin 123456 #修改密码
ha命令
ha network update --ipv4-method static --ipv4-address 192.168.186.190/24 --ipv4-gateway 192.168.186.1 --dns 8.8.8.8
ha network info #查看网卡
ha info
ha addons install core_ssh # Terminal & SSH
总配置文件
/config/configuration.yaml
HACS商店
在线装
wget -O - https://get.hacs.xyz | bash -
docker exec -it hass /bin/bash
mkdir -p www
mkdir -p custom_components/hacs
unzip hacs.zip -d /opt/hass/config/custom_components/hacs
开发者工具.重启
配置.设备与服务
输入 hacs
git 设备认证
加载项
本质是docker服务 需要魔法环境很多安装 需要访问 registry-1.docker.io,可以借助旁路由
常用加载项
- nodered #-- 需要ssl证书或 在配置 标签页中禁用
- ghcr.io/hassio-addons/node-red/amd64:20.2.3
- ssh ( 系统终端 ) Advanced SSH & Web Terminal #-- 需要配置 在配置 标签页设置密码
- ghcr.io/hassio-addons/ssh/amd64:22.0.3
- Samba share
- homeassistant/amd64-addon-samba:12.5.4
- mqtt
- homeassistant/amd64-addon-mosquitto:6.5.2
- Grafana
- ghcr.io/hassio-addons/grafana/amd64:12.1.0
- emqx *
开启高级模式
用户设置 -> 高级模式
设置->右上角三个点.重启ha
Mosquitto网关
Mosquitto broker
配置.加载项.Mosquitto
加载项+集成都有 mqtt相关
设置中Logins
- username: umqtt
password: passwd
-
File editor
-
Terminal & SSH
samba
设置用户名,密码
Node-RED
配置中设置账号密码,再启动
配置 . 设置 ssl为否
模块 home assistant entities + 模块 home assistant
添加集成
安装官方小米
搜索 xiaomi home
hacs商店
安装商店
curl -fsSL get.hacs.vip | bash
重启后去集成中添加hacs商店
智能流程
小米
集成中搜索 xiaomi home
会装到smb//xxx/config/custom_components
Xiaomi Home设备列表变化 进入集成->点开小米-》 配置选项(齿轮)-》 勾选:更新设备列表 ->下一步
ha节点
events:all #所有事件
evenet:state #状态改变
poll state #轮询
action #执行开关
action(控制动作)
- 动作:light.toggle
- target: 设备id
Node-RED Companion
在hacs商店集成 Release v3.1.7
hacs->Node-RED Companion 功能 打通hass与nodeRed
推送
let 输入消息 = '空'//msg.payload
msg.url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4485185b-9a03-42ad-8c69-a5dbb9e69fa0"
msg.method = "POST"
msg.headers = {"Content-Type":"application/json"}
// ----发送
msg.payload= {
"msgtype": "text",
"text": {
"content": 输入消息
}
}
return msg;
通过企微群机器人
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4485185b-9a03-42ad-8c69-a5dbb9e69fa0
例如 post请求发信息到群里
企业名称
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=85e2e0b2-7393-4ef7-bc17-775e691c55ae
MQTT集成
需要配置 连接上加载项上的Mosquitto broker服务
MQTT 设置->重新配置 MQTT (一般默认即可监听收到消息)
代理 127.0.0.1
端口 1883
用户名 umqtt
密码 passwd
mqtt
apt install mosquitto-clients
#//当前连接数
mosquitto_sub -h mqtt02.oq.17121.top -p 1883 -u mqtt -P pass -v -t \$SYS/broker/clients/connected
mosquitto_sub -h mqtt02.oq.17121.top -p 1883 -u mqtt -P pass -v -t \$SYS/broker/subscriptions/count
访问token
用户 ->安全标签->长期访问令牌
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIzMzRiYmMwMDc2YTc0M2MxYjY4MTU5NWYyZjNiZWQ3YyIsImlhdCI6MTc2NDU3NzI4OCwiZXhwIjoyMDc5OTM3Mjg4fQ.QMlFDnr-nlzrK6CBUmoMzcVequNsyM5KTQw7TJpSbDY
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJiYjBkNDE1OTdjMzM0NDljOGE4YWI2OWVkYmFkODBiZiIsImlhdCI6MTc2NDU3Nzc5MSwiZXhwIjoyMDc5OTM3NzkxfQ.lF8q3qzQbry3bg0q9wyZle936nxypCP4v2E4CBCxl28
curl --location --request GET 'http://z4home.17121.top:8123/api/states/sensor.iot_cn_848825902_pw6u1_electric_power_p_3_2' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJiYjBkNDE1OTdjMzM0NDljOGE4YWI2OWVkYmFkODBiZiIsImlhdCI6MTc2NDU3Nzc5MSwiZXhwIjoyMDc5OTM3NzkxfQ.lF8q3qzQbry3bg0q9wyZle936nxypCP4v2E4CBCxl28' \
--header 'Content-Type: application/json' \
--data-raw ''
ESP
ESPHome
ha内构建.烧入到设备.集成中添加
通过 ip:6053管理
加入mqtt
mqtt web客户端
# MQTT 配置
mqtt:
broker: 192.168.11.221
port: 1883
username: mqtt
password: passwd
discovery: true
discovery_prefix: homeassistant
在集成mqtt模块中发现实体
编译参数
# GPIO2 LED 配置
light:
- platform: monochromatic
name: "Board LED"
output: led_output
output:
- platform: ledc
pin: GPIO2
id: led_output
frequency: 1000 Hz
二次可用ota云升级
写入固件
建议web方式写入
下载bin
到: https://web.esphome.io/
选中文件
开始 Erasing 擦写
连入wifi设置 192.168.4.1
tasmota固件
tasmota + node-red
通过web https://tasmota.github.io/install/
写入bin文件
终端开启发现
setOption19 0
设置功能
设置.模块.GPIO02=Relay #//即开关
分类型
| 固件名称 | 适用场景 |
|---|---|
tasmota32.bin | 通用版本,适用于大多数 ESP32 开发板,提供基本 WiFi 和 MQTT 功能。 |
tasmota32-sensors.bin | 包含更多传感器支持(如温湿度、光照、气体传感器等),适合需要额外传感器集成的应用。 |
tasmota32-bluetooth.bin | 添加了蓝牙支持(BLE),适用于需要蓝牙功能的场景。 |
tasmota32-knx.bin | 支持 KNX 协议,适合特定智能家居系统的需求。 |
tasmota32-display.bin | 包含显示屏支持(如 OLED、TFT 显示屏),适用于带屏幕的项目。 |
编译环境
https://tasmota.github.io/docs/Gitpod/
Master Release: https://gitpod.io#https://github.com/arendst/Tasmota/tree/master
micropython
设备最好是被动的,mqtt来激发
pip install jupyter_micropython_kernel
python -m jupyter_micropython_kernel.install
jupyter kernelspec list
在jupyter中
%serialconnect --port=COM9
%sendtofile /main5.py #创建空文件
%sendtofile --binary --source image.jpg /image3.jpg #上传文件
%sendtofile --binary --source cfg.json cfg.json #上传文件
%fetchfile --print cfg.json #查看/下载文件
%ls #查看文件
os.remove('image3.jpg') #删除文件
%rebootdevice #重启 machine.reset()
%lsmagic #查看所有命令
Thonny 部署micropython
Thonny菜单. 运行. 配置“解释器”. 选micropython解释器. 安装和更新micropython
flash mode =
选串口和文件(*.factory.bin).安装
http://www.micropython.org/download/ 下载bin文件
pip install esptool
cd /d C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Scripts
esptool --port com9 erase_flash
esptool v5.1.0
Connected to ESP32-C3 on COM9:
Chip type: ESP32-C3 (QFN32) (revision v0.4)
Features: Wi-Fi, BT 5 (LE), Single Core, 160MHz
Crystal frequency: 40MHz
USB mode: USB-Serial/JTAG
MAC: 48:f6:ee:5a:9e:dc
esptool --port com9 erase_flash
#按住boot键 插入usb
esptool --port com9 write_flash 0 C:\ESP32_GENERIC_C3-20250809-v1.26.0.bin
模拟器 https://wokwi.com/projects/305568836183130690
嘟嘟时钟
7根线SPI 10pin tft屏幕240x320驱动ST7789
VCC, SDA, CS, DC, SCL, RES, GND
3 7 4 2 5 MOSI == SDA引脚
tft_mosi = gpio_3
tft_sclk = gpio_2
tft_sc = gpio_7
tft_dc = gpio_4
tft_rst = gpio_5
带ST7789固件
C:\st7789_mpy-master.zip\st7789_mpy-master\firmware\GENERIC_C3_USB\firmware.bin
pip install adafruit-ampy
上传自动覆盖文件
ampy --port COM9 put cfg.json
技术路线
-
tft支持 jpg 数据直接显示
-
通过http请求 到node-red 的 /image/display-tft.jpg?u=124
-
node-red请求json的api获取base64的图片转二进制图片
-
mqtt只支持小数量发送
传感器外设
G -- GND ; 接地
V -- VCC ; 供电
S -- I/O口 信号
opc-ua网关
python-opcua
node-red-contrib-opcua
本地访问
播放声音
apt install alsa-utils alsa-tools -y
aplay -l
arecord -l
cat /proc/asound/cards
lsmod | grep snd
lspci -nn | grep Audio
ls -l /dev/snd/*
fuser --all --verbose /dev/snd/*
speaker-test -c 8
apt install mopidy-mpd mopidy-http
version: '3.8'
services:
mopidy:
image: mopidy/mopidy:latest
container_name: mopidy
volumes:
- ./config:/var/lib/mopidy/config
- ./media:/var/lib/mopidy/media
- ./data:/var/lib/mopidy/cache
ports:
- "6680:6680" # Web 界面端口
- "6600:6600" # MPD 端口
environment:
- PULSE_SERVER=unix:/run/user/1000/pulse/native
restart: always
重置密码
ha authentication reset --username "JohnDoe" --password "123SuperSecret!"
ESP32-S3-cam开发板跟ESP32-S3核心板资料包
链接:https://pan.baidu.com/s/1Vid5yvQBuNgaCaKLUE0yEA
提取码:Qj97
micropython教程:https://blog.csdn.net/m0_60853221/article/details/143649019
扩展板资料:https://pan.baidu.com/s/1YjGtnvHj3FrLQnUXJPRyxg?pwd=64N1
提取码:64N1
最丝滑的AI实时语音 听声辨人 多人互动 (开源ESP32)
https://www.bilibili.com/video/BV1G4pweCERX
ESP32-S3-WROOM-1-N16R8 内置sram512K,内置ROM384K,模组外挂16M字节的SPI Flash,外挂8M psram(psram需要程序配置启用)