For Innovation,
Coordinate
Collaboration
Up-front
合同会社 井上研一事務所
BXMUG Bluemix大勉強会 (2017/6/21)
Watson IoT Platform 全貌解説
合同会社井上研一事務所
ITCA認定ITコーディネータ
井上 研一
井上研一 プロフィール
ITコーディネータ (経済産業省推進資格)・ITエンジニア
合同会社井上研一事務所 代表社員
※アルティザンエッジ合同会社より2017年4月に商号変更
ITCA届出組織 ITC-Pro東京 理事
Tech Garden School 講師(CakePHP / Monaca / Watson etc…)
IBM BlueHubインキュベーションプログラム(第3期) メンター
ICTCO(中野区産業振興推進機構)会員
https://inoccu.com
Twitter: @inoccu | Facebook: kenichi.inoue
© Kenichi Inoue 2017 2
Watson IoT Platform?
© Kenichi Inoue 2017 3
Watsonって名前が
付いているから、
AI(コグニティブ)的
機能が付いている?
IoTとWatsonの
親和性は?
インスタンス数は
4〜5位らしい!
Watson IoT PlatformとWatsonの関係
• Watson IoT Platformに、いわゆるAI(コグニティブ)的機能
は付いていない
• Watsonの得意とする自然言語認識や画像認識と、IoTで取り扱
うデータとして一般的なセンサーデータ(気温・加速度などの
数値データ)は別物と考えた方が良い
• いわゆるAI(機械学習的な)活用の第一歩として、センサー
データの蓄積や可視化、閾値を用いた自動化は有意義
• Watson IoT Platformは、こうした第一歩を簡単に踏み出せる
ツール(プラットフォーム)である
• DSX(Data Science Experience)との親和性は高いと考え
られる
© Kenichi Inoue 2017 4
但し、IoTデバイスから画像などを送信して、Watson(Visual
Recognition等)につなげるのはアリ
IoTとBluemix
© Kenichi Inoue 2017 5
Raspberry Pi 3 Model B
Groove Pi
気温・照明・音量センサー
Watson
IoT
Platform
MQTT
/
HTTP Cloudant
Node-RED
IBM
DSX
可視・
自動
フロー
制御
予測・
自律
IoTサービス
(API)
AI
データ蓄積
デバイス
スマートフォンも身近な
IoTデバイスとして活用可
デバイスとの接続
© Kenichi Inoue 2017 6
Watson
IoT
Platform
(WIOTP)
MQTT/HTTP
事前にWIOTPにデバイス登録
ゲート
ウェイ
デバイスを直接接続
ゲートウェイ経由で接続
MQTT/HTTP
ゲートウェイのみ事前にWIOTP
に登録(ゲートウェイ配下の
デバイスは自動登録される)
クライアントライブラリを
使えば、簡単にデバイスを
接続できる
(標準規格なので、ライブ
ラリは必須ではない)
デバイスタイプ・デバイス
イベント・コマンド
© Kenichi Inoue 2017 7
• 機種(製品コードなどの単位)
• 規則はデバイスタイプ毎に設定
デバイス
タイプ
• 機器(シリアル番号の単位)
• デバイスタイプに紐付く
デバイス
• デバイスからのメッセージ(Publish)
• “status”など
イベント
• デバイスへのメッセージ(Subscribe)
• デバイス側ではコールバック
コマンド
※厳密にはデバイスタイプ単位に設定するスキーム単位
Pythonを用いた接続/Publish例
※クライアントライブラリ使用
© Kenichi Inoue 2017 8
import ibmiotf.device
options = ibmiotf.device.ParseConfigFile("./device.cfg")
client = ibmiotf.device.Client(options)
data = {
'd': {
'temperature': temp,
'light': light,
'sound': sound
}
}
client.publishEvent('status', 'json', data)
JavaScriptを用いたMQTT接続例
※クライアントライブラリ未使用
var mqtt_address = orgID +
'.messaging.internetofthings.ibmcloud.com';
var mqtt_port = 1883;
var deviceID = 'd:' + orgID + ':' + deviceType + ':' +
deviceName;
client = new Paho.MQTT.Client(mqtt_address, mqtt_port,
'/', deviceID);
client.connect({
userName: 'use-token-auth',
password: password,
onSuccess: function() {
isConnectMQTT = true;
},
onFailure: function() {
isConnectMQTT = false;
}
}); © Kenichi Inoue 2017 9
注:JavaScript
(Node.js)用のクライア
ントライブラリは提供され
ていますが、敢えて・・・
JavaScriptを用いたMQTT Publish例
※クライアントライブラリ未使用
var data = {
d: {
accel_x: accelX,
accel_y: accelY,
accel_z: accelZ,
heading: magneticHeading
}
};
if (isConnectMQTT == true) {
var msg = new Paho.MQTT.Message(JSON.stringify(data));
msg.destinationName = 'iot-2/evt/status/fmt/json';
msg.qos = 0;
client.send(msg);
}
© Kenichi Inoue 2017 10
HTTP(S)を使用するPublish
© Kenichi Inoue 2017 11
curl -u use-token-auth:[Password]
-H 'Content-Type: application/json’
-d '{"d":{"key1":"value1"}}'
https://[OrgID].messaging.internetofthings.ibmcloud.com:
8883/api/v0002/device/types/[DeviceType]/devices/[Device
Name]/events/[EventName]
• MQTTを使わなくてもHTTP(S)でイベントをPublish可能
可視化とデータ蓄積
© Kenichi Inoue 2017 12
リアルタイムの可視化
設定だけでCloudantへ
規則を用いた自動化
© Kenichi Inoue 2017 13
ルールの設定で自動処理を実現
デバイスタイプ毎のスキームを設定し、スキームが規則の適用対象となる
「条件」を満たすと「操作(アクション)」を起動する
規則はクラウド規則と
エッジ規則がある
(エッジ規則を使えば、ク
ラウドと通信しなくても規
則に応じた操作ができる)
メール送信
IFTTT
Node-RED HTTP input
Webhook
アクションとしてIFTTTを使う
© Kenichi Inoue 2017 14
IBM DSXでのデータ活用
© Kenichi Inoue 2017 15
おなじみの
Jupyter Notebooks
Cloudantなどとの接続は容易
Data Servicesに設定しておくと、
接続情報セルが生成される
(あとは通常のPythonコード)
Node-REDとも簡単につながる
© Kenichi Inoue 2017 16
Node-REDは処理フ
ローを制御するもの
のため、適宜、予測
や自律的判断を行う
ためのAIと接続する
必要がある。
使用料金
© Kenichi Inoue 2017 17
Internet of Things Platform (Watson IoT Platform)
※履歴データのCloudantは別料金
IBM DSXは
Apache Sparkで
動いている
© Kenichi Inoue 2017
ありがとうございました。
18

