Sympapaのスマートホーム日記

スマートなんとかはスマートじゃない方法でつくられている

Home Assistant: Raspberry Pi OS (64bit)にHome Assistant Supervisedをインストールする

Sympapaです。
Home AssistantをRaspberry PIにインストールしたい場合4つのインストール方法が用意されています。


もっとも簡単なインストール方法は、OSにHome Assistant OSを使用する方法です。
イメージをSDカードに焼くだけでHome Assistant環境が構築出来るので初心者でも迷うことなくインストールできますし、私もこの方法でインストールしてHome Assistantを使っています。
デメリットはOSがHome Assistantを動かすことに特化しているのでRaspberry PIがHome Assistant専用になってしまうことです。私の場合、Raspberry PIはホームオートメーション用途でしか使っていないのですが、Home Assistant以外のNode.JSやDocker上で動くホームオートメーション用スクリプトもたくさん公開されているのでこれらを動かせないのはデメリットになります。


2番目に簡単な方法としてはHome Assistant Containerがあります。
しかしSuperviserがインストールされないのでアドオンが使用できなかったりバックアップができない問題があります。(たぶん)


3番目と4番目のインストール方法は"Home Assistant Supervised"と”Home Assistant Core"です。
"Home Assistant Supervised"であればアドオンも使えますが、これらは「経験豊富なユーザーが利用できる手動のインストール方法」とされています。


先日、Home Assistantを稼働させるRaspberry PIの予備として2台目のRaspberry PI 4を手に入れたのでこれに"Raspberry PI OS (64bit)"をインストールし、経験豊富とは程遠い私がHome Assistant Supervisedのインストールにトライしてみました。
ネット上にいくつかインストールガイドがあって簡単そうに思えたのですが、結果的には結構ドハマりしたので備忘録を兼ねて手順を書いておこうと思います。

■OSのインストール

Windows版のRaspberry Pi imagerを使ってmicro SDカードに”Raspberry Pi OS (64bit)"をインストールしました。


ここの手順は超簡単なので割愛します。
www.raspberrypi.com


インストールが完了したらRaspberry Piにmicro SDカードを挿してマウス、キーボードを繋ぎ、電源を繋いで起動したらネットワークのセットアップをします。

■Home Assistant Supervisedのインストール

