DIYガイガーカウンタ製作日記その1の続き。
前回はSparkfun製ガイガーカウンタから得たcpm値をuSv/hに変換してprintするとこまでだったので、今度はこれをSafacast API経由でSafecastサーバに送信してみます。
検討は過去記事空間放射線量データを公開しているSafecast。REST API経由で定点観測データを自動送信するには?でほぼ完了しているので、あとは組み合わせるだけです。
import requests
from datetime import datetime
from serial import Serial
# Sparkfunガイガーカウンタを接続したシリアルポートを開く
port = Serial("/dev/tty.usbserial-AK05C8NQ", baudrate=19200)
while True:
# cpm値の部分だけ抜き出す
cpm = int(port.readline().decode("ascii").split()[0])
# uSv/h換算
usv = cpm * 0.00812
print("{:.2f}[uSv]".format(usv))
# 計測した線量値をSafecastのHPから登録する際のやり取りをgoogle chromeでキャプチャした結果を使う
data = {
"measurement[value]": cpm,
"measurement[unit]": "cpm",
"measurement[captured_at]": datetime.utcnow().strftime("%d %B %Y, %H:%M:%S"),
"measurement[location_name]": "東京都昭島市",
"measurement[latitude]": 35.704502,
"measurement[longitude]": 139.353540,
"measurement[device_id]": 158,
"measurement[height]": "1m",
"measurement[surface]": "Floor",
"measurement[radiation]": "Air",
}
# Safecastサーバに送信する(API keyは伏字)
requests.post("https://api.safecast.org/en-US/measurements?api_key=xxx", data=data)
この結果が、記事のトップ絵になります。無事1分毎の線量データがSafecastに投稿できるようになりました。が、定点観測データを1分おきに送りつけるのはサーバ負荷対効果としてあまり宜しくない気がするので、適当に間引きたいと思います。
次回はXively連携でグラフ化したい。KeenIOの方がオシャレだけど、太陽光発電モニタリング分で無料枠を使い切ってしまったので、Xivelyに頑張ってもらいます。