コモノポリタン

コモノ、デジモノが好きなKomonopolitan住民 (はてなダイアリーからの引っ越しです)

【Home Assistant (Hass.io)でホームオートメーション】2. Home Assistant初期設定

 前回でおうちサーバであるHome AssistantをRaspberry Piに導入するところまではいきました。 基本的なところを設定して、Home Assistantがとりあえずちゃんと動くところまで設定を続けましょう。

前回の記事はこちら。 maky-ba.hatenablog.com

1. 前提

下記のバージョンを前提とした手順です。 (最新版では動かないこともあるかもしれませんが、私が使っている限り、備忘録を兼ねて最新化してゆきたいとは思っています)

  • ホームオートメーションサーバ(ソフト): Home Assistant 0.95
    (0.96でも違いなし。画面デザインは少し変わりましたが)
  • ホームオートメーションサーバ(ハード): Raspberry Pi 3 Model B+

2. Add-Onの導入

いろいろな便利な機能をAdd-On(アドオン)として組み込み可能。そのなかでもOfficial Add-Onから幾つかインストールします。 左側のメニューの[Hass.io] を選び、[ADD-ON STORE]タブに進みます。下記のようなアドオン一覧がでるので、クリックして出てきた画面でインストールします。

f:id:maky_Ba:20190715172931p:plain

  • Check Home Assistant configuration
    新しいバージョンになった時に設定ファイルに互換性があるかどうかのチェック用、と言っていますが上手く動かせた事がありません。まあ、期待を込めてインストールしています。きっとそのうち使えるはず。

  • Configurator
    設定ファイル(configuration.yaml等)をHomeAssistant上/ブラウザ上で編集できる優れもの。 これがきちんと動かなかった頃は、sambaでフォルダ共有してwindowsで編集して戻すとか sshでリモート接続(Windows Subsystem for Linuxを活用)してリモートでファイル編集する、とか結構面倒でした。

  • Duck DNS
    Dynamic DNSの一つであるDuckDNSを使うためのアドオン。外からアクセスするために利用。 プロバイダ(光プロバイダ等)からグローバルIPをもらっていない場合(大半がそうだと思います)に、プロバイダから割り当てられたIPが変わっても上手いこと接続できるように名前で接続できるようにする仕組みがDynamic DNSです。

Community Hass.io Add-onsからもひとつインストールしましょう。

  • SSH & Web Terminal
    sshでセキュアに別のPCからHass.ioに接続したり、セキュアなFTPでファイルをやり取りしたりできるsshサーバ機能とweb版のTerminal画面のアドオン。Configuratorが使えるようになったので、あまり出番はありませんが、やはり基本としてリモートでHass.ioに接続できるようしておくと色々と安心です。

(1) Check Home Assistant configuration

(いまのところ、自分自身上手く使えていないので、省略)

(2) Configurator

インストールして、スタートすれば使えるようになります。[Show in sidebar]トグルをオンにすると、左側のメニュー(サイドバー)に、Configuratorという項目が追加されます。 Configuratorを起動し、ブルーのバーの左端にあるフォルダをクリックすると編集するファイルが選べます。 f:id:maky_Ba:20190715180956j:plain

(3) DuckDNS

外からHome Assistantにアクセスするためには、1) IPではなく名前でアクセスできる事(Dynamic DNS)、2) httpsでセキュアに接続できる事、が欠かせません。DuckDNSアドオンではこの両方(正確には 2)はLet's Encryptの機能ですが、このアドオンの裏側で使えるようになるので知らなくて良いハズ)が実現できます。

Home Assistantの正式の情報は下記。 www.home-assistant.io 上のとおりやればよいのですが、設定の仕方、コツをメモしておきます。

1) ルーターの外側(INTERNET側/WAN側)のIPの確認
通常のプロバイダ契約では一時的(といってもかなり長い間同じIPが割り当たりますが)に割り当てられたインターネット上のあなたのIPを知っておく必要があります。
下記のサイトにアクセスするとあなたの外向きのIPを知ることができます。

