Upgrade to Pro — share decks privately, control downloads, hide ads and more …

IoTの基本~メッセージブローカについて~

 IoTの基本~メッセージブローカについて~

メッセージブローカ/AWS IoT Coreについてのセッション資料。
※EVF2015公開資料をベースに追記

Tasuku Hori

April 12, 2019
Tweet

More Decks by Tasuku Hori

Other Decks in Technology

Transcript

  1. この資料について • メッセージブローカ/AWS IoT Core について話をします • EVF2015 社外発表セッション資料をベースとしています •

    セッションを聞いた人はつまらないとおもいます • 使用しなかったスライドも添付してありますが、内容が古くなっている 場合があります
  2. IoTリファレンスアーキテクチャモデル センサ IoT ゲートウェイ メッセージ ブローカ ディスパッチャ ストア アプリケーション 温度・湿度

    光量 水位 Arduino Edison 有線 (Groveキット流用) (プルアップ回路) IBM IoT Foundation Traial版 Mosquitto MQTT MQTT(Publish) 認証有り WiFi(インターネット) JSON形式5秒間隔 NodeRED MQTT MQTT(subscribe) 認証有り インターネット JSON形式5秒間隔 Cloudant REST REST(CORS)Basic認証 インターネット JSON形式 Node.js D3.js Paho REST MQTT REST ブラウザ HTTP Bluemix Traial版 Paho 水耕栽培器 ※灰色部分は、テストのみ Twitter © 2015 EXA CORPORATION 4 ※写真はスイッチサイエンス社、秋月電子社、アマゾン社、ユーイング社サイトより引用 ※ロゴは、IBM社、Mosquitto、Twitter社、Google社サイトより引用 IBM Cloud IoT Watson Platformでは こっち側全部をアプリケーション と呼ぶ
  3. 通販や秋葉原で入手可能なセンサ 人感 Palallax Pi2 B 水温 DS18B20 超音波 HC-SR04 温度

    USB thermo 528108 温湿度 AM2321(DHT22) 照度 TSL2561 大気圧 MPL115A2 音 SEN12945P 加速度/磁気 MMA8451Q/MAG3110 ブレッドボードで 回路を組み ゲートウェイへつなぐ © 2015 EXA CORPORATION 5 ※写真はスイッチサイエンス社、秋月電子社、アマゾン社サイトより引用
  4. センサの役割 • 状態にあわせて値の変わる”抵抗” • 電源が必要 • パッシブセンサでも計測側は電源が必要になる • 計測結果のブレが大きい •

    種類により毎回値が変わる • 基本的に回路を組みブレを補正する • 予め回路を組んだ形状で販売されているものもある • 当然センサ単独部品より高価になる • 補正をプログラム側で請け負えばより安く組める • ライブラリを公開していない場合はデータ公開している • データを元に補正プログラムを組む © 2015 EXA CORPORATION 6 ※写真はスイッチサイエンス社サイトより引用
  5. IoTゲートウェイの役割 • センサとインターネット(イントラネット)の間に配置される • 書籍により近距離通信プロトコル化するところまでを指す場合も • RFIDシールを使う場合、どこがIoTゲートウェイなのか迷う • 定義はざっくりしているのでプロジェクトごとに決めておく •

    プロトタイプ作成にマイコンボードを利用することが多い • AWSではデバイスゲートウェイと呼称されていた 《子機》 《センサ》 RFID(電源無し) 非接触読み取り (ベンダ独自の通信方法) 近距離通信標準 Bluetoothなど 《親機》 RFIDリーダ スマートフォン PCや専用機器等 4G/LTEやWiFi インターネットへ 《IoTゲートウェイ?》 © 2015 EXA CORPORATION 8 ※写真は富士通社サイトより引用
  6. 主な近距離通信標準 プロトコル名 無線LAN WiFi クラシック Bluetooth Bluetooth LE ZigBee IEEE規格

    IEEE802.11g IEEE802.15.1 - IEEE802.15.4 送信電力 10mW 2.5mW 1mW 1mW 受信感度 -80dBm -70dBm -70dBm -85dBm 通信距離 30m 15m 10m 50m データレット 54Mbps 1Mbps 1Mbps 250kbps 消費電力 約300mW (連続動作) 約50mW (連続動作) 50μW~1mW (間欠動作) 50μW~1mW (間欠動作) 電池充電/交換 数時間 数日 数年 数年 IP親和性 ◦ △ △ X 量産コスト ¥2,000- ¥1,000- ¥1,000- ¥3,000- 適用アプリ PC周辺近距離通 信 音楽など音声近 距離通信 センサ計測 データ収集 センサ計測 データ収集 ※書籍「Bluetooth LE入門」p16より引用 © 2015 EXA CORPORATION 9
  7. 主なマイコンボード Arduino UNO R3 Raspberry Pi3 B+ Google Coral DevBoard

    ATmega328/16MHz ARM Cortex A53 4core/1.4GHz ARM Cortex-A53,Cortex-M4F ¥3,240- ¥5,200- $149.99- 日本未発売 Flash:32K/SRAM:2K/ EEPROM:1K 1GB(SDRAM) 1GB LPDDR4 なし (Shield装備で ZigBee/Bluetooth/WiFi/Ethe rnet使用可) Ethernet, Bluetooth 4.1 WiFi2 HAT装備で4G/LTEも Ethernet, Bluetooth 4.1 WiFi2 HAT有無不明 日本語書籍意外と多数 日本語書籍・ブログ多数 日本語情報ほとんどなし Sketch (Arduino IDE) Linux上で使用可能な言語で 開発可 Linux上で使用可能な言語で 開発可(TensorFlow利用が基 本なのでPythonが主力) アナログピンを標準装備 H/W PWM ピンも標準提供 センサ処理だけなら十分 デジタルピン多数提供 H/W PWMが2ピンのみ アナログピンなし Raspberry Pi互換GPIOピン配 列(おそらくアナログなし) TensorFlow Lite対応 アナログ品がない場合、 センサと接続するにはAD 変換器が必要! © 2015 EXA CORPORATION 10
  8. メッセージブローカの役割 ガンガン送信されるセンサデータ一時窓口 トピック名/hogehogeでPublish Port:1833で 待ち受け (443,8883) トピック名/hogehogeでSubscribe 購読をやめるまで ひたすら送られてくる →Webアプリのように

    作るとキケン ガンガン メッセージデータを送信 最初にPublisher登録 最初にSubscriber登録 Publisher Subscriber メッセージ ブローカ 認証可 認証可 OSSのMQTTライブラリ (Eclipseライセンス) Sketchにも対応している ※写真はアマゾン社サイトより引用 ※ロゴはIBM社サイトより引用
  9. 主なメッセージブローカ • Eclipse Mosquitto • オープンソース • 汎用MQTTライブラリEclipse Paho •

    IBM Watson IoT Platform/Message Sight • AWS IoT Core • Google Cloud Pub/Sub • Microsoft Azure IoT Hub • 時雨堂 Sango/Akane • ニフティクラウド MQTT ※写真はIBM社、サイトより引用 ※ロゴはMosquitto、時雨堂社、ニフティ社サイトより引用 これらのブローカのほとんどがMQTTプロトコルに対応している ロゴからわかるとおり「ハブ&スポーク」構造 をとることも大きな特徴と言える
  10. MQTTプロトコル • Publish/SubScribe型モデル(後述)、TCP/IP上で動作、ペイロード自由 • QoS指定可能 • 0:At most once, 1:

    At least once, 2:Exactly once • Will (遺言) • 意図しない切断があった場合に送信される • Retain • 最後にpublishしたメッセージを残しておき、その後Subscribeしたノードへ最初に送る • セキュリティ • ユーザ、パスワードによる認証(TLS)ほか(ベンダごとに異なる) • エンベロープが軽量 • HTTPと比較して1/10~1/100の通信量に • ボディはJSON形式が一般的 • 送信可能な型はソフトウェア・サービスで異なる IoTやM2Mの実現に適したシンプルで軽量なプロトコル © 2015 EXA CORPORATION 14
  11. Publisher Subscriber モデル • 非同期メッセージングの概念モデルのひとつ • 出版・購読型モデルとも呼ばれている • メッセージ送信者は特定の受信者を想定せず送信 •

    ただし送信メッセージは各々クラス分けされている • 受信者はあらかじめ興味のあるクラスを指定 • 興味のあるクラスに属するメッセージのみ受信(フィルタリング) • フィルタリングには、トピックベース、コンテンツベースなどがある メッセージの属性や内容が購読側の定義した制約に マッチしたものだけ受信
  12. トピックベースのフィルタリング 《MQTTブローカ》 《Publisher》 《Subscriber》 メッセージ /トピックA メッセージ メッセージ メッセージ 受信対象

    Subscriber “/トピックA” Subscriber X “/トピックB” Subscriber Y “/トピックC” Subscriber Y “/トピックD” Subscriber Z ①Publisherがメッセージを送信 ②トピックから受信先Subscriberを決定 /トピックB /トピックC /トピックD ③すべての受信対象Subscriberへ送信
  13. ワイルドカードをつかって購読対象指定 Publisher A Publisher B Publisher C MQTTブローカ 受信対象 Subscriber

    “/tokyo/temp” Subscriber X “+/temp” Subscriber Y “/tokyo/#” Subscriber Z “/tokyo/”と前方一致 2階層以上も可 “/temp”と末尾一致 前方は1階層のみOK Subscriber X Subscriber Y Subscriber Z メッセージ メッセージ メッセージ “/tokyo/temp” “/tokyo/humid” “/osaka/temp” メッセージ “/tokyo/temp” メッセージ “/tokyo/temp” メッセージ “/tokyo/temp” メッセージ “/tokyo/humid” メッセージ “/osaka/temp”
  14. IBM Watson IoT Platform 最初にデバイスを登録し、 Publish通信時の認証に必要な Auth Tokenを取得 org=5nrm95 type=arduino

    id=b4218af014ce auth-method=token auth-token=oWW!9999999999999DN 組織ID:URLの先頭文字列になる デバイスタイプ:トピック文字列の一部で使用 デバイスID:MACアドレス、トピック文字列の一部で使用 登録時以下の情報を一度だけ表示 ※画面はIBM IoT Foundation トライアル版 Sketchプログラムで使用する 独自フォーマットの JSONでないと受け 取ってくれない
  15. AWS IoT Core Device Gateway メッセージにクエリをかけ、合致し た場合他のサービスへ送信 セキュアな通信を実現するための 機能 デバイスの状態を永続

    化したサービス デバイス・IoTアプリ間の Pub/Sub トピックベースだが、さらにSQLっぽ いクエリができるようになっている ※AWS IoTマニュアルより引用
  16. モノのカゲ Thing (モノ) Things Group (モノのグループ) Billing Group (請求グループ) 親子関係

    <<concrete>> Device (デバイス) <<abstract>> (Party) <<abstract>> Job (ジョブ) Type (タイプ) Custom Job (カスタム ジョブ) OTA Job (OTA更新ジョ ブ) Core Job (Core更新ジョ ブ) Certificate (証明書) Policy (ポリシー) アタッチ モノ固有の 属性を管理 請求ドメイン デバイス本体 のこと アプリとして の所属 private key X509 証明書 デバイスが通電されていない状態でも代 わりにThing Shadowが機能の一部対応でき るように拡張されている 請求単位の 所属 属性の切り出し [完全?] サーバ 証明書 直接関係を 紐付ける情報はないが 接続時に随時アタッチされる (秘密鍵&X509証明書つきで) 割当 AWS IoT Core 作成 Thing Shadow (モノのカゲ) 0..1 0..1 1 * 0..1 * * * 0..1 1 * 0..1 0..1 * 0..1 0..1 1 《JSON》 デバイス上でジョブを外部からキックでき る機能、IBMやMSなども同等の機能をもつ 比較的メジャーな拡張機能 * *? アプリ側から直接接続する場 合、未アタッチの証明書を 使って接続する
  17. 《donkeycar》 倉庫入出庫システム:SCD(RATF海面) 外部の ロジスティックス システム 倉庫管理者 ローダ 手動運転 モデルファイル 学習データ

    《Agent》 最新入出力・位置情報 作業報告 モニタ モデルファイル 学習データ 実測データ(学習データのもと) アナリスト スーパバイザ モデルファイル 作業指示 (かたまり) 入出庫情報 作業指示(個別) 《Planner》 倉庫入出庫システム Thing Shadow
  18. Shadowが存在する前提での設計が必要 電源ONしたで A:モノ A:Shadow Aはんが、電源ONしたらしいで Aに何かあったら、教えろや Aに、この作業してって伝えといて この作業してほしいって誰か言うてきたで うけたまわり~♪ 倉庫管理者:アプリ

    わかってま。 《特定トピックのsubscribe》 《update (reported更新)》 《subscribe時定義したcallback呼び出し》 《update (desired更新)》 《register delta callback呼び出し》 なにか書き込まれたら、教えろや わかってま。 《register delta callback登録》 《update (reported更新)》 《subscribe時定義したcallback呼び出し》 Aはん仕事おっぱじめたで AWS IoT が機能要件を満たすかどうかを判断しなくてはならない
  19. ネットに踊らされるな! 機能 AWS IoT Core Eclipse Mosquitto 対応プロトコル 3.1.1 3.1/3.1.1

    QoS 0, 1 (2未サポート) 0, 1, 2 Will X→◦(ベータ版はXだった) ◦ Retain X ◦ Payloadサイズ 128K 制限なし TLS ◦ ◦ WebSecureSocket X→◦(ベータ版はXだった) ◦ 認証 AWSアカウントレベル→カスタムオー ソライザ対応(要ポリシー) X→パスワード認証可能 https://dev.classmethod.jp/cloud/aws/why-is-there-different-between-aws-iot-message-broker-and-general-one/より引用 ..したが誤りが多い! ..どうもベータテスト時の内容を更新していないらしい AWS IoT Coreの記事には嘘..というか古い情報が多い!
  20. Topicフォーマット設計ですべてが決まる (payloadタイプ) (コマンド) 【モノ】 【モノのグループ】 《w/h role》 【モノのグループ】 《party》 【モノのタイプ】

    《system》 real virtual /agent /planner /loader /supervisor /jones /status /report /order /json /image_array /bin /monitor /analyst 親子 * 1 ※AWS IoT の場合ルールエンジンが存在するので、後付けでなんとかなるかも.. 通常のトピックベースメッセージブローカの場合、Topicフォーマットにない分類は、購読分別できない なぜ、real/virtualを先頭に入れたのか?
  21. ルールエンジン • AWS IoT Core 独自機能 • SQLに似たクエリに合致するメッセージをトリガ • 受信payload上のJSONデータ項目に対してもクエリで使用可能

    • デジタルツインにおけるシミュレータ側メッセージの転送もルー ル記述可能 { "sql": "SELECT state, version FROM ‘real/agent/loader/+/status/+'", "ruleDisabled": false, "actions": [{ "republish": { "topic": " virtual/agent/loader/${topic(3)}/status/${topic(5)}", "roleArn": "arn:aws:iam::xxxxxxxx:role/xxxxxx-role" } }] } real/.. で始まるトピックの メッセージを virtual/.. で始 まるトピックに書き換えて republishする
  22. 参考:AWS IoT Greenglass • IoTゲートウェイ上でLambdaを動作させる • ネットワーク接続が切れても業務をできるだけ継続できるように する • コンテナ実行を選択しない場合は、Lambdaの一部機能はNGに

    • Raspberry Piほか対象デバイスが制限される • ネットワークが切れても動作できるようにするには、データス トア操作などがローカルで完結できるようにしておく
  23. メッセージブローカを使いこなすには • ミドルウェアだがベンダによりERP/業務パッケージに近い場合も • どれだけ正確に Fit&Gap できるかが重要 • 意図しない使い方だと運用中どこかで破綻 •

    自分のリファレンスアーキテクチャモデルを持とう • ネット記事だけでなく、きちんと公式ドキュメントを読もう • あたりまえのことが、実は できていない • いそがば、まわれ • ネット上の記事でも”たまたま”動いているコードが存在する • デバイスの回路設計は、たまたま頻度は多少上がる • 通信ライブラリはベンダ独自提供の方が生産性高い • 昔から、難易度の高い実装は並列処理と通信と言われてきた • 再現できないバグが潜みやすい
  24. iLearning IoTビジネス実践講座 【プロトタイプ開発編】4/18 1.はじめに (システム全体像) 2.M2Mのための通信ネットワークの基礎 (1)M2Mにおける主要通信方式(WAN)の選択 (2)通信モジュールとは (3)無線通信方式と通信プロトコル (4)通信パケット量の比較

    (5)サーバ接続通信回線 (6)閉域網サービスのセキュリティ(例 3.M2M機器量産開発時の注意点 (1)開発要件の整理 (2)開発のアプローチ (3)通信モジュール/通信ユニット/センサー一覧 (4)近距離通信(ローカル通信)の選択肢 (5)M2M機器に対する法的対応 (6)M2M機器に対するセキュリティ 4.プロトタイプ開発環境 (1)プロトタイピングについて (2)シングルボードコンピュータ基礎 【ビジネスモデル設計編】4/19 1.はじめに (1)IoTビジネス実践講座の目的/構成/位置づけ (2)M2M/IoTの概要と事例 (3)ビジネスモデルと立ち位置の確認 2.市場選定と販路開拓 (1)M2M/IoT市場環境に対する考察 (2)市場選定と販路開拓 3.商流 (1)支払タイプの分類 (2)見えない化とは (3)事例分析結果 (4)事例サンプル (5)最新の支払タイプ例 4.ビジネス価値 (1)ビジネス価値とは (2)価値の視点 (3)共通価値項目の分類/定義 (4)例題事例の解説/分析方法 (5)事例分析考察 (3)Edison、Raspberry Piの仕様と仕組み (4)実習機器セットアップ (5)簡単なプログラムの作成 5.実習 (*注) (1)照度センサー、温度センサーを使用したプログ ラムの作成 (2)近接センサー を使用したプログラムの作成 (3)加速度センサーを使用したプログラムの作成 (4)総合実習 (*)要PC持ち込み 5.経営層が理解すべきこと (1)3つのポイント概要 (経営者主導/想定外価値/収益 性が上がるまでの時間) (2)価値進化のスパイラル 6.プロジェクトリーダが理解すべきこと (1)業務面/技術面の課題、サポータから見た課題 (2)課題の本質と克服 【ビデオ講演】 東京大学 稲田修一特任教授 「M2M/IoT活用とイノベーション」 【特別講演】IoT R&D (株式会社入鹿山未来創造研究所) 入鹿山剛堂理事 「IoTを活用した新規事業開発のポイント」 ※期限が近いので、受けたい人は今すぐワークフローで申請のこと メッセージブローカについては座学レベル? エクサのIoT学習リソース
  25. その他の学習リソース • AWSドキュメント「AWS IoTの水やりのサンプル」 • 2015年の時作ったGarden Horiに近いデモシステムが作れる • Raspberry Pi側の設定も書かれている

    • 要ルータ(proxyなしで接続可能であり、要8883/443ポートin/out許可) • 基本無料(Piや土壌湿度センサなどを購入する場合は有料) • Aidemy「IoTデバイスへの機械学習モデルのデプロイ」 • Azure IoT Hub & Raspberry Pi を使用する • e-Learning型式なので、受講自体は誰でも可能 • Google Cloud Platfrom無料枠の範囲で体験可能 • Udemy講座には推奨できる講座なし • 販売しているのにまだ未完成とか、古いなど • メッセージブローカの学習は、どれか1つのベンダの”マニュアルを読んで、 使ってみる”
  26. AWS IoT Core への接続:サンプルコード from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient CLIENT_ID =

    "ajent_jones_test" ENDPOINT = "awpukm99x9999mn-ats.iot.us-east-1.amazonaws.com" PORT = 8883 # あらかじめコンソールからダウンロードしておく ROOT_CA = "conf/aws/jones/AmazonRootCA1.pem" PRIVATE_KEY = "conf/aws/jones/c1ffe9999x-private.pem.key" CERTIFICATE = "conf/aws/jones/c1ffe9999x-certificate.pem.crt" TOPIC = 'agent/forklift/jones/+/+' def subscribe_callback(client, userdata, message): print("Received a new message: ") print(message.payload) print("from topic: ") print(message.topic) print("--------------¥n¥n") # 続く # 続き client = AWSIoTMQTTClient(CLIENT_ID) client.configureEndpoint(ENDPOINT, PORT) client.configureCredentials(ROOT_CA, PRIVATE_KEY, CERTIFICATE) client.configureAutoReconnectBackoffTime(1, 32, 20) client.configureOfflinePublishQueueing(-1) client.configureDrainingFrequency(2) client.configureConnectDisconnectTimeout(10) client.configureMQTTOperationTimeout(5) client.connect() # コールバック関数は別スレッドで処理され終了する client.subscribe(TOPIC, 1, subscribe_callback) try: while True: sleep(5) except KeyboardInterrupt: client.disconnect() AWS IoT Python SDK: https://github.com/aws/aws-iot-device-sdk-python 汎用ライブラリよりベンダ提供SDKを使ったほうが、できることできないことを判断しやすい
  27. ディスパッチャの役割 ストア アプリケーション ディスパッチャ ブローカ ブローカからのSubscribeデータを 所定のストアへ振り分ける ブローカ側の通信を受け取れ ディスパッチ先へ連携できれば NodeREDでなくてもよい

    IBM IoT Foundationにも REST APIがあり、 デバイス改廃などを UIを使用せずに管理可能 ストア側のREST APIを 使用して格納する NodeRED側にREST APIを用意 これをアプリケーション側でCall MQTTノード WebSocketノード REST API REST API ブローカからのSubscribeデータを所定のストアへ格納する © 2015 EXA CORPORATION 40 ※ロゴはIBM、Apache Foundation、アマゾン社サイトより引用
  28. NodeREDでの実装 《IBMIoTノード》 IoTFから温度・湿度センサ データを受信する 《Functionノード》 現在時刻を追加 《Functionノード》 温度データを抽出 出力形式に記述 《Functionノード》

    湿度データを抽出 出力形式に記述 《Cloudantノード》 データベースへinsert 《Cloudantノード》 データベースへinsert 《Switchノード》 温度5度未満の場合 《Templateノード》 温度警告メッセージ作成 《Twitterノード》 Tweetする 《Twitterノード》 Tweetする クリックすると 設定やロジックなどが 書けるようになる 《Switchノード》 湿度10%以下の場合 《Templateノード》 湿度警告メッセージ作成 ロジックの流れをノードフローで記述 ノードごとに設定やロジックを記述 → Node.jsコード化され実行 時刻を取得するためのリソースが Arduino側にないため © 2015 EXA CORPORATION 41
  29. ストアの格納対象となるデータ例 { d: {.. }, "timestamp": "2015-06-24T00:26:54.309Z", "timemills": 1435105614309, "tempC":

    27, "tempF": 81 } ディスパッチャ編集後の温度データ キー項目は”時刻” 非キー項目は”温度” JSON形式 すべてのセンサデータを格納する場合、明らかに既存のRDBMSでは不向き 3台のArduinoから同様のデー タが5秒間隔で送信される © 2015 EXA CORPORATION 43
  30. データビジュアリゼーション • REST APIからJSON形式データを取得 • 水耕栽培監視システム • 温度、水位のアラートTweet • 最新データを取得する

    • 温度・湿度、水位、光量データを参照する 《D3.js》 データに基づいてドキュメントを操作するための JavaScript ライブラリ。 「HTMLドキュメントがReadyになった時、SVG(Scalable Vector Graphics)タグ をDOM操作し、JSONデータを反映させる」流れで実装する。 サンプルは豊富だが、グラフ描画部はデータ量をもとに座標操作をJavaScript で記述する記述が中心となるため、コードの読解が難しい。 © 2015 EXA CORPORATION 44 ※写真及びロゴはIBM社、D3サイトより引用
  31. IoTでもシステムを作ってみて • ゲートウェイはネットワーク接続までが山 • Arduino YUNやIntel EdisonはLinux側で設定 • ZigBeeやBLEを使うとき、おそらく同じ苦労が必要 •

    センサデータは「こわれた蛇口の水」 • NoSQL/Object Storageは格納先として有効 • MQTTブローカのU:信頼性・P:性能は重要 • どこでデータを間引くかを決める • センサが移動体の場合、人体の場合などでも異なる • Cloudantは検索を使いこなせるかが鍵 • D3.js サンプルコードを読む難易度高し • 美しい白鳥は、水面下で必死で足をかいている • そろそろJavaScriptを..(崖っぷち?) © 2015 EXA CORPORATION 49 ※写真は森田温泉旅館サイトより引用
  32. IoT、どこから攻めこむ? ケース限定 高価 自由度高い 安い 独自開発 汎用センサ 自由度高いAPI 既存ソリューション 限定されたAPI

    センサベンダとの協業 によるデバイス改良 センサ ゲートウェイ ストア アプリケーション Public IaaS PaaS積極活用 オンプレ連携 データ分析 ブローカ ディスパッチャ ユーザ企業の視界 今回のデモシステム © 2015 EXA CORPORATION 50 U社屋内位置情報センサス タータキット約500万円~ オキュラスリフト $350.0 Parrot AR Drone2 ¥29,588- 2013/7/16 RFIDタグ40円~ 但し要リーダ約8万~ ※写真はアマゾン社サイトより引用
  33. littleBits/cloudBits • つなげて遊べる電子ブロック「littleBits」 • cloudBitでクラウドにつなげる事が可能に • コントローラ知識がなくてもIoTできる • 部品にはArduinoボードもある 犬が出ていったら

    アラートメール送信 StudentSet $232.90 WorkShopSet $998.75 Pro Library $3299 いろんな事例”プロジェクト”をWebサイトで公開 いいねするごとに 風船が膨らむ © 2015 EXA CORPORATION 52
  34. Amazonで3960円 iBeacon • iOSデバイスと組み合わせ近接接近検知するための仕組み • 距離、方向は検知できない • 24GHz帯なので人体によく吸収される • AndroidでiBeacon⇒

    aBeacon • iBeaconデバイスは省電力使い捨て型 • Amazonでデバイス購入可能 • BLE(Bluetooth Low Enagy)による接続 © 2015 EXA CORPORATION 57
  35. 人体動作、脳波センサ • Kinect™ • MSゲーム機Xboxのデバイス、人体の動きで操作 • APIも提供されている • 動作検知にはGoogle Project

    Soliなど • 脳波センサ • すでに幾つか製品化されている • NeuroSky MindWave Moboile • EPSON MOVERIO(スマートグラス) © 2015 EXA CORPORATION 59
  36. Arduino注意事項 • 電気に関する知識ゼロの人のArduino学習最短コースは、書籍から入るのがベスト • 書籍は多数出版されている • Amazonにも対応するキットを販売している • やはり最初はUNOがおすすめ •

    できるだけ回路を組まない、やや高くつくがGroveキットを多用する • スターターキットはロボットショップで売っている • どうしてもセンサを自前で回路を組む場合「プルアップ抵抗」が基本 • 通販は秋月のほうがスイッチサイエンスより安い • 秋葉原での購入なら秋月よりロボットショップのほうが入りやすい • 秋月や亜土、若松は他の部品もたくさんあって素人には探しづらい • スイッチサイエンス社は購入するとしばらくしたらサイト上に追加情報を書き込んでくれ ること有り • ブログ公開している人も結構いる • Ethernetのみ使用する場合Arduino Leonardo ETHでも良い • UNOはminiUSBだが、YUNはmicroUSB © 2015 EXA CORPORATION 60
  37. Arduinoシールド注意事項 • Arduino純正WiFiシールド • Arduino IDE付属のサンプルプログラムが動く • (他のシールドもだが)使えなくなるピンを確認してセンサをつけること • Seeeds製WiFiシールド

    • 国内認可?、要確認 • 要ハンダ付け • 標準WiFiライブラリではなくWiFlyライブラリを使う(Seeeds社Wiki参照) • 最初にファームを更新する • PubSubClientライブラリが使えなかった • Arduino純正Ethernetシールド • 現在販売中のシールドはバージョン”2” • ベータ版IDE(arduino.orgからダウンロード)で開発すること • FTDIアダプタがあると便利 • ファームウェア更新確認のシリアル接続に使用する • 通販サイトで入手可能 • microUSBケーブルがもう1本必要 © 2015 EXA CORPORATION 61
  38. IBM IoTF注意事項 • QuickStartにあるグラフはTrial版にはない • Trial版はMQTT通信要認証 • 大量デバイス使用時にはREST APIを使って登録する •

    サービス自体の停止ができない • 受けまくり、送りまくり • デバイスを外しまくるか、API Keyを消すか • Auth Tokenはメモし忘れたら作り直し • IoTFからもREST APIでデータ参照可能だがアプリから直接触らせな いほうが良い • 止められない以上、ディスパッチャかストアからもらうようにするしかない © 2015 EXA CORPORATION 63
  39. D3.js注意事項 • Exampleのコードは難易度が高い • 流用もすぐにはできない、じっくり読む必要あり • JSONをREST APIでGET/POSTしてデータを取り込む • SVGタグのDOM操作可能だが、Ajaxなどの遅延更新機能は用意さ

    れていない • jQuery($.PeriodicalUpdater()など)を併用する • データ項目数が同じ場合の更新はくせがある • 書籍「D3.js徹底入門」に記載有り、JavaScriptに明るくない人は買って おいたほうがよい © 2015 EXA CORPORATION 65
  40. ロボティクス • 制御工学、センサー技術・機械機構学などを統合してロボット の設計・製作・運転に関する研究、ロボット工学 • 既存のロボットの活用 • Pepper, Mindstorm, Robi,

    Karotz • お掃除ロボット、家庭内センサコントロール • Bebop Drone(70K), AR Drone(40K), Mini Drone(12K) • Raspberry Pi + 既存の模型 © 2015 EXA CORPORATION 66
  41. Parrot Drone API • Parrot社のドローン操作用API • 本体自体はさわれない – Linuxが動作しているらしい(ハックしているブログ有) •

    操作するスマートデバイス側のアプリを作るためのSDKが用意され ている • 現在いろんな会社がドローンを販売 © 2015 EXA CORPORATION 68
  42. iRobot ルンバ • Roomba SCI • iRobot社の掃除ロボットに実装されている • 8ビットの単純な構造 •

    USBシリアルコンバータやBluetoothアダプタ経由でコマンドを送る • Roombatics • ルンバ工学、ルンバのプログラムを修正すること • 洋書だが魔改造本もAmazonで買える © 2015 EXA CORPORATION 69
  43. Arduino Relay-4 Shield • Arduinoもロボティクスのコントローラとして使用可能(もともとコッチで有名) • Arduinoは5V, 40mAまでしか供給できない • 模型で使うモータ1.5V,

    560mA以上必要 • 供給電力以外のON/OFFにはリレーを使用する • リレーを搭載したシールドも販売されている • 指定デジタルピンをHIGH、LOWセットしてON/OFF操作 • NO(Normally Open): LOW状態でCと通電状態 • NC(Normally Close): LOW状態でCと不通状態 • C(Common): デジタルピンでコントロールされる © 2015 EXA CORPORATION 70