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

打开hass

检查

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    #导入镜像

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 -

下载2.0.1

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

api访问

用户 ->安全标签->长期访问令牌

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

Thonny菜单.运行.配置解释器.选micropython解释器.安装和更新micropython
选串口和文件(*.factory.bin).安装

模拟器 https://wokwi.com/projects/305568836183130690

传感器外设

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需要程序配置启用)

Emoji