「Home Assistantでセンサーデータを出力したいな」
「複数のセンサー値を使ってデータを解析したい」
「Home Assistantのデータを別のアプリで読み込みたいな」
もしもこのように感じているなら、この記事が参考になるかもしれません。
この記事では、Home Assistantのセンサー値などをGoogle Sheets(スプレッドシート)に出力する方法を紹介します。
Home AssistantでGoogle Sheetにデータを出力する方法
Home AssistantからGoogleスプレッドシートにデータを出力するにはGoogle Sheetsというインテグレーションを使用します。データ出力のためには、いくつか設定が必要です。
基本的に公式サイトで紹介されている手順で進めます。
概略としては次の手順になります
導入方法
では早速、導入手順を解説していきます。
Google Developers Consoleの設定(認証情報の取得)
まずHome AssistantからGoogleスプレッドシートにアクセスできるように設定する必要があります。
この時、第三者が誰でもGoogleスプレッドシートにアクセスできたらセキュリティ的に問題ですよね?
そのため、アクセスしたときにそれが正しい接続か不正な接続かを確認して、正しい接続の時のみアクセスできるようにします。これが、今から行う認証情報を取得です。
もし、過去に既にNestやYoutube, Gmailの認証情報を取得している場合はそれを流用できます。
早速、手順に入っていきます。
最初に、Google Developers Consoleにアクセスし、新しいプロジェクトを作成します。
プロジェクト名は任意の名前で構いません。入力後、作成をクリックします。
作成後、プロジェクト一覧から作成したプロジェクトを選択し、プロジェクトを切り替えます。通知に表示される場合もあります。
その後、上の検索バーから「Google Drive API」と入力し、Google Drive APIのページに移動します。
「有効にする」をクリック
同様の手順で「Google Sheets API」も有効にします。
左上の三本線から「APIとサービス」→「OAuth同意画面」に進みます。
「外部」を選択して「作成」をクリックします。
任意のアプリ名とユーザーサポートメールのメールアドレスを選択します。
画面をスクロールしていき、デベロッパーの連絡先情報にもメールアドレスを入力し、「保存して次へ」をクリックします。
自動的にスコープのページに移動しますが、スコープを追加する必要はありません。そのまま「保存して次へ」を選択して、ユーザーのテストページに移動します。
テスト ユーザーのページもそのままで問題ありません。「保存して次へ」を選択します。概要ページが表示されるので、「ダッシュボードに戻る」を選択します。
OAuth 同意画面の公開ステータスで「アプリを公開」を選択し、公開ステータスが本番環境になったことを確認します。(公開しないと、資格情報は 7 日ごとに期限切れになります)
左側のサイドバーから「認証情報」を選択し、「認証情報の作成」を選択してから、「OAuth クライアント ID」を選択します。
アプリケーションの種類を「ウェブ アプリケーション」に設定し、任意の名前を入力します。(「Home Assistant Credentials」など)。
承認済みのリダイレクトURIの「URIを追加」をクリックし、「https://my.home-assistant.io/redirect/oauth」 を入力して、「作成」を選択します。
「OAuth クライアントを作成しました」というポップアップが表示され、クライアント ID とクライアント シークレットが表示されます。クライアントIDとクライアント シークレットは後ほど必要になるため、メモしておきます。メモしたら、「OK」を選択します。
もし、再度表示する場合は「API とサービス」→「認証情報」に移動すると、OAuth 2.0 クライアント ID の下にHome Assistant Credentials(または前の手順で付けた名前)が表示されるので、この右側の鉛筆アイコンを選択します。すると、ページの右側に情報が表示されます。
以上で、Google Developer Consoleでの作業は終了です。あまり使い慣れないので難しく感じたかもしれませんが、わからない箇所等あればご連絡ください。
Google Sheetsインテグレーションの追加
ようやくGoogle Sheetsインテグレーションを追加していきます。
インテグレーションを追加するには、このボタンをクリックしてください。
もし、上記のボタンが機能しない場合は、次の手順で手動で追加することができます。
Home Assistantで「設定」→「デバイスとサービス」→右下の「統合の追加」を選択します。
検索バーに「Google Sheets」と入力すると、「Google Sheets」が現れるので、選択します。
インテグレーションの追加が完了すると、画面の指示に従ってセットアップを行います。
任意の名称を入力し、OAuthクライアントIDとOAuthクライアントシークレットは先ほどメモしたものを入力し、「追加」をクリックします。
Googleのログインやアカウントの選択が求められたら、先ほどGoogle Developer Consoleで使用したアカウントを選択します。
アクセス権の付与の確認は「続行」で問題ありません。
アプリが検証されていないことを通知するメッセージが表示される場合があります。この場合は承認してください。
「アカウントをホーム アシスタントにリンクしますか?」という問いかけるページが表示されます。「Link account」の下に書かれているYour instance URLにあなたのHome Assistantのアドレスが書かれていることを確認し、「Link account」をクリックします。
もし、 これが正しくない場合は、鉛筆マークから修正できると思います。
Home Assistan画面に戻った時に、「成功!」と表示されれば設定完了です。
データの出力方法
実際にどうやって使うのかを解説してきます。
試しにサービスから呼び出してテスト出力
まずは試しに、なにかをGoogleスプレッドシートに出力してみましょう。
出力するには、サービスを呼び出します。
Home Assistantの「開発者ツール」→「サービス」に移動します。
サービスに「Google Sheets: シートに追加」を選択します。(一部分を入力すると見つけやすいです)
シートにはGoogle Sheetsのインテグレーション設定で入力した名称のシートが選択できるので、これを選択します。
データはdict型になります。例えば「key: data」と入力し、「サービスの呼び出し」をクリックします。特にエラーが出なければ、出力されているはずです。
自分のGoogleスプレッドシートのアカウントに行くと、「Home Assistant」というファイルが作成されています。開くと図のように、created、keyの列ができていて、出力日時とdataという行ができているはずです。
これでHome AssistantからGoogleスプレッドシートへの出力ができました。
一定時間ごとにセンサー値を出力
もう少し実用的な出力方法の紹介です。一定時間ごとにセンサー値を出力することでデータの変化・履歴を蓄積していくことができます。
これにはオートメーションの設定が必要です。
ここでは1分おきに温度を出力する方法を紹介します。
「設定」→「オートメーションとシーン」→右下の「オートメーションの作成」→「新しいオートメーションを作成」と進んでいきます。
トリガーには「時間と場所」→「タイムパターン」を選択します。
分に「/1」と記入します。この”/”が重要です。1分”毎”という意味になります。ちなみに、スラッシュを付けないと「毎時1分の時に(0時1分、1時1分・・・)」という意味になります。
どうする(アクション)の部分には、「その他のアクション」→「サービスの呼び出し」を選択します。
サービスの設定はテスト出力の時と同じです。「Google Sheets シートに追加」を選択し、シートを選択します。
データにはセンサー値を入力します。テスト出力で説明した通り、「key: data」の形で記述します。
ここで、センサー値は先ほどのテスト出力のように固定値ではないので、記述に工夫が必要です。具体的には、テンプレートを使用します。テンプレート記述でセンサー値を入力します。
例えば、keyはtemperature、dataをセンサー値とするならば、
temperature: “{{states(‘sensor.temperaturesensor_temperature’)}}”
となります。
この”{{states(‘sensor.temperaturesensor_temperature’)}}”がテンプレートの表記です。
{{state(‘エンティティID’)}}で記述します。出力したいセンサー値のエンティティIDに書き換えてください。
入力したら、保存します。
すると、1分おきにGoogleスプレッドシートにセンサー値が出力されるはずです。
Google Sheetsの使用例
Google Sheetsの使用例として、例えば、温度や湿度などのセンサー値を一定時間ごとに出力することができます。
これにより、センサー値の変化・履歴がデータとして蓄積することができます。そのデータはスプレッドシートに保存されるため、グラフなどの可視化やデータの分析がしやすくなります。
また、複数のセンサー値を出力すれば、それらの関係性がわかりやすくなります。
まとめ
いかがだったでしょうか?
Google Sheetsインテグレーションを使用したHome Assistantで管理しているセンサー値のGoogleスプレッドシートへ出力する方法を紹介しました。
他にもスマートホームやHome Assistantの記事を書いています。
初心者向けの記事や上級者向けの記事も揃えていますので、ぜひこちらもご覧ください。
コメント