Nature RemoとGASを使って原木椎茸を栽培しているビニールハウス内の温度・湿度をリアルタイムで記録できるようにしてみました。
これができますと、「【計画編】原木椎茸の収穫のタイミングで通知してくれるものを作ってみる。」で書いたような「積算温度から収穫のタイミングを通知してくれるもの」が作れます。スマート化へ向けた第一歩です。
Nature Remo 3 ネイチャーリモ スマートリモコン 温湿度/照度/人感センサー搭載 スマートロック対応 アレクサ/Google Home/Siri対応 Remo-1W3
by SimpleImageLink
Nature Remoというのはスマホから家電などを操作するためのスマートリモコンなのですが、APIが公開(https://developer.nature.global/)されていてセンサーから得られるデータをリアルタイムに取得することが可能です。(今回はリモコンとしての機能は使いません。)
モデルはmini/2/3とありますが、2もしくは3であれば温度・湿度(と照明・人感)のセンサーがついています。miniですと温度のみです。後々分析の幅も広がりそうなので、湿度も測定できる3を購入しました。
-----
追記(2021-1-14)
購入時に気がついていなかったのですが、湿度の測定範囲が30〜70%なので、それ以上のレンジでの測定が必要となる場合にはNature Remoでは難しそうです。トリガー目的であればいいですが、分析目的であれば別の方法を考えた方が良さそうです。温度のみであればminiで大丈夫です。
-----
このデータをGAS(Google Apps Script)を使ってスプレッドシートに書き込みます。
データの取得にはNature Remoの設置場所(今回はビニールハウス内)にWi-Fi環境が必要となるため、最低限の容量で使用できるHIS Mobileのビタッ!プランを契約、合わせて富士ソフトのモバイルWi-Fiルーター「+F FS030W」を購入しました。
富士ソフト SIMフリー wi-fi ルーター dual band +F FS030W LTE 対応 microSIM FS030WMB1
by SimpleImageLink
これで必要な道具はそろいました。
ちなみにここまでにかかった費用は、
・Nature Remo 3 - 9,980円
・HIS Mobile 事務手数料 - 3,300円
・+F FS030W - 10,300円
合計 23,580円(税込)です。
小規模農家でもこのくらいの初期費用であれば、実験として軽い気持ちでスマート農業に取り組めますね。
以下、設定方法です。
① Nature Remoの初期設定
セットアップにWi-Fi接続が必要になりますが、今回用意したモバイルWi-Fiルーターで接続してしまうと貴重な容量を食ってしまうため、容量を気にしなくていい別のWi-Fiを利用した方がいいかも知れません。接続するWi-Fiは後から変更できます。
② ビニールハウスに設置
こんな感じでビニールハウス内に設置しました。
電気はもともと引いてあり天井を通っているので、延長コードで引っ張ってきました。かっちり固定はせずメッシュのバッグに入れてぶら下げました(測定値に影響あるかも?)。撒水時も避ければまぁ大丈夫そうです。
写真ではほぼ見えないですがモバイルWi-Fiルーターも一緒にバッグに入っています。記録を開始するにはNature RemoのWi-Fi設定を更新してモバイルWi-Fiルーターに接続します。
Nature Remoの測定値の校正のため別の温湿度計も設置。
③ スプレッドシートの準備
スプレッドシートは見出しとして1行目に「タイムスタンプ」「温度」「湿度」「温度校正値」「湿度校正値」と手入力。
シート名は「log」にしておきます(GASでこの名前で使います)。
Nature Remoではセンサーから取得する温度と湿度の値を校正することができます。APIから取得する温度・湿度は校正後の値となるため、後から調整が必要になった時のために校正値も取得しておきます。
④ コードの作成
スプレッドシートの「ツール」→「スクリプト エディタ」でGASを開きます。
コードは以下の通り。
var access_token = "Nature Remo アクセストークン"; var spreadsheet = SpreadsheetApp.openById("スプレッドシート ID"); var sheet = spreadsheet.getSheetByName("log"); function main() { var data = getNatureRemoData(); var lastRow = sheet.getLastRow(); sheet.insertRows(lastRow + 1); setData(data, lastRow + 1); } function getNatureRemoData() { var url = "https://api.nature.global/1/devices"; var headers = { "Content-Type" : "application/json;", 'Authorization': 'Bearer ' + access_token, }; var options = { "method" : "get", "headers" : headers, }; var data = JSON.parse(UrlFetchApp.fetch(url, options)); return data; } function setData(data, row) { sheet.getRange(row, 1).setValue(new Date()); sheet.getRange(row, 2).setValue(data[0].newest_events.te.val); sheet.getRange(row, 3).setValue(data[0].newest_events.hu.val); sheet.getRange(row, 4).setValue(data[0].temperature_offset); sheet.getRange(row, 5).setValue(data[0].humidity_offset); }
書き換えが必要なのは次の2ヵ所です。
・1行目「Nature Remo アクセストークン」
https://home.nature.global/ より発行できます。後から再表示ができないのでメモしておきます。
・3行目「スプレッドシート ID」
https://docs.google.com/spreadsheets/d/ここの値をコピペ/edit#gid=0
GAS初回実行時は承認が必要となります。無料のGoogleアカウントの場合「このアプリは確認されていません」というページが表示されます。ここで「安全なページに戻る」をクリックすると実行できませんので、「詳細」→「プロジェクト名(安全ではないページ)に移動」から承認します。
⑤ トリガー設定
「トリガーを追加」より、
・「実行する関数を選択」→ main
・「実行するデプロイを選択」→ Head
・「イベントのソースを選択」→ 時間主導型
・「時間ベースのトリガーのタイプを選択」→ 分ベースのタイマー
・「時間の間隔を選択(分)」→ 15 分おき
・「エラー通知設定」→ 今すぐ通知を受け取る
時間の間隔は適宜変更してください。
⑥ 記録開始
うまくデータが取れました。
通信容量に関しては記録開始から2週間程度で21MBでした。ブレはあるかと思いますがビタッ!プランの月に100MBまでのプランで十分そうですね。
月々の運用費は通信費180円(税別)と電気代幾ばくとなります。
***
ということで、Nature RemoとGASを使って温度・湿度をリアルタイムで記録する方法でした。
現在、このデータを元に積算温度を計算したり、通知を出したりといろいろ試しているのですが、思った以上に有用そうだなというのが感触です。栽培技術の向上にもつなげられるのではなかろうかと。
・関連投稿
GASで動的な栽培管理用データ閲覧Webページを作る。