Raspberry Piとconect+をWeb APIでつなげてみた! | conect+ - Part 3

Raspberry Piとconect+をWeb APIでつなげてみた!

Raspberry Piとconect+をWeb APIでつなげてみた!

 

前回はconect+での設定方法について解説しました。

いよいよ最終回ではラズパイで計測したデータとconect+の連携についてお伝えします。

 

大まかな流れは以下のようなイメージです。

 1. ラズパイに接続したセンサーから温度と湿度を計測

 2. 計測データをconect+のクラウド上に保存

 3. conect+アプリで計測データを表示

「3.」のアプリでの計測データ表示にはiPhoneが必要となります。

Android版のconect+アプリについては今後開発予定です。

 

ラズパイに接続したセンサーから温度と湿度を計測

D4ポートに接続した温湿度センサーからデータを読み取る処理をサンプルプログラムを参考に実装します。

下記のような感じです。


from grovepi import *
from math import isnan
DHT_SENSOR_PORT = 4 # connect the DHt sensor to port 4
DHT_SENSOR_TYPE = 0 # use 0 for the blue-colored sensor and 1 for the white-colored sensor
try:
# get the temperature and Humidity from the DHT sensor
[ temp,hum ] = dht(DHT_SENSOR_PORT,DHT_SENSOR_TYPE)
print("temp =", temp, "C\thumidity =", hum,"%")
# check if we have nans
# if so, then raise a type error exception
if isnan(temp) is True or isnan(hum) is True:
raise TypeError('nan error')
except (IOError, TypeError) as e:
print(str(e))
except KeyboardInterrupt as e:
print(str(e))

計測データを定期的にconect+のクラウド上に保存

続いて、conect+のクラウドに計測データを保存する処理を実装します。

下記のような感じです。


import pprint
import json
import requests
from pytz import timezone
from datetime import datetime
def post_data(api_key, device_id, data_key, sensing_at, value):
url = "https://api.conect.plus/v1/%(api_key)s/data" % {'api_key':api_key}
response = requests.post(
url,
json.dumps({
'deviceUuid':device_id,
'key':data_key,
'sensingAt':sensing_at,
'value1':value}),
headers={'Content-Type': 'application/json'})
pprint.pprint(response.json())
def now_utc_str():
return datetime.now(timezone('UTC')).strftime("%Y-%m-%d %H:%M:%S")
post_data('{APIキー}', 'device01', 'temperature', now_utc_str(), 23.0)

 

必要なライブラリはインストールしてください。


pip install request
pip install pytz

 

先ほど実装したデータ計測処理に、データ保存処理を追加します。

プログラムの全体は下記のようになります。


from grovepi import *
from math import isnan
import pprint
import json
import requests
from pytz import timezone
from datetime import datetime
def post_data(api_key, device_id, data_key, sensing_at, value):
url = "https://api.conect.plus/v1/%(api_key)s/data" % {'api_key':api_key}
response = requests.post(
url,
json.dumps({
'deviceUuid':device_id,
'key':data_key,
'sensingAt':sensing_at,
'value1':value}),
headers={'Content-Type': 'application/json'})
pprint.pprint(response.json())
def now_utc_str():
return datetime.now(timezone('UTC')).strftime("%Y-%m-%d %H:%M:%S")
DHT_SENSOR_PORT = 4 # connect the DHt sensor to port 4
DHT_SENSOR_TYPE = 0 # use 0 for the blue-colored sensor and 1 for the white-colored sensor
API_KEY = '{APIキー}'
DEVICE_ID = 'device01'
DATA_KEY_TEMPERATURE = 'temperature'
DATA_KEY_HUMIDITY = 'humidity'
try:
# get the temperature and Humidity from the DHT sensor
[ temp,hum ] = dht(DHT_SENSOR_PORT,DHT_SENSOR_TYPE)
print("temp =", temp, "C\thumidity =", hum,"%")
# check if we have nans
# if so, then raise a type error exception
if isnan(temp) is True or isnan(hum) is True:
raise TypeError('nan error')
# post data
now = now_utc_str()
post_data(API_KEY, DEVICE_ID, DATA_KEY_TEMPERATURE, now, temp)
post_data(API_KEY, DEVICE_ID, DATA_KEY_HUMIDITY, now, hum)
except (IOError, TypeError) as e:
print(str(e))
except KeyboardInterrupt as e:
print(str(e))

 

このプログラム(temp_humi_sensing.py)を保存し、実行してみます。


$ python temp_humi_sensing.py
('temp =', 24.0, 'C\thumidity =', 60.0, '%')
{u'message': u'Success.', u'status': u'SUCCESS'}
{u'message': u'Success.', u'status': u'SUCCESS'}

 

実行結果をconect+の管理画面上で確認します。

データがconect+のクラウド上に保存されたのが確認できます。

定期的(10分に1回)にデータを取得するため、cronにプログラムの実行を設定します。

 


*/10 * * * * python /home/pi/sample/temp_humi_sensing.py

月額基本利用料に20,000APIコールまで含まれていますので10分毎にデータ送信した場合、

6(コール / 時) x 24(時間) x 30(日) = 4,320(コール / 月)

今回は温度と湿度を計測していますので、その2倍の8,640(コール / 月)となりますので、月額基本利用料内に収まりそうです。

conect+アプリで計測データを表示

最後にconect+アプリでクラウド上の計測データと連携させます。

まずは、AppStoreからconect+をインストールします。

アプリを起動してログイン後に製品の追加を行います。

次に追加した製品にデバイス(データ保存時に指定したdeviceUuid)を紐付けます。

これで、センサー → ラズパイ → クラウド → アプリ が連携されました。

10分後にデータ計測されれば自動的にアプリに最新データが反映されます。

 

 

以上、3回にわたりラズパイとconect+との連携方法を解説いたしました。

WebAPIを使用すれば、とてもカンタンにconect+に接続し、IoTアプリのUIを生成できることを感じていただけたと思います。

IoTアプリにご興味のある方は、是非conect+をお試しください。

 

フリートライアルはこちらから

 

 

 

 

c+

今後ともconect+をよろしくお願い致します。

Connecting great Designs with great Technologies.

 


事業提携のご相談などお気軽にどうぞ!

 

相談する(無料)

 

 

無料でIoTアプリをつくる

 

conect+ではご利用・ご検討をサポートするデモ(無料)を実施しております。

プログラミングやデザインの知識は不要で、conect+やIoTにご興味のある方であればどなたでもお申込み頂けます。

主な内容は、conect+の概要説明および実際の活用事例のご紹介を行ない、その後にサンプルキットを使って、参加者自身で学習していただきます。デモは1名様から実施しておりますのでお気軽にお申込みください。

 

 

更に!フリーユーザー登録でIoT事例集をプレゼント

conect+をご登録の皆さま全員に、独自に調査したIoT課題調査結果と世界のIoT事例をまとめたレポートをプレゼントしております。

 

 

初期費用・月額費用0円で始める
IoTプロジェクト

お使いのIoTプロジェクト規模に応じて選べるプラン

今すぐ始める
  • App Store

お気軽にお問い合わせください

事例集ダウンロード