✔참고 사이트:
https://github.com/home-assistant/supervised-installer
https://docs.jethome.ru/en/controllers/linux/howto/zigbee2mqtt.html
https://www.zigbee2mqtt.io/guide/configuration/homeassistant.html
https://www.zigbee2mqtt.io/guide/usage/integrations/home_assistant.html
https://rayblog.tistory.com/m/207
✔사용한 장비:
Raspberry Pi 4 Model B 4GB RAM / OS: Raspberry Pi OS Lite-Debian 12 (bookworm)
SONOFF Zigbee 3.0 USB Dongle Plus V2 / SoC: EFR32MG21
✔HASS: Home ASSistant
------------------------------------------------------------------------------
1.Home Assistant 종류
Home Assistant Core: 기본 기능만 탑재
Home Assistant Supervised: Core에 Add-On 기능 추가
------------------------------------------------------------------------------
2.종속 패키지 설치
apt -y install \
apparmor \
bluez \
cifs-utils \
curl \
dbus \
jq \
libglib2.0-bin \
lsb-release \
network-manager \
nfs-common \
systemd-journal-remote \
systemd-resolved \
udisks2 \
wget \
network-manager
apt --fix-broken install
------------------------------------------------------------------------------
3.Netplan을 제거하고 Network Manager 활성화
# Network Manager 설치 후 netplan 비활성화
apt -y install network-manager
systemctl enable NetworkManager
mv /etc/netplan/10-dhcp-all-interfaces.yaml /etc/netplan/10-dhcp-all-interfaces.yaml.orig
mv /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.orig
touch /etc/NetworkManager/conf.d/10-globally-managed-devices.conf
netplan apply ; reboot
# netplan 삭제
apt -y remove --purge netplan.io
------------------------------------------------------------------------------
4.네임서버 설정
resolvectl status
※Current DNS Server: 8.8.8.8 과 같은 줄이 보이면 정상
cat /run/systemd/resolve/resolv.conf
systemctl enable systemd-resolved.service
# DNS 항목을 수정한다.
vi /etc/systemd/resolved.conf
DNS=168.126.63.1 219.250.36.130
systemctl restart systemd-resolved.service
------------------------------------------------------------------------------
5.Network Manager 네트워크 설정
# Delete Connection
nmcli connection delete id "wired_conn_1"
# DHCP
nmcli con add con-name "wired_conn_1" ifname eth0 type ethernet autoconnect yes
# Static
nmcli con add con-name "wired_conn_1" \
ifname eth0 type ethernet \
ipv4.address 192.168.1.50/24 ipv4.gateway 192.168.1.1 \
connection.autoconnect true ipv4.method manual
nmcli con mod "wired_conn_1" ipv4.dns "168.126.63.1"
nmcli con mod "wired_conn_1" +ipv4.dns "219.250.36.130"
# 설정 확인
nmcli device
nmcli con show
nmcli con show "wired_conn_1"
# 설정 파일 확인
cat /etc/NetworkManager/system-connections/wired_conn_1.nmconnection
# 적용
nmcli con reload
nmcli con up "wired_conn_1"
------------------------------------------------------------------------------
6.cgroup v2 다운그레이드 및 AppArmor 활성화
# Home Assistant Supervised는 cgroup v1을 사용하나 기본적으로 v2가 설치되어 있음.
# 현재 cgorup 버전 확인
findmnt -lo source,target,fstype,options -t cgroup,cgroup2
# cgorup v2 사용안함 설정
sed -i -e "1 s/$/ systemd.unified_cgroup_hierarchy=0/" /boot/firmware/cmdline.txt
# Enable AppArmor
sed -i -e "1 s/$/ apparmor=1 security=apparmor/" /boot/firmware/cmdline.txt
# 적용
reboot
※Armbian
vi /boot/armbianEnv.txt
아래 구문을 armbianEnv.txt 최하단에 추가한다.
extraargs=systemd.unified_cgroup_hierarchy=0
------------------------------------------------------------------------------
7.AppArmor 설치
※RaspberryPi OS
apt install -y apparmor apparmor-utils
systemctl enable apparmor.service
aa-status
------------------------------------------------------------------------------
8.docker CE 설치
curl -fsSL get.docker.com | sh
systemctl enable docker.service
------------------------------------------------------------------------------
9.os-agent 설치
Home Assistant OS Agent는 Home Assistant Supervisor가 호스트 운영 체제와 통신할 수 있도록 한다.
# 아래 사이트를 방문하여 최신버전 확인
https://github.com/home-assistant/os-agent/releases
# 위에서 확인한 최신 버전을 명시
export OS_AGENT_VER="1.6.0"
# 다운로드 후 설치
wget -O os-agent_linux.deb https://github.com/home-assistant/os-agent/releases/download/${OS_AGENT_VER}/os-agent_${OS_AGENT_VER}_linux_`uname -m`.deb
dpkg -i os-agent_linux.deb
# 정상 설치 확인 (오류가 없으면 정상 설치)
gdbus introspect --system --dest io.hass.os --object-path /io/hass/os
------------------------------------------------------------------------------
10.Home Assistant Supervised 설치
# OS 검사 무시
export BYPASS_OS_CHECK=true
# 권한 이슈를 피하기 위해 별도의 디렉토리를 만들고 거기서 작업
mkdir /work
chmod 755 /work
cd /work
# homeassistant-supervised.deb 다운로드
wget -O homeassistant-supervised.deb https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb
# 설치 준비
mkdir /usr/share/hassio
chown -R nobody:nogroup /usr/share/hassio
chown _apt:nogroup ./homeassistant-supervised.deb
# Home Assistant 데이터 디렉토리 설정
export DATA_SHARE=/usr/share/hassio
# 설치
apt install ./homeassistant-supervised.deb -y
※중간에 보드 종류를 물어보는데 orangepi zero2는 raspberrypi3-64 선택
# 기다림...
ghcr.io 사이트의 트래픽 문제로 여러번의 재시도가 이루어지므로 설치가 끝날때까지 30~60분 정도 모니터링 하며 기다린다.
# 데이터 디렉토리 심볼릭 링크 처리
ln -s /usr/share/hassio/homeassistant ${HOME}/.homeassistant
------------------------------------------------------------------------------
11.설치 현황 모니터링
① docker로 로그 모니터링
docker logs -f hassio_supervisor
② 웹브라우저에서 설치 현황 모니터링
http://192.168.1.50:4357/
③ docker ps로 현재 설치현황 확인 (아래의 7개 컨테이너가 올라와야 한다)
docker ps --format "table {{.ID}}\t{{.Names}}"
hassio_audio
hassio_cli
hassio_dns
hassio_multicast
hassio_observer
hassio_supervisor
homeassistant
------------------------------------------------------------------------------
12.오류 처리
‼외부 도메인을 찾을 수 없다는 오류가 발생하면 아래 구문 실행
ha dns options --servers dns://168.126.63.1
ha dns restart
‼설치가 실패할 경우 아래를 차례로 실행하고 homeassistant-supervised.deb 설치부터 다시 진행
systemctl stop docker.service
rm -rf /var/lib/docker
apt remove --purge homeassistant-supervised -y
dpkg --remove --force-remove-reinstreq homeassistant-supervised
systemctl start docker.service
------------------------------------------------------------------------------
13.접속 확인
아래 주소에 접속하여 정상 설치를 확인하고 진행중미면 완료될 때까지 기다린다.
http://192.168.1.50:8123/
------------------------------------------------------------------------------
14.설정 변경 (필요한 경우만 실행!!)
# 기본 설정 디렉토리는 /usr/share/hassio 이며 아래의 절차로 변경할 수 있다.
mkdir /usr/share/hassio
DATA_SHARE=/usr/share/hassio dpkg --force-confdef --force-confold -i homeassistant-supervised.deb
------------------------------------------------------------------------------
15. MQTT 구성
⑴ Mosquitto broker의 사용자를 만들기 위해
설정 > 구성원 > 우측 하단 +구성원 추가하기: 아래 사용자를 추가
아이디: _mqttbroker
비밀번호: kQ#9JOdt29
⑵ Mosquitto broker 설치
설정 > 애드온 > 우측 하단에 애드온 스토어로 이동
Mosquitto broker를 검색하여 설치
설정 > 애드온 > Mosquitto broker > 상단 구성 탭 (Logins 항목을 아래와 같이 수정)
Logins
-----
[{"username": "_mqttbroker", "password": "kQ#9JOdt29"}]
-----
※필요한 경우 https://onlineyamltools.com/convert-yaml-to-json 에서 YAML→JSON 변환하여 입력
⑶ Zigbee2MQTT 설치
설정 > 애드온 > 우측 하단에 애드온 스토어로 이동
우측 상단에 ... > 저장소 > 저장소 추가하기 란에 아래 주소를 입력
https://github.com/zigbee2mqtt/hassio-zigbee2mqtt
> 추가하기 클릭 후 홈화면으로 이동
설정 > 애드온 > Zigbee2MQTT를 검색하여 설치
⑷ Zigbee2MQTT 설정
설정 > 애드온 > Zigbee2MQTT > 상단 구성 탭 (serial 항목을 아래와 같이 수정)
serial
-----
{
"port": "/dev/ttyUSB0",
"adapter": "ember",
"rtscts": false
}
-----
사이드바에 표시하기: On
⑸ 서비스 시작하기
설정 > 애드온 > Zigbee2MQTT > 상단 정보 탭 > 시작하기
설정 > 애드온 > Mosquitto broker > 상단 정보 탭 > 시작하기
------------------------------------------------------------------------------
16.MQTT 서비스 추가
설정 > 기기 및 서비스 > 우측 하단 "+통합구성요소 추가하기" > "MQTT" 추가
"Use the official Mosquitto Mqtt Broker add-on >" 선택
------------------------------------------------------------------------------
17.HACS(Home Assistant Community Store) 추가
⑴ docker shell에서 HACS 설치
docker exec -it homeassistant bash
cd /tmp
wget -O - https://get.hacs.xyz | bash -
exit
⑵ 설정 > 시스템 > 우측 상단 전원버튼를 클릭하여 HASS 재 시작
⑶ 설정 > 기기 및 서비스 > 우측 하단 "+통합구성요소 추가하기" > "HACS" 추가
Before you can setup HACS you need to acknowledge the following
... 모두 체크 후 진행
Waiting for device activation...
Open https://github.com/login/device
Paste the following key to authorize HACS:
8DB9-3950
위와 같은 메세지가 뜨면 github에 로그인 후 아래에 명시된 HACS 디바이스 인증코드(8DB9-3950)를 입력하여 인증한다.
⑶ 설치 확인
좌측 메뉴에 HACS가 표시되면 설치 완료.