Home AssistantでGoogle Sheets(スプレッドシート)にセンサー値を出力!

スマートホーム化

「Home Assistantでセンサーデータを出力したいな」

「複数のセンサー値を使ってデータを解析したい」

「Home Assistantのデータを別のアプリで読み込みたいな」

もしもこのように感じているなら、この記事が参考になるかもしれません。

この記事では、Home Assistantのセンサー値などをGoogle Sheets(スプレッドシート)に出力する方法を紹介します。

この記事でわかること
  • Home AssistantのデータをGoogle Sheets(スプレッドシート)に出力する方法
  • スプレッドシートの連携方法
  • Google Sheetsインテグレーションの使い方
  • 活用方法

Home AssistantでGoogle Sheetにデータを出力する方法

Home AssistantからGoogleスプレッドシートにデータを出力するにはGoogle Sheetsというインテグレーションを使用します。データ出力のためには、いくつか設定が必要です。

基本的に公式サイトで紹介されている手順で進めます。

Google Sheets
Instructions on how to use Google Sheets in Home Assistant.

概略としては次の手順になります

手順
  1. Googleサービスへアクセスするための認証情報の取得
  2. 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スプレッドシートへ出力する方法を紹介しました。

  • Google SheetsでHome AssistantのデータをGoogleスプレッドシートに出力可能
  • Google Developer Consoleで認証情報の取得が必要
  • インテグレーションを追加して設定
  • オートメーションと組み合わせることで一定時間ごとのデータを出力可能

他にもスマートホームやHome Assistantの記事を書いています。

初心者向けの記事や上級者向けの記事も揃えていますので、ぜひこちらもご覧ください。

【必見】スマートホーム化の徹底解説まとめ!【安くて簡単】
スマートホーム化のしくみ、やり方、具体例、応用編などスマートホームに関連する情報をまとめています。これからスマートホーム化をする人、もっと上級編に取り組みたい人、スマートホームをするすべての人の指南書・参考になってほしいです。

コメント

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