ミニ畑の土中状況をSORACOM HarvestとLagoonで見える化

はじめに

◆経緯

以前展示会で農業IoTのセンシングをイメージしてもらう為に用意した、小さなボックス型ミニ畑があります。折角のこのミニ畑(以降CNDミニ畑)、そのまま倉庫で眠らせるのももったいないですし、農業IoTのお手伝いに役立てられるように何か室内で育成しようと考えました。
そこで、今回EnOcean長距離無線機器&RaspberryPi&SORACOMサービスを組み合わせてCNDミニ畑の見える化のシステムを構築した作業ログをまとめました。

◆結論から

色々調べた結果、SORACOMはInventory、Harvest、Lagoonのサービスを使います。トータル作業時間半日~1日あれば見える化まで達成できると思います。

写真でお見せしたほうがわかりやすいかと思いますので抜粋を載せます。
(左)ミニ畑の土にEnOcean土中温度センサーと土中水分量センサーを挿してEnOcean長距離無線でデータを飛ばす送信機の写真です。
(中央上)EnOcean長距離無線受信機とSORACOMへデータを飛ばすRaspberryPiの写真
(中央下)EnOcean長距離無線用土中温度センサーと土中水分量センサーの写真
(右)SORACOM Harvestのデータを使ってLagoonでデータを見える化した画面の写真

EnOcean長距離無線機器&RaspberryPi&SORACOMサービスを組み合わせて構築した成果

◆システム構成

EnOcean長距離無線機器&RaspberryPi&SORACOMサービスを組み合わせて構築したシステム構成図

簡単ではありますが、システムのざっくりとした流れは

  • CNDミニ畑の土中温度と土中水分量をEnOcean長距離無線用センサーでセンシング
  • EnOcean長距離無線用送信機でデータを(室内に無駄に)飛ばす。
  • (室内で無駄に飛んだデータを)EnOcean長距離無線用受信機でデータを受信する。
  • 受信したデータをRaspberryPiからSORACOM Inventory経由でSORACOM Harvestにデータを送る。
  • 蓄積されたSORACOM Harvestのデータを基にSORACOM Lagoonでデータを可視化

このような流れでシステム構築してみます。

※SORACOMのSIMを使うとSORACOM AirからダイレクトにSORACOM Harvestに登録することができますが、今回は弊社事務所内の環境で行う&SIMカードの月額料金を抑えるため社内のインターネット環境からSORACOM Harvestに登録できる SORACOM Inventory経由で登録することにしました。

用意するもの

名称個数備考
Raspberry Pi1個KSY ※バージョンは何でもOKです
EnOcean長距離無線用 送信機・受信機1個EnOcean
EnOcean長距離無線用 土中温度・水分量センサー1個EnOcean
適量社内在庫
SORACOMアカウント1アカウント

※今回の土中センシングはEnOceanの長距離センサーを使用していますが、センサーに関しては何でもOKです。

【手順①】SORACOM Inventoryでデバイスの登録とHarvestへのデータ登録確認

まずはSORACOM Inventoryでデバイスの登録を行います。今回SORACOM へデータを送るGW役はRaspberry Pi Model 3B+です。このRaspberry Piをデバイスとして登録します。


SORACOMのユーザコンソールにログインして画面左上の「Menu」から「SORACOM Inventory」のセクションを選択して「デバイス管理」をクリックします。次に「+デバイスを追加」をクリックしてデバイスの追加を行います。この時グループが無ければ新たに作成する必要があります。

デバイスの名前とグループを選択したら下の図のように「作成」ボタンを押すと、デバイスキー作成の画面が表示されますので、[デバイスID]、[デバイスキーID]、[シークレットキー]を控えておきます。

SORACOM Inventoryでデバイス追加

次に先ほど登録したデバイスのグループに対してSORACOM Harvest Dataを使える権限を付与します。
グループを選択して「基本設定」タブの「SORACOM Harvest Data設定」を「ON」にして「保存」ボタンを押します。

SORACOM Harvest Data設定をONにする

上記に表示されている「デバイスエントリポイント(HTTP)」でリクエストを投げるとSORACOM Harvestにデータが登録されます。


早速試してみましょう。何かリクエストを投げられるGitBushなどのツールから以下のようなGETまたはPOSTを投げてみます。
<シークレットキー>と<デバイスID>は先ほどデバイス登録時に控えた[デバイスID]、[シークレットキー]です。データは任意ですがここでは温度と湿度を表すデータを投げてみます。

curl -X POST --header 'x-device-secret: <シークレットキー>' -d '{"temp":23.5,"humi":39.6}' https://api.soracom.io/v1/devices/<デバイスID>/publish
curl -X GET --header 'x-device-secret: <シークレットキー>'  https://api.soracom.io/v1/devices/<デバイスID>/publish?temp=23.5\&humi=39.6

