Sense HAT の温度・湿度・気圧データを InfluxDB へ登録
Sense HAT で取得できる温度・湿度・気圧を InfluxDB へ記録していきます。
【参考情報】
タイムゾーンではまったので修正(2019/08/20)
※ InfluxDB の時間は、 UTC で登録した方が便利です。 now() 関数で返される日時は、 UTC のようで WHERE 句で now() を使いたい時など時間のズレを意識する必要がなくなります。
InfluxDB にデータベースを作成する
InfluxDB に 「 factory_env 」 データベースを作成します。
$ influx
Connected to http://localhost:8086 version 1.7.7
InfluxDB shell version: 1.7.7
> CREATE DATABASE factory_env
> USE factory_env
Using database factory_env
Python の InfluxDB モジュールインストール
Python から InfluxDB を使うため influxdb パッケージをインストールします。
$ sudo apt-get install python3-influxdb
※ pip でもインストールできます。(pip3 install influxdb)
データ登録用のプログラム作成
envsensor.py というファイルを作成します。
ざっくりプログラムの流れは、 InfluxDB に接続し環境センサーから値を取得します。取得したデータをもとに JSON 形式で登録データを作成し、 write_points メソッドで登録用のリクエストを発行しています。
#!/usr/bin/python3
from sense_hat import SenseHat
from influxdb import InfluxDBClient
from datetime import datetime
from pytz import timezone
client = InfluxDBClient(host='ホスト名',port=8086,database='factory_env')
sense = SenseHat()
time = datetime.now(timezonr('UTC')).isoformat()
temp = round(sense.get_temperature(),1)
pressure = round(sense.get_pressure(),1)
humidity = round(sense.get_humidity(),1)
json_body = [
{
"measurement": "environment",
"tags": {
"zone": "BLD13",
"host": "hostA"
},
"time": time,
"fields": {
"temp": temp,
"pressure": pressure,
"humidity": humidity
}
}
]
client.write_points(json_body)
作成したプログラムを実行できるよう権限を設定します。
$ chmod 755 envsensor.py
プログラムを実行して InfluxDB にデータが登録されることを確認します。
$ ./envsensor.py
あとは、 cron で定期的に実行すれば完了です。