LoginSignup
1
1

More than 5 years have passed since last update.

ラズパイでオフィス環境をセンシングしてグラフ化する【簡易グラフ化編】(4/4)

Last updated at Posted at 2018-07-04

ラズパイでオフィス環境をセンシングしてグラフ化するの簡易グラフ化編です。

前回取得したセンサー値を Ambient というグラフを作ってくれる
SaaSに送り、次のようなグラフを1つ作ってみます。

image.png

手順は次の通り。

ユーザー登録する

さきほどのリンクから行います。

チャネルを生成する

チャネルはデバイスからセンサー値を受信する単位です。
1つのチャネルで最大8つのセンサー値を受信できます。

チャネルとグラフは1:Nで対応します。
今回は次のようにしてみます。

項目
デバイス(ラズパイ) 1つ
センサー値 5種
チャネル 1つ
グラフ 1つ

ひとまず上記リンクからチャネルを生成し、適当な名前を
付けてチャネルIDとライトキーを取得してください。

チャネルIDとライトキーはデータ送信時に必要になります。

マイコン側プログラミング

前回までの方法でセンサー値を取得してAmbientに送信します。
次項を参照してください。

データー送信

取得したセンサー値をAmbientの Pythonライブラリー で送信します。

ライブラリのインストールと用法はリンク先に
記載の通りですが、ざっくりと次の通り。

ライブラリのインストール

pip install git+https://github.com/AmbientDataInc/ambient-python-lib.git

送信

Pythonでざっくり作ってみます。
次のような感じです。

send_to_ambient.py
# -*- coding: utf-8 -*-
#
# https://github.com/adafruit/Adafruit_Python_BME280
# https://github.com/sim0nx/tsl2561
# https://github.com/UedaTakeyuki/slider/blob/master/mh_z19.py
# https://ambidata.io/refs/python/
#
from Adafruit_BME280 import *
from tsl2561 import TSL2561
import serial
import ambient

def send():

    # 気温(℃)、湿度(%)、気圧(hPa)
    bme280 = BME280(t_mode=BME280_OSAMPLE_8, p_mode=BME280_OSAMPLE_8, h_mode=BME280_OSAMPLE_8)

    temperature = bme280.read_temperature()
    humidity = bme280.read_humidity()
    pressure = bme280.read_pressure() / 100

    # 照度(lx)
    illuminance = TSL2561().lux()

    # co2濃度(ppm)
    mhz19 = serial.Serial('/dev/ttyS0',
                          baudrate=9600,
                          bytesize=serial.EIGHTBITS,
                          parity=serial.PARITY_NONE,
                          stopbits=serial.STOPBITS_ONE,
                          timeout=1.0)

    mhz19.write("\xff\x01\x86\x00\x00\x00\x00\x00\x79")
    res = mhz19.read(9)
    co2 = ord(res[2])*256 + ord(res[3])

    # 送信
    # ここにチャネルIDとライトキーをセット
    amb = ambient.Ambient( 9999, "xxxxxxxxxxxxxxxx")

    amb.send({"d1": temperature,
              "d2": humidity, 
              "d3": pressure, 
              "d4": illuminance, 
              "d5": co2 })

if __name__ == "__main__":
    send()

上記の実行には Adafruit_BME280.py が必要なので同じ場所にコピーします。
正しく動作すると、Ambientで送信値がダウンロードできます。

動作確認できたらcronに仕込みます。

可視化(グラフ化)

グラフ作成は画面をいじってみるとすぐわかると思います。
画面右上にある次の2つのボタンから行います。

No. ボタン 主な設定項目
(1) チャネル設定 送信データの名前
(2) チャート設定 グラフの種類 ( 折れ線、棒グラフなど )
表示対象データの選択

画面右上にあるボタン
image.png

今回は次の通り設定しました。

チャネル設定
image.png

チャート設定
image.png

ここまで行うと、次のようなグラフが出てきます。
https://ambidata.io/ch/channel.html?id=2813

以上で完成です。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1