ラズパイからAmbientへデータ送信
この記事では、Raspberry Piなどのセンサーのデータをグラフ化してくれる無料サービス「Ambient」へ、データを送信する方法を解説していく。 Ambientは、送信したデータをウェブブラウザでグラフ表示してくれる素晴らしいサービス。今回はRaspberry Piに繋いだ照度センサーと温度センサーのデータを、Ambientへ送信してみた。
照度センサーと温度センサーの使い方はこちらを参考に
AmbientのPythonライブラリのインストール
Raspberry PiのPythonでAmbientを使えるようにするため、次のようにしてライブラリをインストールする。
$ pip3 install git+https://github.com/AmbientDataInc/ambient-python-lib.git
$ pip3 list | grep ambient
ambient 0.1.6
実際にPythonプログラムで使う場合は、次のようにモジュールをインポートする。
import ambient
import requests
Ambientライブラリの詳しい説明はこちらを参考に
Ambientへデータ送信
Ambientにデータを送るのは簡単。下のプログラムのように、チャネルIDとライトキーを設定し、 am.send({'d1': 数値, 'd2': 数値}) の形でデータを送信するだけ。
am = ambient.Ambient(チャネルId, ライトキー)
try:
res = am.send({'d1': 数値, 'd2': 数値})
print('sent to Ambient (ret = %d)' % res.status_code)
except requests.exceptions.RequestException as e:
print('request failed: ', e)
ただし、Ambientに送へ送れる一日のデータ件数は、1チャネルあたり3000件となっている。それ以上を超えると413エラーが返ってきてしまう。だから30秒以上の間隔を空けて送信すれば、制限以内におさまるだろう。
Ambientの利用制限についてはこちらを参照
照度と水温をAmbientへ送信してみた
実際にベランダの照度と水耕栽培の水温を測って、Ambientにデータを送信してみた。図のように、データの推移をウェブブラウザからグラフで確認できるようになった。
SSHで実行するとプログラムが途中で止まってしまう場合
Raspberry PiをSSHでリモートコントロールしている場合、SSHをログアウトすると実行しているプログラムも終了してしまう。それを回避するには、$ nohupコマンドを使えば良い。
$ nohup python3 photo-temp.py > out.log &
nohupで実行したプログラムを終了させる場合は、$ ps x でプロセスIDを調べて $ kill PID しよう。
PID TTY STAT TIME COMMAND
1197 ? Ss 0:00 /lib/systemd/systemd --user
1200 ? S 0:00 (sd-pam)
1215 ? S 0:00 sshd: pi@pts/0
1218 pts/0 Ss 0:00 -bash
1267 pts/0 S 0:02 python3 photo-temp.py
1275 pts/0 R+ 0:00 ps x
この記事で扱った関連製品はこちら
Raspberry Piの参考書
本書は、全世界で多くのユーザーの支持を集めているマイコンボード「Raspberry Pi」を使いこなすためのレシピ集です。ハードウェアの基本、オペレーティングシステムの使い方、ネットワーク接続、Pythonプログラミングの基本を紹介した上デ、実際の作品製作に必要になる、高度なPythonプログラミング、GPIO(汎用入出力)、モーター、センサー、ディスプレイなどの使い方へと解説を進めていきます。
Amazon本書は、大人から子供まで、初心者の方でも、ラズパイZeroとラズパイZero WをIoTのデバイスとして使いこなせるようになることを目的とした入門書です。また、ラズパイZeroとラズパイZero WをUSBケーブル1本でパソコンに接続できる便利な「Zero over USB」について、日本で初めて詳しく解説しました。
Amazon最後まで読んでいただきありがとうございました。
「この記事が参考になったよ」という方は、ぜひ記事をシェアをしていただけるととても嬉しいです。
今後も有益な記事を書くモチベーションにつながりますので、どうかよろしくお願いいたします。↓↓↓↓↓↓↓