RaspberryPiにHomeAssistantをインストールしてGoogleAssistantから呼び出す 。
"OK Google カーテンを閉めて"
raspberry piにraspbianをインストールする。
注意すべきこと
PCのusbから電源取っていたら動作が不安定であった。
- wifi経由で動作できるがCloud経由でスマートフォンに接続すると不安定な動作となる。
インストール方法は、3つある。

$ sudo shutdown -r now
# dockerサービスの有効化
$ sudo systemctl enable docker
// バージョン確認
$ docker --version
Docker version 20.10.6, build 370c289
Raspberry pi 3にインストール
docker run --init -d \
--name homeassistant \
--restart=unless-stopped \
-v /etc/localtime:/etc/localtime:ro \
-v /hass:/config \
--network=host \
homeassistant/raspberrypi3-homeassistant:stable
実行方法
# http://<host>:8123
http://192.168.1.20:8123
3.Home Assistant core
既存のRasbianに追加してインストールする方法です。既にWebServiceやMQを構築してある場合には、これを使う。
また、node.jsなどでセンサーやスイッチを構築する場合には、これを選ぶ。多くのHome assistantのセンサーやスイッチのドライバーは、python2で書かれていてpython3で構築されたシステム上にインストールすることは、お勧めしない。
Python 3.8(パッケージを含むpython3-dev)以降がインストールされていることを前提としています。
# 依存関係をインストールする
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y python3 python3-dev python3-venv python3-pip libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff5
# アカウントを作成する
sudo useradd -rm homeassistant -G dialout,gpio,i2c
# 仮想環境を作成する
sudo mkdir /srv/homeassistant
sudo chown homeassistant:homeassistant /srv/homeassistant
sudo -u homeassistant -H -s
cd /srv/homeassistant
python3.8 -m venv .
source bin/activate
# AssistantCoreをインストールします。
python3 -m pip install wheel
pip3 install homeassistant
# .homeassistantディレクトリに構成ディレクトリが自動的に作成され、/home/homeassistant基本的な依存関係がインストールされます。
# 実行
hass
# Webインターフェイスを介してインストールにアクセスできますhttp://homeassistant.local:8123。
ここからはDocker Versionの話
こんな画面が出れば成功
ここからは、設定の話
Windows 10のVisual Studio 2019を用いて設定ファイルを編集します。
sambaをインストールします。
sudo apt-get install -y samba
sudo nano /etc/samba/smb.conf
# ワークグループの変更します
workgroup = workgroup
# 最終行に追加
[root]
comment = root
path=/
browseable=YES
writeable=YES
valid users= pi, root
only guest=no
create mask=0777
directory mask=07777
public=no
force user = root
# Sambaユーザのパスワード設定
sudo smbpasswd -a pi
sudo smbpasswd -a root
dockerのインストールでは、rootの直下にhassフォルダが出来上がっています。
automations.yaml
configuration.yaml
groups.yaml
scenes.yaml
scripts.yaml
secrets.yaml
まず、configuration.yamlを定義します。
tts:
- platform: google_translate
group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
homeassistant:
name: Home
latitude: 35.xxxxxx
longitude: 140.xxxxxx
elevation: 40
unit_system: metric
time_zone: "Asia/Tokyo"
whitelist_external_dirs:
- '/config'
- '/config/www'
latitude: には、緯度
longitude: には、経度
elevation: 高度
を設定してください。Google earthなどで知ることができます。
この情報は、とても重要です。
例えば日の出及び日没に同期させswitchをon/offすることができます。
また、携帯電話の位置情報をもとに空調のswitchをon/offすることもできます。
このアプリケーションでは、日没と同時にカーテンを閉じ、日の出と同時にカーテンを開く設定を行います。
whitelist_external_dirs:は、dockerからアクセスできるディレクトリを設定します。
/configは、/hassディレクトリを示し、/config/wwwは、/hass/wwwを示します。
注意)dockerは、独立した、コンピュータとして動作しておりRaspiとやり取りするためには、tcp/ipを使うか、bluetoothしかありません。raspi上のアプリから簡単にデータを渡したり、イメージファイルを置いたりするのにここが使われます。
ここまでやってきたのですが問題が起きました。
cover:
- platform: switchbot-curtain
mac: xx:xx:xx:xx:xx:xx:xx
name: カーテン
- id: open_curtain
alias: sun rise open curtain
trigger:
- platform: sun
event: sunrise
offset: 00:00:00
action:
- service: cover.open_cover
target:
entity_id: cover.katen
mode: single
- id: close_curtain
alias: sunset close curtain
trigger:
- platform: sun
event: sunset
offset: 00:00:00
action:
- service: cover.close_cover
target:
entity_id: cover.katen
一応動作しました。
Rasipberry piのGPIOに人感センサーと温度センサーをつないだとたん動作しませんでした。
Raspberry piにdockerをインストールするバージョンでは、直接GPIOを制御できません。
当たり前と言えば当たり前です。
dockerは、rasbian上で動作する独立したOSです。
気を取り直してrasbian上に直接homeassistantをインストールして使います。
3の方法です。
これも一癖二癖ある作業です。
microSdからの作成となります。
これを使ってmSDを作成します。
一応30分程度で新しいmSDが作成されます。
ここで出来上がったRaspiは、python3.7です。
pip install homeassistant
でインストールするためには、コンパイルしてインストールする必要があります。
マニュアルでは、python3.8以上と書かれています。

この表を見てpython3.9をインストールしました。or newerに騙されました。
はっきり言って各社が用意しているライブラリは、python3.8用に作成されています。
buletoothのインターフェイスを持つ周辺機器は、ほとんどwarningをだし安定して動作しません。
人情的には、python3.10を選べば大丈夫とおもい、トライしました。やはりbluetoothでトラブり結局、python3.8.8で問題解決しました。
$ wget https://www.python.org/ftp/python/3.8.8/Python-3.8.8.tar.xz
$ tar -xf Python-3.8.8.tar.xz
$ cd Python-3.8.8
$ ./configure --enable-loadable-sqlite-extensions && make && sudo make install