リクエストを投げましたらデータが登録されているか確認してみます。確認方法はデバイスを選択(チェック)して「操作」から「データを確認」をクリックするとデータが確認できます。

SORACOM Harvestでのデータの確認

ここまででSORACOM Inventory~Harvest Dataまで無事動作できていることが確認できました。

次に実際のセンサーでセンシングしたデータをSORACOMへ投げる工程です。

【手順②】EnOcean長距離無線用センサーデータ受信と送信

RaspberryPiにPythonをインストールして、以下ようなプログラムで先ほどのSOARACOM Inventoryにリクエストを投げた時と同じようにリクエストを投げます。今回はPOSTで投げました。

実際に動かしてみてSORACOM Harvest Dataでデータの受信を確認できたらOKです。

header = {'x-device-secret':'<シークレットキー>','content-type':'application/json'}
url = 'https://api.soracom.io/v1/devices/<デバイスID>/publish'

# EnOceanのセンサーデータを受信
…(割愛)

humi = <EnOcean土中水分量センサーの値>
temp = <EnOcean土中温度センサーの値>

param = {"humi":humi,"temp":temp}
param_encode = json.dumps(param)

ret = requests.post(url, headers=header,data=param_encode)

※今回は土中センシングはEnOceanの長距離無線用の受信機・送信機、温度センサー、水分量センサーをしようしましたが、センシングに関しては何を使っても代用可能です。

【手順③】SORACOM Lagoonでデータを可視化

最後にSORACOM Harvest Dataに登録された温度と水分量のデータをLagoonで可視化する工程です。

SORACOMユーザコンソール画面左上の「Menu」から「データ収集・蓄積・可視化」のセクションを選択して「SORACOM Lagoon」をクリックします。

次にLagooを使うのが初めての方は下の図のような画面が表示されると思います。「SORACOM Lagoonの利用を開始する」ボタンを押下して、

Lagoonのプランを選択する画面に遷移します。今回は試しに…。ということで「Free」の選択ボタンを押して続行します。

SORACOM Lagoonの利用開始

利用開始にあたりユーザのパスワードを設定する必要があります。パスワードの条件に満たすようパスワードを入力します。パスワード設定後は「SORACOM Lagoon consoleにアクセス」ボタンを押すとLagoonのログイン画面が表示されますので、ログインユーザとパスワードを入力しログインします。

SORACOM Lagoonログイン

ログインが完了すると、SORACOM Lagoonの画面が表示されますのでここからHarvest Dataを基にデータの見える化を自由に表現できます。

まずは温度データの最新データを見える化するための手順を紹介します。始めるにあたりダッシュボードを新規で作成して進めていきます。※今回のFree版をダッシュボードが1個だけ作れるプランです。
画面左側の「+」ボタンを押下し「ダッシュボード」を選択します。次に「Add」タブから「Singlestat」を選択しPanel Titleから「編集」をクリックします。

SORACOM Lagoonダッシュボード作成

詳細設定の画面が表示されますので以下のように「全般」タブにタイトルを「メトリック」タブで基なるデータを選択します。ここではデータソースをdefault又はHarvestを選び最初に作成したグループを選択します。最後にhttpリクエストで投げたjson形式の”temp”を選択。「オプション」タブはデータをどう表現するか。の設定ですので今回はメータ形式で表現したいので、以下のような設定をします。

SORACOM Lagoonでグラフ作成

こられの設定後、画面右上の矢印ボタン(ダッシュボードに戻る)をクリックすると以下のようなメータが表示されます。

SORACOM Lagoon表示イメージ

このような感じでダッシュボードにパネルを追加して⇒データソースを選択して⇒表現をどうするか設定すれば色々な形式でデータを表現できます。
グラフを表示させたい場合はSORACOMさんHP(https://dev.soracom.io/jp/start/lagoon-dashboards/)に詳しく記載されています。
参考までに今回私が作成した見える化はこのような感じで表現しました。
これをディスプレイやタブレットで表示して土中の状態を監視できるようにします。

SORACOM Lagoon最終画像イメージ

以上で今回のSORACOMのHarvestとLagoonを使った弊社ミニ畑の見える化を簡単ではございますが作業ログとして記載しました。

最後に…


自分でWebシステムを開発してデータの管理やグラフ作成を行うと結構時間とコストがかかってしまいますが、SORACOMさんの各種サービスを使うと短時間であっさりとできるのが非常に良いです!
細かなグラフ表現やちょっとした加工には向かないかもしれませんが、単純な見える化できれば…ようなレベル感であればまずは、SORACOMさんサービスを駆使してお客様へご提供するのも一つの選択肢として良いと思いました。

簡単ではございますが以上となります。CND畑に何を植えようか…。