2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Watson IoT Platformでルールを使ってみる

Last updated at Posted at 2016-10-04

初めてWatson IoT Platformを使ってみよう、というかたのためのガイドです。
Watson IoT Platformを使ってみるでIoTアプリを準備しました。

セットアップ

  1. デバイスを登録してセンサーデータを送信するを参照し、IoT Platformサービスを新たに作成してIoTアプリに接続し、デバイスを登録し、IoTデータを送信できるようにします
  2. アプリを登録してセンサーデータを受信するを参照し、APIキーを取得して、アプリケーションからpub/sub可能にします (アプリはこのサンプルでは当面使用しませんが、用意しておくと確認作業などでなにかと便利です)
  3. ここでは、サンプルとして下記のクライアント(デバイス側)アプリを使用します
devicePub.py
#!/usr/bin/python
# -*- coding: utf-8 -*-

import time
import paho.mqtt.client as mqtt
import threading
import random

#Set the variables for connecting to the iot service
broker = ""
username = "use-token-auth"
password = "123456789012345678" #auth-token
organization = "123456" #org_id
deviceType = "device_type_xxx"
deviceSerial = "deviceIdxxx"

topic = "iot-2/evt/status/fmt/json"

#Creating the client connection, set clientID and broker
clientID = "d:" + organization + ":" + deviceType + ":" + deviceSerial
broker = organization + ".messaging.internetofthings.ibmcloud.com"
mqttc = mqtt.Client(clientID)

#Set authentication values, if connecting to registered service
if username is not "":
	mqttc.username_pw_set(username, password=password)

mqttc.connect(host=broker, port=1883, keepalive=60)

#Publishing to IBM Watson IoT Platform
mqttc.loop_start()

while mqttc.loop() == 0:

	temp = random.randrange(-10,40)
	depth = random.randrange(-3,50)
	print "temp = " + str(temp) + ", depth = " + str(depth)
	msg = " {\"d\": {\"temperature\": " + str(temp) +",\"depth\": " + str(depth) + "} }";
	mqttc.publish(topic, payload=msg, qos=0, retain=False)

	print "message published"

	time.sleep(5)
	pass

スクリーンショット 2016-10-04 17.31.04.png

デバイスのプロパティの準備

  1. 後述のボードやルールで参照するため、デバイスからのデータをプロパティとして登録しておきます

  2. Watson IoT Platformの画面左側のメニューから「デバイス」を開き、右端の「スキーマの管理」メニューを選択します
    スクリーンショット 2016-10-04 17.41.21.png

  3. 画面右上の「+スキーマの追加」を選択します

  4. 「デバイスタイプ」として前項で作成したデバイスタイプを選択します

  5. 「プロパティ」を選択し、「接続先から」タブを開いたまま、前項のクライアントアプリを稼働させると、Watson IoT Platformへ到達しているデータがプロパティ選択の候補として表示されます

  6. ここではtemperaturedepthを選択しています
    スクリーンショット 2016-10-04 18.10.51.png

ボードを使ってリアルタイムのグラフを表示

  1. IoT Platform画面左側のメニューから、一番上の「ボード」を選択します
    スクリーンショット 2016-10-04 17.32.21.png

  2. 「自分のボード」の画面で、「USAGE OVERVIEW」を開きます
    スクリーンショット 2016-10-04 17.33.47.png

  3. 画面右上の「+新しいカードの追加」メニューを選択します

  4. 適宜「折れ線グラフ」などを選択します

  5. 対象とするデバイスを選択します
    スクリーンショット 2016-10-04 17.34.55.png

  6. 「データセットの接続」で前項で準備したtemperatureなどを選択します

  7. 「次へ」を押して、グラフのサイズ(あとから変更可能です)、グラフの色、などを選択していきます

  8. 「送信」ボタンを押し、グラフを作成します。グラフ右上の属性設定メニューからグラフのサイズなどを変更可能です
    スクリーンショット 2016-10-04 18.14.22.png

  9. カードの配置はドラッグ&ドロップで変更可能です

ルールを作成し、アラートを発行してみます

  1. Watson IoT Platform画面左側のメニューから「ルール」を選択します

  2. 画面右上の「+クラウド規則の作成」メニューで、ルール名を指定し、対象とするプロパティを指定します。ここではtemperatureを選択しています。dの左側の下向き三角形をクリックするとd配下の選択可能なプロパティが表示されます
    スクリーンショット 2016-10-04 18.16.04.png

  3. ルールで判断する閾値を設定します。ここでは、固定値で30℃以上になったらアラートを発行する、と設定しています
    スクリーンショット 2016-10-04 18.17.54.png

  4. アクションを指定します。「アクションの追加」タイルをクリックし、メールの送信などを設定します
    スクリーンショット 2016-10-04 18.19.27.png

  5. Node-REDへの連携を行う場合、Node-RED側にHTTP INノードを用意し、そこで指定したURL(例:/alert)を追加して、アクションに指定するURLとしてhttp://IoTアプリ名.mybluemix.net/alertのように指定します
    スクリーンショット 2016-10-04 18.30.52.png
    スクリーンショット 2016-10-04 18.36.34.png

  6. デバイスからのデータが閾値に達すると、アクションが実行されます
    スクリーンショット 2016-10-04 18.24.28.png
    スクリーンショット 2016-10-04 18.37.01.png

  7. 放っておくとあっという間にメールが大量に届いてしまうので、必要時以外はルールは非アクティブ化しておきます
    スクリーンショット 2016-10-04 18.43.11.png

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?