Home Assistantの新しいiPhoneアプリに対応した通知(画像付き通知、重大な通知、をオートメーションで作る

Home AssistantHome Assistant, センサー, オートメーション, iOS

 

Home AssistantのiPhoneアプリが新しくなった。また、今回より公式にAndroidにもアプリがリリースされた模様。iPhone版のアプリはかなり高機能となり、ついにApple Watchとの連動も行うことができるようになった(といっても、まだほとんどの機能を試してみていない)。

さて、大きな機能のひとつは、通知機能が新しくなったことである。これに伴い、これまでiosに通知していたようなスクリプトがある場合には変更が必要となったほか、新たに「重大な通知」(緊急災害速報などと同じく、ベッドタイムになっていても通知を送ってくるモード)とバッジに対応をした。これらの設定方法について見ていこう。

まずは、モバイルアプリの設定をする

新たに、configuration.yamlに対して、設定を追加する必要がある。

mobile_app:

実のところ必要な設定はこれだけなのだが、ここで新しいアプリでのログインを行ったあと、「設定」から「Integrations」をえらび、モバイルアプリが表示されていることを確認して欲しい。

すると、そこにログインした端末のリストが表示されていれば、アプリからの連携は完了している。

(ちなみに)Home Assistantの新しいアプリ

Home Assistantの新しいアプリでは、取得出来る情報が大幅に増えている。

こんなふうに、モバイルネットワークの状況をHome Asisstantに提供したり、

はたまた、アクティビティの状況を提供することも可能。

これらを使えば、例えば「一定の運動量に満たない場合、自宅に入っても何の動作もしない」(つまり外へ行って運動してくるように強制する)等も可能になる。恐ろしや。

プッシュ通知の設定方法

プッシュ通知の設定は、最も簡単な方法は端末毎に設定する方法である。開発者ツールから「サービス」に進むと「notify.mobile_app_XXXX」(XXXXは端末名)を確認することが出来る。

これを用いて、次のようにすればプッシュ通知を発行出来る。

- service: notify.mobile_app_11pro
  data:
    message: "テストメッセージ"

上記は単なるプッシュ通知のみ。さらにタイトルを入れる場合には次のような形となる。

- service: notify.mobile_app_11pro
  data:
   title: "タイトル"
   message: "内容"

通知の方法を制御する

通知によって何らかの応答を求めることや、アイコンバッジを任意に操作すること、また写真や動画を通知に同梱するなど、iOSがサポートしている最新の通知方法のほとんど全てを利用することが可能だ。

このような形で、カメラの画像を添えて通知を行うことも出来る。

方法に関しては、公式のドキュメントを参照していただきたい。

重大な通知を送付する

今回の大きな点として、iPhoneの「重大な通知」機能を用いて通知を送ることが出来るようになった点がある。例えば私の場合、水漏れセンサーを設置しているのだが、これが発動した際には寝ていようがどこへいようが通知をして欲しい。その場合には、このような形で記述をする。

title: "水漏れ検知"
message: "水槽の水が漏れている可能性があります"
data:
    push:
       sound:
            name: default
            critical: 1
            volume: 1

これは、水漏れの通知をcritical扱いで、volumeは1=100%で通知をする、の意である。
すると、このような形で通知が送られる。

全ての端末に一括で送付する

ただし、この設定方法であると、機種変更をしたり、複数の端末を使い分けている場合にはあまりよろしくない。というのも、端末の分だけ記載が必要となるし、端末を変えるたびに設定の変更が必要となってしまうためだ。
そのため、全ての端末に対して一括で配信出来るグループをconfiguration.yamlに定義し、automation等ではこちらをつかって配信するとより簡単に運用ができる。

configuration.yamlに、例えばこのように設定をする。

notify 
 - name: ALL_DEVICES
 - platform: group
   services:
      - service: mobile_app_AA
      - service: mobile_app_BB

そして、Automation等では次のように定義をすれば良い。

 - service: notify.ALL_DEVICES
   data:
      message: "テストメッセージ"

端末が増えた際にはconfiguration.yamlをいじくれば終わりとなり、どの端末にもPUSH通知が飛ぶ形となる。


執筆者紹介

Thir

購入したガジェットの紹介やサーバーの構築方法、スマートホーム化等、そのときハマっていたもののメモ書き・趣味の備忘録ではありますが、お役に立つ情報があれば幸いです。最近はYouTubeでもレビュー動画やVlogをあげています。サイト紹介・プロフィールはこちら。依頼・お問い合わせはこちらから。