Wio-node+ソーラーとラズパイ、Ambient
Wio-nodeをソーラー電源で動かして地温と土壌水分を一定時間ごとに計測し、ラズパイ経由でAmbientにデータを蓄積していくシステムを作ります。
Wio-nodeをWIfiに繋いで携帯のアプリからセットアップする。センサーを取り付ける。携帯のアプリから動作を確認する。トークンを確認してコピーしておく。
Wio Node関連参考情報
はじめての Wio Node - 設定からNode-REDで制御まで
asanoqm/Wio Nodeのセットアップとデータの取得
Node-REDでWio Node用Nodeがあったので使ってみたメモ
asanoqm/Node-REDでWio Nodeを利用する
Wio node + Groveセンサー + Node-RED + Ambientで超簡単IoT
http://seeed-studio.github.io/Wio_Link/#write-to-a-grove-module
Wio Node設定 - 繋がらない場合 | dotstudio
→ この前提としての作業:
How to Install Node.js and NPM on Mac OS
ラズパイのセットアップ
(1)10分おきに計測値を読み込んでディープスリープ を繰り返すシェルスクリプトを用意する。
wio_node_1.sh
#!/bin/sh
{
curl -k https://us.wio.seeed.io/v1/node/GroveMoistureA0/moisture?access_token=(トークン)
curl -k https://us.wio.seeed.io/v1/node/GroveTemp1WireD0/temp?access_token=(トークン)
curl -X POST https://us.wio.seeed.io/v1/node/pm/sleep/590?access_token=(トークン)
echo
} | sed 's/}{/,/g' > wio_node_1.txt
地温と土壌水分の値がwio-node_1.txtに書き込まれる
注)シェルスクリプトには chmod +x (ファイル名)で実行権限を付与する必要がある
(2)wio-node_1.txtに書き込まれた地温と土壌水分の値をAmbientに送るPythonのプログラムを用意する。
wio_ambient.py
import json
import ambient
am = ambient.Ambient(チャンネル番号, "キー")
wio_1 = open('/home/pi/wio_node_1.txt', 'r')
wio_1_json = json.load(wio_1)
print(wio_1_json)
try:
temp1 = wio_1_json['temperature']
mois1 = wio_1_json['moisture']
except:
print(" *** Error occured wio1 *** ")
(中略)
try:
am.send({"d1": temp1, "d2": mois1, "d3": temp2, "d4": mois2,"d5": temp3, "d6": mois3, "d7": temp4, "d8": mois4}) #一度に送れるのは8つ
except:
print(" *** Error occured ambient wio1-wio4 *** ")
注)Ambientのライブラリは別途インストールしておく
エレキジャックIoT 2号 P55参照$sudo apt-get install git$sudo pip3 install git+https://github.com/AmbientDataInc/ambient-python-lib.git
(3)10分おきに(1)→(2)を実行するようにcrontabを設定する。logはwio_ambient.logに追記される。
#0,10,20,30,40,50 * * * * /home/pi/wio_node_1.sh
#0,10,20,30,40,50 * * * * /home/pi/wio_node_2.sh
#0,10,20,30,40,50 * * * * /home/pi/wio_node_3.sh
#0,10,20,30,40,50 * * * * /home/pi/wio_node_4.sh
#0,10,20,30,40,50 * * * * /home/pi/wio_node_5.sh
#0,10,20,30,40,50 * * * * /home/pi/wio_node_6.sh
#0,10,20,30,40,50 * * * * /home/pi/wio_node_7.sh
#0,10,20,30,40,50 * * * * /home/pi/wio_node_8.sh
#2,12,22,32,42,52 * * * * date >> wio_ambient.log; /usr/bin/python3 /home/pi/wio_ambient.py >> wio_ambient.log 2>&1