Wio-node+ソーラーとラズパイ、Ambient

Wio-nodeをソーラー電源で動かして地温と土壌水分を一定時間ごとに計測し、ラズパイ経由でAmbientにデータを蓄積していくシステムを作ります。


  1. Wio-nodeをWIfiに繋いで携帯のアプリからセットアップする。センサーを取り付ける。携帯のアプリから動作を確認する。トークンを確認してコピーしておく。


Wio Node関連参考情報

Wio NodeをArduinoとして動作させる

はじめての Wio Node - 設定からNode-REDで制御まで

asanoqm/Wio Nodeのセットアップとデータの取得

Node-REDでWio Node用Nodeがあったので使ってみたメモ

asanoqm/Node-REDでWio Nodeを利用する

Wio Nodeハンズオン メモ

Wio node + Groveセンサー + Node-RED + Ambientで超簡単IoT

http://seeed-studio.github.io/Wio_Link/#write-to-a-grove-module

Wio Node設定 - 繋がらない場合 | dotstudio

→ この前提としての作業:

MacにNode.jsをインストール

How to Install Node.js and NPM on Mac OS

日本にWioサーバーを設置しました



  1. ラズパイのセットアップ

(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