後で参考にしたいくつかのインストールガイドが書かれたページを書きたいと思いますが、どれも手順どおりにやってもうまくいかず複数のガイドの折衷でなんとかうまくいったので、その手順を書いておきます。が、私自身理解できていない部分も多いのでとんちんかんなことを書いていたら許してやってください(汗
尚、今回書く手順はOSが”Raspberry Pi OS (64bit)"であることが前提となります。


1.OSを最新にする
ターミナルを開いて以下のコマンドを1行ずつ実行します。

sudo apt update && sudo apt upgrade -y
sudo apt full-upgrade -y && sudo apt dist-upgrade -y && sudo apt autoremove -y
sudo reboot


2.Dockerをインストールする
下記のコマンドでDockerをダウンロードしインストールします。

curl -fsSL https://get.docker.com -o get-docker.sh


インストールが終わったらDockerが機能しているかどうかを確認します。
バージョンが正常に表示されたらOKです。

docker --version


3.Dockerにユーザーを追加する
以下のコマンドでDockerにユーザーを追加します。
piの部分はユーザー名ですが、OSのインストール時に弄って無ければpiのままのはずです。

sudo usermod -aG docker pi


4.必要な依存するものをインストールする
以下のコマンドをまとめて貼り付けて実行します。

sudo apt install \
jq \
wget \
curl \
avahi-daemon \
udisks2 \
libglib2.0-bin \
network-manager \
dbus \
apparmor -y


5.Wi-FiランダムMACアドレスを無効にする
Raspberry PIWi-Fi接続の場合、再起動するたびにランダムなMACアドレスが設定されます。これだと再起動する度にIPアドレスが変わってしまうのでWi-Fi接続の場合はNetworkManagerの設定でランダムMACアドレスを無効にします。
まずは下記のコマンドでファイルを作成し開きます。

sudo mkdir /etc/NetworkManager
sudo mkdir /etc/NetworkManager/conf.d
sudo nano /etc/NetworkManager/conf.d/100-disable-wifi-mac-randomization.conf

開いたファイルの中に以下の記述を加え、Ctrl+O(書き込み) を押した後Enterを押します。

[connection]
wifi.mac-address-randomization=1 
[device]
wifi.scan-rand-mac-address=no


6. AppArmorを構成する
まずは下記のコマンドを入力しEnterを押します。

sudo nano /boot/cmdline.txt

開いたファイルには既に何か書かれていますがその末尾に以下を追加します。

lsm=apparmor

Ctrl+Oを押した後Enterを押し保存したらRaspberry PiをRebootします。

sudo reboot

以下のコマンドでAppArmorがインストールされていることを確認します。

sudo aa-status


7.Home Assistant OS Agentのインストール
まず、以下のページでOS-Agentの最新バージョンを確認します。
github.com

確認したら、以下のコマンドでパッケージをダウンロードします。
”/1.2.2/os-agent_1.2.2_linux_aarch64.deb”の部分は最新版に合わせて書き換えます。
また、今回はOSが64bitであるため"aarch64"を選んでいます。

wget https://github.com/home-assistant/os-agent/releases/download/1.2.2/os-agent_1.2.2_linux_aarch64.deb


ダウンロードが完了したら下記のコマンドでインストールします。

sudo dpkg -i os-agent_1.2.2_linux_aarch64.deb


エージェントがインストールされていることを下記のコマンドで確認します。

sudo gdbus introspect --system --dest io.hass.os --object-path /io/hass/os


8.何か良くわからないエラー対策
私の環境ではこれをしないとHomeAssistant Supervisedのインストール時に"/etc/default/grub"が無いというエラーが発生しました。何をしているのかさっぱりわかりませんが下記のコマンドをrootユーザーで1行ずつ実行します(汗

sudo echo "systemd.unified_cgroup_hierarchy=false" > /etc/default/grub
sudo sed -i -e "1 s/$/ systemd.unified_cgroup_hierarchy=false/" /boot/cmdline.txt
sudo reboot


9.HomeAssistant Supervisedのインストール
Home Assistant Supervisedを下記のコマンドでダウンロードします。

wget https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb

ダウンロードが完了したら下記のコマンドでパッケージをインストールします。

sudo dpkg -i homeassistant-supervised.deb

暫く待つとOSの選択メニューが表示されるのでOS(Raspberrypi4-64)を選択します。
エラーが出なければOKで、「machine: 192.168.x.x:8123 」とか「数分でアクセスできる」的なメッセージが出るはずです。
これで暫く待って他のPCなどから"192.168.x.x:8123”にアクセスすればHome Assistantのログイン画面が表示されます。
。。。のはずですが、"192.168.x.x:4357”でHome Assistant observerにはアクセス出来たのに、1時間経っても"192.168.x.x:8123"にアクセスできませんでした。結局、一か八かでRaspberry Piを再起動したらアクセスできるようになりましたが(汗)

■参考にしたHome Assistant Supervisedのインストールガイド

まず、最初にこちらを参考に公式の方法でインストールしましたが、最後のステップで"homeassistant-supervised"のインストールを開始すると「"Home Assistant OS-Agent"に依存しているのにそれが無い」と怒られました。
"Home Assistant OS-Agent"はインストールしていたのですが、64bit用の"aarch64"ではなく、このガイドに従い32bit用の"armv7"を選んでしまったのが問題だったようです。(上記手順の7.のプロセス)
peyanski.com


次にこちらのガイドに従ってやり直しました。
しかし、Home Assistant Supervisedのインストール(上記手順の9.のプロセス)で"/etc/default/grub"が無いと怒られました。
www.reddit.com


ググった結果、こちらに書かれた解決策で解決しました。これを上記手順8.のプロセスに反映しています。
community.home-assistant.io

■まとめ(?)

なんとかRaspberry Pi OS (64bit)を入れた2台目のRaspberry Pi 4にHome Assistant Supervisedをインストールすることが出来ました。
1台目のRaspberry Pi 4のHome Assistant OS上で動いているHome Assistantの環境をそのまま移行できたりするのかなぁ。
まぁとりあえずは、Home Assistant OSとの挙動の違いがないかをチェックしていこうと思います。

それでは。