Watson IoT Platform全貌解説

  • 1.
    For Innovation, Coordinate Collaboration Up-front 合同会社 井上研一事務所 BXMUGBluemix大勉強会 (2017/6/21) Watson IoT Platform 全貌解説 合同会社井上研一事務所 ITCA認定ITコーディネータ 井上 研一
  • 2.
    井上研一 プロフィール ITコーディネータ (経済産業省推進資格)・ITエンジニア 合同会社井上研一事務所代表社員 ※アルティザンエッジ合同会社より2017年4月に商号変更 ITCA届出組織 ITC-Pro東京 理事 Tech Garden School 講師(CakePHP / Monaca / Watson etc…) IBM BlueHubインキュベーションプログラム(第3期) メンター ICTCO(中野区産業振興推進機構)会員 https://inoccu.com Twitter: @inoccu | Facebook: kenichi.inoue © Kenichi Inoue 2017 2
  • 3.
    Watson IoT Platform? ©Kenichi Inoue 2017 3 Watsonって名前が 付いているから、 AI(コグニティブ)的 機能が付いている? IoTとWatsonの 親和性は? インスタンス数は 4〜5位らしい!
  • 4.
    Watson IoT PlatformとWatsonの関係 •Watson IoT Platformに、いわゆるAI(コグニティブ)的機能 は付いていない • Watsonの得意とする自然言語認識や画像認識と、IoTで取り扱 うデータとして一般的なセンサーデータ(気温・加速度などの 数値データ)は別物と考えた方が良い • いわゆるAI(機械学習的な)活用の第一歩として、センサー データの蓄積や可視化、閾値を用いた自動化は有意義 • Watson IoT Platformは、こうした第一歩を簡単に踏み出せる ツール(プラットフォーム)である • DSX(Data Science Experience)との親和性は高いと考え られる © Kenichi Inoue 2017 4 但し、IoTデバイスから画像などを送信して、Watson(Visual Recognition等)につなげるのはアリ
  • 5.
    IoTとBluemix © Kenichi Inoue2017 5 Raspberry Pi 3 Model B Groove Pi 気温・照明・音量センサー Watson IoT Platform MQTT / HTTP Cloudant Node-RED IBM DSX 可視・ 自動 フロー 制御 予測・ 自律 IoTサービス (API) AI データ蓄積 デバイス スマートフォンも身近な IoTデバイスとして活用可
  • 6.
    デバイスとの接続 © Kenichi Inoue2017 6 Watson IoT Platform (WIOTP) MQTT/HTTP 事前にWIOTPにデバイス登録 ゲート ウェイ デバイスを直接接続 ゲートウェイ経由で接続 MQTT/HTTP ゲートウェイのみ事前にWIOTP に登録(ゲートウェイ配下の デバイスは自動登録される) クライアントライブラリを 使えば、簡単にデバイスを 接続できる (標準規格なので、ライブ ラリは必須ではない)
  • 7.
    デバイスタイプ・デバイス イベント・コマンド © Kenichi Inoue2017 7 • 機種(製品コードなどの単位) • 規則はデバイスタイプ毎に設定 デバイス タイプ • 機器(シリアル番号の単位) • デバイスタイプに紐付く デバイス • デバイスからのメッセージ(Publish) • “status”など イベント • デバイスへのメッセージ(Subscribe) • デバイス側ではコールバック コマンド ※厳密にはデバイスタイプ単位に設定するスキーム単位
  • 8.
    Pythonを用いた接続/Publish例 ※クライアントライブラリ使用 © Kenichi Inoue2017 8 import ibmiotf.device options = ibmiotf.device.ParseConfigFile("./device.cfg") client = ibmiotf.device.Client(options) data = { 'd': { 'temperature': temp, 'light': light, 'sound': sound } } client.publishEvent('status', 'json', data)
  • 9.
    JavaScriptを用いたMQTT接続例 ※クライアントライブラリ未使用 var mqtt_address =orgID + '.messaging.internetofthings.ibmcloud.com'; var mqtt_port = 1883; var deviceID = 'd:' + orgID + ':' + deviceType + ':' + deviceName; client = new Paho.MQTT.Client(mqtt_address, mqtt_port, '/', deviceID); client.connect({ userName: 'use-token-auth', password: password, onSuccess: function() { isConnectMQTT = true; }, onFailure: function() { isConnectMQTT = false; } }); © Kenichi Inoue 2017 9 注:JavaScript (Node.js)用のクライア ントライブラリは提供され ていますが、敢えて・・・
  • 10.
    JavaScriptを用いたMQTT Publish例 ※クライアントライブラリ未使用 var data= { d: { accel_x: accelX, accel_y: accelY, accel_z: accelZ, heading: magneticHeading } }; if (isConnectMQTT == true) { var msg = new Paho.MQTT.Message(JSON.stringify(data)); msg.destinationName = 'iot-2/evt/status/fmt/json'; msg.qos = 0; client.send(msg); } © Kenichi Inoue 2017 10
  • 11.
    HTTP(S)を使用するPublish © Kenichi Inoue2017 11 curl -u use-token-auth:[Password] -H 'Content-Type: application/json’ -d '{"d":{"key1":"value1"}}' https://[OrgID].messaging.internetofthings.ibmcloud.com: 8883/api/v0002/device/types/[DeviceType]/devices/[Device Name]/events/[EventName] • MQTTを使わなくてもHTTP(S)でイベントをPublish可能
  • 12.
    可視化とデータ蓄積 © Kenichi Inoue2017 12 リアルタイムの可視化 設定だけでCloudantへ
  • 13.
    規則を用いた自動化 © Kenichi Inoue2017 13 ルールの設定で自動処理を実現 デバイスタイプ毎のスキームを設定し、スキームが規則の適用対象となる 「条件」を満たすと「操作(アクション)」を起動する 規則はクラウド規則と エッジ規則がある (エッジ規則を使えば、ク ラウドと通信しなくても規 則に応じた操作ができる) メール送信 IFTTT Node-RED HTTP input Webhook
  • 14.
  • 15.
    IBM DSXでのデータ活用 © KenichiInoue 2017 15 おなじみの Jupyter Notebooks Cloudantなどとの接続は容易 Data Servicesに設定しておくと、 接続情報セルが生成される (あとは通常のPythonコード)
  • 16.
    Node-REDとも簡単につながる © Kenichi Inoue2017 16 Node-REDは処理フ ローを制御するもの のため、適宜、予測 や自律的判断を行う ためのAIと接続する 必要がある。
  • 17.
    使用料金 © Kenichi Inoue2017 17 Internet of Things Platform (Watson IoT Platform) ※履歴データのCloudantは別料金 IBM DSXは Apache Sparkで 動いている
  • 18.
    © Kenichi Inoue2017 ありがとうございました。 18