www.cman.jp

2) DuckDNSの登録
下記サイトを開いてTwitter/GitHub/reddit/Googleのいずれかのアカウントを用いてログインし、下記を設定/取得する。

www.duckdns.org

  • domain (ex. maky-home)
  • token (ex. 8f68773c-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
  • ip (あなたのルーターの外側(INTERNET側/WAN側)のIP。これは後でDuckDNSにて自動的に更新される)

これで外部から<あなたのドメイン>.duckdns.orgで、あなたのルーターまでアクセスすることができるようになりました。

3) DuckDNSアドオンの設定
[Hass.io] - [Dashboard] - [ DuckDNS]と進み、アドオン画面を開き、Configの欄に先ほどのtoken、domainを設定する。

{
  "lets_encrypt": {
    "accept_terms": true,
    "certfile": "fullchain.pem",
    "keyfile": "privkey.pem"
  },
  "token": "<あなたのtoken>",
  "domains": [
    "<あなたのdomain>.duckdns.org"
  ],
  "seconds": 300
}

先ほどのConfiguratorを早速使って、configuration.yamlファイルのhttp:の項に下記を記述。

http:
  base_url: https://<あなたのdomain>.duckdns.org
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem

4) ルーターの設定
外からhttps:// で呼ばれたら(細かく言うとport 443で呼ばれたら)、ルーターの内側にいるHome Assistantサーバのport 8123へと繋いであげる必要があります。 これはルーター毎に異なるので、詳しくは自分のルーターの取扱説明書を見ていただきたいのですが、私のBuffaloのAirstationでは、[ゲーム&アプリ]タブの中の[ポート変換]で設定できます。 「ポート変換の新規追加」画面で設定すればうまく動きました。

  1. グループ: 既存のグループでよいでしょう。無ければ新規追加。
  2. Internet側IPアドレス:「エアステーションのInternet側アドレス」
  3. プロトコル: TCP/UDP、「HTTPS(TCPポート443)」
  4. LAN側IPアドレス:<あなたのHome AssistantサーバのIP>
  5. LAN側ポート: 8123

5) DuckDNSアドオンのスタート
再び[Hass.io] - [Dashboard] - [ DuckDNS]と進み、アドオン画面を開きをスタートさせる。 この時、結構時間がかかるが、下の方のLOGを見ておき、Errorとか出ていないか眺めておく。 ここでじっと待つのが肝、のような気がする。ここで焦ってカチャカチャ操作するとうまくLet's Encryptとかが登録されない。 順調に行けば、Let's Encrypt とかの設定も、DuckDNSへのルータIPの設定等も行われるはず。

(4) SSH & Web Terminal

これもインストールして、Config記述すれば動きます。 Config記述するためにssh authorized keyが必要になります。 Windowsですと、WSLの中でssh-keygenコマンドを使うとか、GitをインストールしてC:\Program Files (x86)にあるssh-keygenコマンドを使うなどして、keyを生成する手があります。

3. Configuration.yamlの記述

Configuration.yamlは、Home Assistantの中核設定ファイル(まあConfigurationというだけはあります)です。 他には、複数の処理をまとめて実行するためのAutomation.yamlやScript.yamlがありますが、このあたりは段々とWeb UIで設定できるようになってきています。

が、しかしConfiguration.yamlだけはゴリゴリ書かなければなりません。 たとえエディタがWeb UI(Configurator Add-On)になったとしても、何か新しい機器をHome Assistantに追加しようと思えば、ごりごりyaml形式の記述をする必要があります。

試しに何かの情報をHome AssistantのStatus画面(状態画面)に表示できるようにしてみましょう。 測定機器類は無くても、サーバ(Raspberry Pi)はあるはずですので、そのサーバのCPUの温度を測ってみましょう。 configディレクトリの下にあるconfiguration.yamlに以下の記述を追加する。

