HomeAssistantでスマートホームコントローラを作ってみる[3/6]

スマートホーム
スポンサーリンク
このエントリーをはてなブックマークに追加

はじめに

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ログインします。

②シェル用ディレクトリの作成

次に、シェルスクリプトを配置するディレクトリを「/config」内に作成します。bashに切り替えているのは個人程な好みなのでzshのままでもOKです。

③シェルスクリプトの作成

次に、以下の内容のシェルスクリプト「/config/scripts/GetsRemoInfo.sh」を作成します。
なお「<APIアクセストークン>」「<APIサーバ>」「<sRemo識別子>」の部分は上でメモしたものに置換してください。

このシェルスクリプトでは、sCouldのWebAPIにCurlコマンドでアクセスし、温度・湿度・照度のデータをJSON形式で取得します。

④シェルスクリプトの実行確認

作成したシェルスクリプトに実行権限を付与して、ちゃんと動作するか確認してみましょう。以下のように「t」「h」「l」を含むJOSNデータが取得できればOKです。

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センサーというものを利用する事で、先ほど作成したシェルスクリプトをあたかもセンサーのように扱うことが可能です。

記載の内容は見て貰えれば分かると思いますが、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を開き、以下を最後尾に追記して保存します。

この記述は、カスタマイズに関する記述を「customize.yaml」で行いconfiguration.yamlにインクルードするというものです。

②customize.yamlの追加

次に、画面左上のフォルダのアイコンを選択し、さらにファイル追加のアイコンをクリックします。そして、表示されたファイル名の入力画面で「customize.yaml」と入力し「OK」をクリックします。

③customize.yamlの選択

左側のファイル一覧に「customize.yaml」が追加されていると思いますので、これを選択して開きます。

④customize.yamlの編集

customize.yamlに以下を追記して、保存します。なお、エンティティ名の入力はConfiguratorの「Entity」というと欄からも選択して入力が可能なので、活用しましょう。

この記述によって、各センサーに画面に表示される名称である「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の設定

関連記事

Alexaをしゃべらせる(Node-red編)
やりたいことNode-redでnode-red-contrib-amazon-echoやnode-red-contrib-alexa-home-skillのパレットを使うと、Alexaに音声で話しかけることをトリガーにNode-redの処理
自分のGoogleカレンダーにJWTを使って予定を追加してみる
今回は、JWT(JSON Web Token)を使って、ブラウザからのログイン操作なしで特定のGoogleカレンダーに予定を追加することをやってみます。
Alexaに通知を送る(Node-red編)
今回は、Alexaに「通知」を送ることをやってみたいと思います。ちなみに、この通知を送る機能は「プロアクティブイベントAPI」という物を利用しますが、少々実装が面倒なのが難点です。
Node-redでスマートハウス-LG製テレビを操作してみる(1/5)
はじめに我が家にも有機ELテレビがやってきました。国産メーカのテレビも、有機ELパネルはほとんどがLG製のパネルを利用しているらしく「同じパネルなら安い方がいいんじゃない?」という事でOLED 55C7Pを購入!このLG製のテレビ、内部はw
Node-redでスマートハウス-Gravioで子供用プリキュアボタン
今回は、Gravioのボタンセンサーを使って、2歳の子供でもテレビのアプリをyoutubeにして、プリキュアの動画を再生できる「プリキュアボタン」を作りたいと思います。
Gravioでミルク&オムツ交換記録をGoogleカレンダにつけてみる
子育てをしていると両手が塞がっていたり、手が汚かったりすることが本当多いんです。なので、スマホを手に取って、ロック解除して、記録アプリを開いて、時間・種類などをいちいち入力することはホント面倒です。今回は「赤ちゃんボタン」を作って、ボタンを押すだけでミルク&おむつ交換の記録がワンプッシュで記録することをやってみます。
Node-redだけで簡易Alexaアプリを作ってみる「アレクサ、雨雲きてる?」
今回はASKを使わずNode-redだけを使って、自分用の簡易Alexaアプリを作ることをやってみたいと思います。
記事が参考になったら、ブログランキングに協力(クリック)して貰えると嬉しいです。
ブログランキング・にほんブログ村へ
スポンサーリンク
naka-kazz

昼間はIT企業に勤めてますが、プライベートでは「育児×家事×IoT」をテーマに家のスマートホーム化に取り組んでいます。Androidアプリも作っているので使って下さい。
E-mail:naka.kazz.d@gmail.com

naka-kazzをフォローする
スマートホーム 開発者向け
naka-kazzをフォローする
育児×家事×IoT

コメント

タイトルとURLをコピーしました