【農業IOT】googleサービスアカウントのキーを作成する
ビニールハウスの温度や湿度をエクセルで管理している方は多いと思いますがエクセルではクラウドで自動記録が出来ません。でもgooglesheetなら可能です
Excel for webで VBA マクロを使用する
温度 湿度 EC値などを計測して自動で記録すれば作物の栽培管理に役立ちますがこれをエクセルで出来るのでしょうか?
マイクロソフト社のサポートを見てみると…
VBA (Visual Basic for Applications) マクロを Web 用 Excelで作成、実行、編集することはできません
このように記載されています。(2024/01)
カズは数年前からエクセルをやめてgooglesheetのみを使っていますのでその後のエクセルのバージョンアップについては判りませんがクラウドでマクロを動かすのは少し厳しいようです。
googlesheetのマクロは?
一方、googlesheetのマクロ(GAS:google apps script)はオフラインでは動きませが、セルの手作業での入力は出来ますしオンラインになればグーグルドライブにあるgooglesheetと同期されます。
という訳でエクセルはスタンドアロンで強みを発揮しますがネットを使っての利用には不向きである一方、googlesheetはスタンドアロンでは利用に制約があるもののネット利用で強みを発揮します。
エクセルかグーグルシートか?
では、エクセルとグーグルシートのどちらがいいのか?ということになりますが、これは利用環境でどちらが適しているか?ということで考えるのがいいのかな?と思います。
【農業IOT】と謳ってるように作業しながら作業の進捗状況を記録したり、農薬散布記録を付けたり、ハウスや圃場の見回りで気になる点を記録したりするにはgooglesheetが適しています。
それは圃場やビニールハウスの中で、作業しながらでもリアルタイムに記録出来るからです。
googleサービスアカウントキーとは?
サービスアカウントキーはgoogleクラウドに外部からクラウド内にあるリソースにアクセスする場合に必要となるキーで、いわば”関所”の”通行証”ですね。
ここでは前提としてesp32からビニールハウスの温度や湿度、気圧や外部環境(外気温や天候状態など)を自動で定期的にgooglesheetに記録させるための手段として”関所”を通行する”通行証=サービスアカウントキー”を作成します。
もちろん農業や家庭菜園だけではなく、例えばウエブカメラと連動して自宅のセキュリティ管理にも使えますし、圃場やビニールハウスの盗難対策(センサーが人の動きを感知したら録画とメールで通知)などにも使うことが出来ます。
google cloud 登録
google cloudはこちらから登録できます。
利用するにはgoogleアカウントが必要です。(無料で登録出来ます)
google cloudにログインしたら先ず「IAMと管理」から「IAM」 を開きます。
次に右上 プロジェクトを作成をクリックします。
プロジェクト名とプロジェクトIDは判りやすい名称にしておきます。
プロジェクトIDは自動で割り振られますが意味不明な英数字になるのでIDも変えていたほうが後々便利だと思います。
入力が終われば「作成」をクリックします。
すぐに新しいプロジェクトが作成されます。
サービスアカウントを作成する
サービスアカウントとはgoogle cloudで実行されるIDを表します。
また実行出来る権限を細かく設定することが出来ますがグーグルが付与するロールを含めないことで実行権限を限定することが出来ます。
サービスアカウントを作成するにはサービスアカウントをクリック ⇒ サービスアカウント作成をクリックします。
サービスアカウント詳細ではサービスアカウント名とIDを入力します。
サービスアカウントの説明欄にはメモを書いておくと備忘録になり便利です。
入力が終われば「作成して実行」をクリックします。
② ③ は省略出来ますので「完了」をクリックします。
サービスアカウントキー の作成
ここまでの作業で実行権限が制限されたサービスアカウントが作成されました。
次にサービスアカウントの秘密鍵(サービスアカウントキー)を作成します。
右にある3つの・をクリックすると一覧が表示されますので「鍵を管理」を選択します。
次に「鍵を追加」をクリック して 新しい鍵を作成します。
JSON と P12を選択出来ますがJSONのほうが後々便利か?と思います。
ダウンロードは一度のみとなります。
またこのキーは”家や車の鍵”と同じです。
つまり落とせば(流出すれば)誰でも使えますので注意が必要です。
ダウンロードが完了し新しくサービスアカウントキーが作成されました。
サービスアカウントキーは赤枠で囲った部分に記されています。
esp32ではJSONに代えてこの赤枠にあるサービスキーを利用します。
このサービスアカウントキーとルート証明書でgooglesheetにesp32から書き込むことが出来るようになります。
esp32でgooglesheetsに書き込みする
esp32からgooglesheetに書き込みするには?ということで数年前から記事を上げていますが、その間googleのセキュリティ強化により従来のコードが使えなくなった方も多いのでは?と思います。
そこで、改めて手順をまとめてみます。
② googlesheetsにスクリプトを記述する
③ ルート証明書を準備する
④ グーグルクラウドでサービスキーを作成する
⑤ プログラムをesp32に書き込む
このようなステップを踏むことでesp32からgooglesheetsに温度やEC値、湿度などセンサーで計測したデータをgooglesheetsに定期的に書き込むことが出来ます。
またgooglesheets側からesp32に指示を出すことも可能です。(今日は少し多めに水やりしようとか今日はやめておこうなど)
ここでは④ グーグルクラウドでサービスキーを作成する方法を共有してみました。
ルート証明書の作成方法はこちらです。