はじめに
6ヶ月間の育児休業を取って、育児&家事に専念しているnaka-kazzです。今年になって、スマートリモコン・各種IoTセンサー・スマートスピーカが手軽に手に入るようになってきて「2019年はスマートホーム元年」だったかなーと今年一年を振り返りながら記事を書いています。
ただ、家の中にIoT機器が増えてくると、スマートリモコンを操作する時はスマホのリモコンアプリ、太陽光発電の発電状況を見るにはHEMSのパネルなど・・・情報や操作がバラバラで使いづらいなと感じています。そこで、今回は家の中のIoT機器を一元管理できるようにしてみたいと思います。
やりたいこと
最終的にやりたいことは、家の中のセンサー情報を一括で表示したり、各種家電の操作を行える「かっこいいスマートホームコントローラ」を作っていきたいと思います。今回は、このスマートホームコントローラを、Home Assistant(Hass.io)で作っていきます。
実現に向けた連載
やりたいことを実現するために、以下のように少しずつに記事を書いていきます(予定)。
1回目:Home Assistantのインストール
2回目:アドインのインストール
3回目:温度・湿度・照度センサーの追加 ←この記事
4回目:家電操作スイッチの追加
5回目:コントロールパネルの設定
6回目:Picture Elementsの設定
3回目:温度・湿度・照度センサーの追加
前回までに、Home Assistantにアドオンを追加して「スマートホームコントローラ」を作る準備ができました。今回は、Home Assistatに温度・湿度・照度センサーを追加して、部屋の状況を可視化していきたいと思います。
事前準備(必要情報の収集)
Home Assistantに連携する温度・湿度・照度センサーとして、今回はスマートリモコンsRemo-Rを利用していきます。このsRemo-RはWebAPIに対応していて、APIを使ってリモコン制御だけでなく温度・湿度・照度センサーの情報を取得することが可能です。
①sCouldへのアクセス
まずは、sRemo-rのクラウドサービスである[sCould]にアクセスし、右上の「USER HOME」からログインします。
②sRemo識別子の取得
sCouldのメニューから「sRemo情報」のメニューを選択して、表示されたsRemo識別子をメモしておきます。
③APIアクセストークンの取得
次にsCouldのメニューに戻り「APIアクセストークン」のメニューを選択し、APIアクセストークンとAPIサーバ名をメモします。
ここまでで、事前準備は完了です。
シェルスクリプトの作成
ここからは、sCloudにAPIアクセスするシェルスクリプトをHome Assistantの中に作成していきます。
①Home AssistantにSSH接続
まずは、PCのコンソールより、Home AssistantにSSHログインします。
1 2 |
$ssh hassio@<IPアドレス> hassio@<IPアドレス>'s password: |
②シェル用ディレクトリの作成
次に、シェルスクリプトを配置するディレクトリを「/config」内に作成します。bashに切り替えているのは個人程な好みなのでzshのままでもOKです。
1 2 3 4 |
$ bash # cd /config/ # mkdir scripts # cd scripts |
③シェルスクリプトの作成
次に、以下の内容のシェルスクリプト「/config/scripts/GetsRemoInfo.sh」を作成します。
なお「<APIアクセストークン>」「<APIサーバ>」「<sRemo識別子>」の部分は上でメモしたものに置換してください。
1 2 3 |
#!/bin/bash curl -H "Authorization: Bearer <APIアクセストークン>" https://<APIサーバ>/user_api/<sRemo識別子>/get_thl |
このシェルスクリプトでは、sCouldのWebAPIにCurlコマンドでアクセスし、温度・湿度・照度のデータをJSON形式で取得します。
④シェルスクリプトの実行確認
作成したシェルスクリプトに実行権限を付与して、ちゃんと動作するか確認してみましょう。以下のように「t」「h」「l」を含むJOSNデータが取得できればOKです。
1 2 3 |
#chmod 777 GetsRemoInfo.sh #./GetsRemoInfo.sh {"t":18,"h":39,"l":2} |
Homme Assistantへの登録
ここからは、上で作成したシェルスクリプトをcommandline sensorとしてHome Assistantへ登録してしていきます。
①Configuratorの起動
まずは、Home Assistantの画面からConfiguratorを起動します。
②configuration.yamlを開く
次に、左上のフォルダのアイコンをクリックして「/config/configuration.yaml」を選択します。
なお、Homme Assistantの設定は基本的にこのconfiguration.yamlに記述していく形になります。
③センサーの追加
configuration.yamlに、以下のように追記します。Home Assistantのcommand_lineセンサーというものを利用する事で、先ほど作成したシェルスクリプトをあたかもセンサーのように扱うことが可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
sensor: - platform: command_line name: "temperature" command: "/config/scripts/GetsRemoInfo.sh |jq .t" unit_of_measurement: "°C" scan_interval: 300 - platform: command_line name: "humidity" command: "/config/scripts/GetsRemoInfo.sh |jq .h" unit_of_measurement: "%" scan_interval: 320 - platform: command_line name: "illuminance" command: "/config/scripts/GetsRemoInfo.sh |jq .l" unit_of_measurement: "%" scan_interval: 350 |
記載の内容は見て貰えれば分かると思いますが、18行目でsensorの記述を開始する事を宣言し、その下に3つのセンサーを追加しています。各センサーの記述は、1行目でcommand_lineセンサーを利用することを記述し、2行目でセンサーの名前の定義、3行目で値を取得するためのコマンドを記載しています。なお、上で作成したシェルスクリプトは、温度・湿度・照度が一つのJOSNに記述されているので、ここでjqコマンドを使って各要素の値を取り出しています。そして、4行目で単位を定義しています。5行目はコマンドを実行して値を取得する間隔(ミリ秒)です。sCouldの制約上、同時にアクセスすると、エラーになってしまうので少しづつずらして取得しています。
④設定の保存
記載が完了したらファイル名の右側のチェックが「緑色(yamlの整合性チェックOK)」であることを確認して、画面上の赤色のフロッピーディスクのアイコンをクリックしてyamlを保存します。
⑤HASSの再起動
yamlの保存が完了したら、画面右上の歯車のアイコンをクリックし「Restart HASS」を選択して、Home Assistantを再起動します。
ここまでで、センサーの追加は完了です。
Lovelace画面への追加
ここからは、追加したセンサーをHome AssistantのユーザインタフェースであるLovelaceへ追加していきます。
①Lovelace編集画面を開く
まずは、Home Assistantの左メニューから「状態」を選択してLovelaceを開き、さらに画面右上の「・・・」ボタンをクリックして「Configure UI」を選択します。
②GLANCEカードの追加
次に、画面右下に表示される「(+)」ボタンをクリックして、表示されるカードの選択画面から「GLANCE」カードを選択します。ちなみに、Home Assistantには、さまざまなカード(情報を表示するもの)がありますので、いろいろ試してみると良いと思います。
③GLANCEカードの編集
GLANCEカードの入力画面でTitleを入力し、さらにエンティティ欄で先ほど追加した3つのセンサーを「▼」ボタンを押して選択します。最後に、入力が完了したら「SAVE」ボタンを押しましょう。
④GLANCEカードの確認
GLANCEカードに3つのセンサーが横並びで追加され、センサー値が表示されているはずです。
⑤HISTORY GRAPHカードの追加
次に、各センサーの値をグラフ表示してみたいと思います。上と同様に画面右下の「(+)」をクリックし、カード選択画面から「HISTORY GRAPH」カードを選択します。
⑥HISTORY GRAPHカードの編集
HISTORY GRAPHの編集画面も、GLANCEカードと同様に設定を行い「SAVE」ボタンをクリックします。
⑦HISTORY GRAPHカードの確認
HISTORY GRAPHカードに「°Cスケールの温度のグラフ」と「%スケールの湿度と照度のグラフ」のが二つが表示されるはずです。はじめのうちは、軸がおかしくなっているかもしれませんが1日程度動作させる事で、良い感じの軸になってきます。
⑧Lovelace編集画面を閉じる
最後に、画面左上の「×」ボタンをクリックしLovelaceの編集モードを終了させます。
ここまでで、基本的なセンサーの追加は完了です。
アイコンと日本語名の設定
現在の表示は、英語名での表記になっていますし、アイコンも湿度や照度は「目のアイコン」になっていて分かりづらいので、これを変更(カスタマイズ)していきます。
①configuration.yamlの編集
再度、左メニューからConfiguratorを選択してconfiguration.yamlを開き、以下を最後尾に追記して保存します。
1 2 |
homeassistant: customize: !include customize.yaml |
この記述は、カスタマイズに関する記述を「customize.yaml」で行いconfiguration.yamlにインクルードするというものです。
②customize.yamlの追加
次に、画面左上のフォルダのアイコンを選択し、さらにファイル追加のアイコンをクリックします。そして、表示されたファイル名の入力画面で「customize.yaml」と入力し「OK」をクリックします。
③customize.yamlの選択
左側のファイル一覧に「customize.yaml」が追加されていると思いますので、これを選択して開きます。
④customize.yamlの編集
customize.yamlに以下を追記して、保存します。なお、エンティティ名の入力はConfiguratorの「Entity」というと欄からも選択して入力が可能なので、活用しましょう。
1 2 3 4 5 6 7 8 |
sensor.temperature: friendly_name: 気温 sensor.humidity: friendly_name: 湿度 icon: mdi:water-outline sensor.illuminance: friendly_name: 明るさ icon: mdi:lightbulb-on-outline |
この記述によって、各センサーに画面に表示される名称である「friendly_name」の設定とiconの設定を行います。iconの設定にあたっては「Material Design Icons」のアイコンが利用できるので、Material Design Iconsのサイトで好きなアイコンを探して設定するのが良いでしょう。
⑤HASSの再起動
ここまで設定ができたら、HASSを再起動しましょう。
⑥Lovelace画面の確認
それでは、Home Assistantの再起動を待って、Lovelace画面を開いてみましょう。上で設定された名称とアイコンで表示されていますか?
以上でセンサーの追加は、全て完了です!!
おわりに
今回はHome AssistantにsRemo-Rの温度・湿度・照度センサーを追加し、アイコン表示とグラフ表示で可視化してみました。同様の方法で各種センサーをHome Assistantに追加可能なので、いろいろ追加してみると良いと思います。
次回は、Home Assistantにスイッチを追加して、照明・テレビ・エアコンの操作を可能にしていきたいと思います。
連載記事
1回目:Home Assistantのインストール
2回目:アドインのインストール
3回目:温度・湿度・照度センサーの追加
4回目:家電操作スイッチの追加 ←次はこれ
5回目:コントロールパネルの設定
6回目:Picture Elementsの設定
コメント