sensor:
  - platform: command_line
    name: CPU Temperature
    command: "cat /sys/class/thermal/thermal_zone0/temp"
    unit_of_measurement: "°C"
    value_template: '{{ value | multiply(0.001) | round(1) }}'
  • sensor: センサー型のエンティティであることの宣言
  • platform: 「command_line」コマンドラインで呼び出したコマンドの返す値を使うセンサー
  • name: このエンティティの名前
  • command: このエンティティの本体。Linuxのコマンドを記述する。
  • unit_of_measurement: 表示される単位
  • value_template: 表示するときの値の整形を設定。/sys/class/thermal/thermal_zone0/temp には温度は1000倍で記録されているので、0.001で掛けて(=1000で割って)、小数点以下1桁目で丸める。

これでHome Assistantは、Raspberry PiのCPU温度を粛々と記録し続けるようになっているはずです。

4. UIの設定

UIは、以前は.yamlファイルをゴリゴリ記述しなければならなかったのですが、最近は「Lovelace UI」というのがまともに動くようになって、UIでUIを設定できるようになりました。 (ラブレス、は詩人でしょうか、どんな意味が…) 左のメニュー(サイドバー)から[状態]を選び、その中の右端のベルマークの右の縦三つ点から[Configure UI]をクリック。 編集画面の右下のオレンジプラスマークからCard Configureでカードタイプを選んで編集。 f:id:maky_Ba:20190726222101j:plain 25種類のカードタイプが選べる。 ここでは「Entities」を選んで編集している。
f:id:maky_Ba:20190726215601j:plain 設定を進めるとカード編集(Card Configuration)画面の右側(もしくは下側)にプレビューされる。

  • Title: カードの左上に表示されるタイトル
  • Theme: (正直まだよくわからない)
  • Show Header Toggle?: エンティティがトグルの時、カード全体を一括してOn/Offするトグルを表示するか否かの設定。
  • Entiies: 使えるエンティティがドロップダウンで表示されるので選んで追加してゆく。
  • TOGGLE EDITOR: Card Configurationを旧来のファイル型で編集するモード
  • キャンセル/SAVE: カード編集結果を保存するか否か。

次に先ほど設定したCPU温度も表示させよう。これはカードタイプとして「GAUGE」(ゲージ)を使ってみる。
f:id:maky_Ba:20190726221100j:plain

  • Name: 円弧型のゲージの中心部分に表示される値の名前。設定しなければデフォルト=エンティティの名前が表示される。
  • エンティティ: 表示するエンティティ。ドロップダウンリストで選ぶ
  • Unit: 単位。設定しなければ、エンティティで設定されているもの(unit_of_measurementで設定したもの)が表示される。
  • Theme: (正直まだよくわからない)
  • Minimum: 表示される最小値
  • Maximum: 表示される最大値
  • Define Severity: 緑・黄・赤で値を表現するか否かのトグル

最終的には、こんな感じに。
f:id:maky_Ba:20190726221809j:plain 前回では上の方に丸で記述されているものや、独自に設定したものをカードに表示するように出来た。 らくちん。

6. おわりに

便利なアドオンの設定と、設定ファイル(Configuration.yaml)の基本的な記述方法、それからUIの設定をやってみました。 Home Assistantはバージョンが変わると結構設定の仕方が変わるのに、説明があんまり体系的でない。 英語圏の人でも「これどうやるの?」ってコミュニティで聞きまくっているので、そこん所どうにかならんかなあ。

次はついにセンサーの情報を表示するように頑張ります!

【Home Assistant(Hass.io)でホームオートメーション】

  1. RaspberryPiにHome Assistant導入
  2. Home Assistant初期設定 《今回》
  3. 環境センサー(Omron)を接続
    1. 環境センサー(Omron)を接続 - 前編《次回》
    2. 環境センサー(Omron)を接続 - 中編
    3. 環境センサー(Omron)を接続 - 後編
  4. 汎用赤外線リモコンを接続
  5. スマートプラグを接続
  6. UIを改善