LoginSignup
4
3

More than 1 year has passed since last update.

RaspberryPiにHomeAssistantをインストールしてGoogleAssistantから呼び出す

Posted at

RaspberryPiにHomeAssistantをインストールしてGoogleAssistantから呼び出す 。

"OK Google カーテンを閉めて"

開発モード13.gif

raspberry piにraspbianをインストールする。

詳しいインストール方法

注意すべきこと

  • 電源 十分な容量を持った電源を選ぶ、できれば3.5A以上
  • SDカード 高速な信頼性の高いものを選ぶ Application Class 2 32GB以上
    image.png

    PCのusbから電源取っていたら動作が不安定であった。

  • wifi経由で動作できるがCloud経由でスマートフォンに接続すると不安定な動作となる。

インストール方法は、3つある。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/b61e01eb-67e4-ace2-60da-f48ff30e2026.png]

1.Home Assistant Operating System

最低限のlinuxとhomeassistantがインストールされます。
自分でセンサーやスイッチを作成する場合ちょと敷居が高くなる
初心者は、これをインストールする。

インストール方法は、詳しくここに説明されている

2.Home Assistant Container

Dockerを用いたインストール多くのユーザーは、この方法を使用すると手軽に使うことができる。
また、pythonなど利用して独自のインターフェイスを作ることができる。

# インストール
$ curl -sSL https://get.docker.com | sh
# グループの追加
$ sudo usermod -aG docker pi
# OS再起動(グループ追加を反映)
$ 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の話

image.png

こんな画面が出れば成功

ここからは、設定の話
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上のアプリから簡単にデータを渡したり、イメージファイルを置いたりするのにここが使われます。

ここまでやってきたのですが問題が起きました。

configuratin.yaml
cover:
  - platform: switchbot-curtain
    mac: xx:xx:xx:xx:xx:xx:xx
    name: カーテン
automation.yaml
- 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からの作成となります。
image.png
これを使ってmSDを作成します。
一応30分程度で新しいmSDが作成されます。

ここで出来上がったRaspiは、python3.7です。

pip install homeassistant
でインストールするためには、コンパイルしてインストールする必要があります。
マニュアルでは、python3.8以上と書かれています。
image.png

image.png
この表を見てpython3.9をインストールしました。or newerに騙されました。
はっきり言って各社が用意しているライブラリは、python3.8用に作成されています。

buletoothのインターフェイスを持つ周辺機器は、ほとんどwarningをだし安定して動作しません。

image.png

人情的には、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
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3