mqttで始めるiot

18
MQTTで始める Internet of Things 細合 晋太郎 九州大学 えむきゅぅてぃてぃ いんたーねっと おぶ しんぐす

Upload: shintaro-hosoai

Post on 14-Jul-2015

639 views

Category:

Engineering


4 download

TRANSCRIPT

Page 1: Mqttで始めるIoT

MQTTで始めるInternet of Things

細合晋太郎

九州大学

えむきゅぅてぃてぃ

いんたーねっと おぶ しんぐす

Page 2: Mqttで始めるIoT

なんでもかんでもIoTって言えばいいってもんじゃねぇぞ

http://insights.venturescanner.com/tag/retail/

Page 3: Mqttで始めるIoT

Internet of Things

•元はセンサネットワーク界隈から

•で,IoTって何なの?•→よくわかりません..組込みをネットに繋げりゃIoTって言いはっていいんじゃないでしょうか.

Page 4: Mqttで始めるIoT

IoT構成

HTTPd

Hadoop DBびっぐでーた

今回はこの辺りのお話センサ/アクチュエータ

組込みボード

サーバ

Page 5: Mqttで始めるIoT

IoTで用いられる通信プロトコル・フレームワーク

•REST•SOAP

•HTTP•TCP,UDP

•OSGi•Echonet?

•MQTT

on Ethernet

1. Physical

4. Transport

6. Presentation

7. Application

5. Session

3. Network

2. Data link

REST

SOAP

HTTP

TCP UDP

Echonet? OSGi?

MQTT

Page 6: Mqttで始めるIoT

MQTT(Message Queuing Telemetry Transport)

•IBMの提唱する,軽量プロトコル

•Publish/Subscribeモデル

•TCP/IPの上で動作(HTTPと同層?)

•HTTPよりかなり軽量.ビッグなデータを山ほどやりとりしても大丈夫

http://mqtt.org/

Page 7: Mqttで始めるIoT

MQTT特徴

• Topic• 購読する項目を指定する• スラッシュ区切りの階層構造

• 例えば,room1/sensor/temperatureなど,

• ワイルドカード• #:前方一致:a/# なら,a/b, a/c, a/r/kすべて購読できる• +:部分一致:a/+/bなら,a/x/b, a/y/bに一致.a/z/cは一致しない.

• QoS/到達保証• QoS 0: At most once --最高1回。届くかは保証しない。• QoS 1: At least once --少なくとも一回。重複する可能性がある。• QoS 2: Exactly once --正確に一回

• Will/遺言• 最後にPublishされた内容を保持しておき,Subscribeされた際に

• Retain/保持

• Security/認証と暗号化

http://tdoc.info/blog/2014/01/27/mqtt.html

Page 8: Mqttで始めるIoT

MQTT Packet

http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html

Fixed Header

Variable Header

Payload

Remaining Length(1-4 byte)

Packet Type(4bit) Flags(4bit)

Packet Identifier MSB

Packet Identifier LSB

PublishならなんでもOK,SubscribeならTopic文字列など

+Packet Typeごとのあれこれ

Packet Typeごとのバイト列

Page 9: Mqttで始めるIoT

MQTT構成

•構成要素はBrokerとClient

•通信は一旦すべてBrokerに送られる.(ClientはBrokerのIPアドレスだけ知っていればよい)

•ClientはPublisherまたはSubscriber(両方同時も可能)

Broker

Client

Client Client

Client

Page 10: Mqttで始めるIoT

MQTTアプリケーション/ライブラリ

•Mosquitto (Client/Broker)•http://mosquitto.org/download/

•Paho (Client/Broker/Client Library)•https://eclipse.org/paho/

•IBM MessageSight(Client / Broker(war) / Client Library)ちょっとデカイ.•https://www.ibm.com/developerworks/comm

unity/blogs/c565c720-fe84-4f63-873f-607d87787327/entry/download?lang=en

•Arduino Library•http://knolleary.net/arduino-client-for-mqtt/

Page 11: Mqttで始めるIoT

MQTT Broker

•今回はMosquitto付属のMQTT Brokerを利用(細合PCがBrokerになってます.)

•通常は,適当なオンラインサーバにMosquitto,Phao,

Page 12: Mqttで始めるIoT

使ってみよう(PC/PC)

•まずはPCで•Mosquittoを入れてみる→URL: http://mosquitto.org/download/•Pathを通すか,実行ファイルのあるフォルダに移動してプロンプトを開く•Topicを購読してみましょう.•mosquitto_sub –h 192.168.1.10 –t

/wwest/hello

•発信してみましょう•mosquitto_pub –h 192.168.1.10 –t

/wwest/hello –m hello?-hオプションを付けない場合は,ローカルホストのBrokerを利用する

Page 13: Mqttで始めるIoT

今回の構成MQTT Broker(細合PC)

192.168.10.200(static)

WiFi Rooter(NEC Aterm W300P)

SSID: aterm-b363fc-gPASS: ********WPA2-AES

MQTT Client (GR-SAKURA)

192.168.10.xxx(DHCP)

MQTT Client (User-PC)

192.168.10.xxx(DHCP)

Page 14: Mqttで始めるIoT

Subscribe

•wwest/mqtt/hosoaiを購読してみてください

•mosquittoをインストールしたフォルダに移動し,> mosquitto_sub –t wwest/mqtt/hosoai –h

192.168.10.200

Page 15: Mqttで始めるIoT

Publish

•wwest/mqtt/#

を購読してください

•wwest/mqtt/自分の名前

•で適当なメッセージを送信してみてください

•> mosquitto_pub –t /wwest/mqtt/name –m Message –h 192.168.10.200

Page 16: Mqttで始めるIoT

Will/Retain/QoS

•Will•subscriberに以下を付けて起動.--will-topic topic –will-payload dyingmessage

•別のsubscriberで上記のtopicを購読しておき,上記のsubscriberを強制終了

•Retain•publisherに-rを付けてメッセージ送信.•送信後にsubscriberで購読する

Page 17: Mqttで始めるIoT

組込みボードと話してみる

•wwest/sakura/temperature

を購読してみてください.

•wwest/sakura/led

にonを送ってみてください

offを送ってみてください

Page 18: Mqttで始めるIoT

プログラムからMQTT

•Paho

•Android

•Arduino•ライブラリはとても小さい.Etherが動く環境なら余裕