LoginSignup
11
6

More than 5 years have passed since last update.

kintoneを使ってIoTデバイスのデータを収集する(温度編)

Last updated at Posted at 2018-01-11

はじめに

サイボウズさんの中の人から「使ってみられませんか?」とお誘いを受け、試しに使ってみたので知見を共有します。

とても簡単にできたので、自社のIoT関連サービスに利用することを視野に入れつつ、顧客にも紹介してみたいと思っているところです。

kintone

  • 収集したデータでグラフを描画してみた スクリーンショット 2018-01-11 9.18.10.png

材料

Raspberry PIのセットアップ

「raspberry セットアップ」で検索すると山ほど情報が出てくるので、そちらに任せることにして、ここでは割愛します(^_^;)

温湿度センサの接続

これもたくさん情報があるので、ここでは割愛(^_^;)
ちなみに、検索すると以下のサイトが見つかりました。

Raspberry Piと温度・湿度・光センサーでオフィスの状況を可視化する

センサ情報の取得

前述の記事とは別のライブラリを使ってデータを取得します。

以下のURLからライブラリを取得。

szazo/DHT11_Python

ラズパイにログインして、以下のコマンドを実行。

$ git clone https://github.com/szazo/DHT11_Python.git

ダウンロードしたライブラリから「dht11.py」を取り出し、以下のスクリプトと同じ場所に保存。

sample.py
import RPi.GPIO as GPIO
import dht11

# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

# read data using pin 4
instance = dht11.DHT11(pin = 4)
result = instance.read()

if result.is_valid():
    print("Temperature: %d C" % result.temperature)
    print("Humidity: %d %%" % result.humidity)
else:
    print("Error: %d" % result.error_code)

以下のコマンドを実行してデータを計測できていたら接続成功!

$ python sample.py

kintoneのアプリ作成

ログインして、ポータルの「アプリ」右側にある「+」をクリック。

スクリーンショット 2018-01-11 10.33.30.png

「あたらしくアプリをつくる」から「はじめから作成」をクリック。

スクリーンショット 2018-01-11 10.33.39.png

作成画面で、「日時」と「数値」のフォームをドラッグ。

スクリーンショット 2018-01-11 10.33.58.png

フォームの完成図。

スクリーンショット 2018-01-11 10.34.18.png

数値の「設定」を変更。

スクリーンショット 2018-01-11 10.34.22.png

スクリーンショット 2018-01-11 10.34.48.png

フィールドコードを「temp」にして保存。

スクリーンショット 2018-01-11 10.35.09.png

アプリ名を「温度監視」に変更して「アプリを公開」をクリック。

APIトークンの作成

「温度監視」の設定変更画面を表示させる。

スクリーンショット 2018-01-11 10.35.51.png

「APIトークン」をクリックし、「生成する」ボタンをクリック。

スクリーンショット 2018-01-11 10.36.09.png

スクリーンショットでは表示していませんが、APIトークンの列に英数の文字列が表示されますので、こちらをどこかに転記し、アクセス権を「レコード追加」のみにして「保存」をクリック。最後に『アプリを更新』をクリックし、設定を反映させます。

スクリプトの修正

以下のとおり修正します。

sample.py
#!/usr/bin/env python3

import RPi.GPIO as GPIO
import dht11
import requests

# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

# read data using pin 4
instance = dht11.DHT11(pin = 4)
result = instance.read()

if result.is_valid():

    print("Temperature: %d C" % result.temperature)
    print("Humidity: %d %%" % result.humidity)

    url = "https://xxxx.cybozu.com:443" # アプリのURL
    appId = "1" # アプリID
    apiToken = "xxxxxxxxxxxxxxxxxxx" # APIトークン

    record = {'temp':{'value' : str(value)}}
    data   = {'app':appId,'record':record}

    headers = {"X-Cybozu-API-Token": apiToken, "Content-Type" : "application/json"}
    resp = requests.post(url+'/k/v1/record.json',json = data,headers = headers)

    print(resp)

else:
    print("Error: %d" % result.error_code)

以下のコマンドで実行し、データが追加されれば成功。

$ python sample.py

自動起動

スクリプトに実行権限を付与し、cronに登録する。

$ chmod a+x sample.py
$ crontab -e

5分ごとにデータを送信するため、以下の行を追加。

*/5 * * * * /home/pi/sample.py

完成!

11
6
0

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
11
6