mqttで始めるiot
TRANSCRIPT
![Page 1: Mqttで始めるIoT](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/1.jpg)
MQTTで始めるInternet of Things
細合晋太郎
九州大学
えむきゅぅてぃてぃ
いんたーねっと おぶ しんぐす
![Page 2: Mqttで始めるIoT](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/2.jpg)
なんでもかんでもIoTって言えばいいってもんじゃねぇぞ
http://insights.venturescanner.com/tag/retail/
![Page 3: Mqttで始めるIoT](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/3.jpg)
Internet of Things
•元はセンサネットワーク界隈から
•で,IoTって何なの?•→よくわかりません..組込みをネットに繋げりゃIoTって言いはっていいんじゃないでしょうか.
![Page 4: Mqttで始めるIoT](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/4.jpg)
IoT構成
HTTPd
Hadoop DBびっぐでーた
今回はこの辺りのお話センサ/アクチュエータ
組込みボード
サーバ
![Page 5: Mqttで始めるIoT](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/6.jpg)
MQTT(Message Queuing Telemetry Transport)
•IBMの提唱する,軽量プロトコル
•Publish/Subscribeモデル
•TCP/IPの上で動作(HTTPと同層?)
•HTTPよりかなり軽量.ビッグなデータを山ほどやりとりしても大丈夫
http://mqtt.org/
![Page 7: Mqttで始めるIoT](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/9.jpg)
MQTT構成
•構成要素はBrokerとClient
•通信は一旦すべてBrokerに送られる.(ClientはBrokerのIPアドレスだけ知っていればよい)
•ClientはPublisherまたはSubscriber(両方同時も可能)
Broker
Client
Client Client
Client
![Page 10: Mqttで始めるIoT](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/11.jpg)
MQTT Broker
•今回はMosquitto付属のMQTT Brokerを利用(細合PCがBrokerになってます.)
•通常は,適当なオンラインサーバにMosquitto,Phao,
![Page 12: Mqttで始めるIoT](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/12.jpg)
使ってみよう(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](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/13.jpg)
今回の構成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](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/14.jpg)
Subscribe
•wwest/mqtt/hosoaiを購読してみてください
•mosquittoをインストールしたフォルダに移動し,> mosquitto_sub –t wwest/mqtt/hosoai –h
192.168.10.200
![Page 15: Mqttで始めるIoT](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/15.jpg)
Publish
•wwest/mqtt/#
を購読してください
•wwest/mqtt/自分の名前
•で適当なメッセージを送信してみてください
•> mosquitto_pub –t /wwest/mqtt/name –m Message –h 192.168.10.200
![Page 16: Mqttで始めるIoT](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/16.jpg)
Will/Retain/QoS
•Will•subscriberに以下を付けて起動.--will-topic topic –will-payload dyingmessage
•別のsubscriberで上記のtopicを購読しておき,上記のsubscriberを強制終了
•Retain•publisherに-rを付けてメッセージ送信.•送信後にsubscriberで購読する
![Page 17: Mqttで始めるIoT](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/17.jpg)
組込みボードと話してみる
•wwest/sakura/temperature
を購読してみてください.
•wwest/sakura/led
にonを送ってみてください
offを送ってみてください
![Page 18: Mqttで始めるIoT](https://reader034.vdocuments.site/reader034/viewer/2022051112/55a512551a28ab582d8b4778/html5/thumbnails/18.jpg)
プログラムからMQTT
•Paho
•Android
•Arduino•ライブラリはとても小さい.Etherが動く環境なら余裕