komunikační protokoly pro iot - linuxdays.cz · obsah •protokoly –mqtt –coap –snad...

27
Komunikační protokoly pro IoT Adam Hořčica (@horcicaa) LinuxDays 2014 Komunikační protokoly pro IoT

Upload: trinhdiep

Post on 04-May-2018

225 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Komunikační protokoly pro IoT

Adam Hořčica (@horcicaa)

LinuxDays 2014

Komunikační protokoly pro IoT

Page 2: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab
Page 3: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Obsah

• Protokoly

– MQTT

– CoAP

– Snad přijde i kouzelník ukázka

• Integrační nástroje

– Node Red

– openHab

Page 4: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Architektura

CoAP MQTT

Page 5: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

MQTT

• Pub-Sub

• Broker x Client

– Publikace zprávy s předmětem

– Odebírání věch zpráv s daným předmětem

– Obsah zprávy je TXT

• Malé datové nároky

• Postavené nad TCP/IP

Page 6: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Pub/Sub

PUB

SUB

SUB

SUB

Broker

PUB: /greatings

Page 7: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Předmět (topic)

• Publikace /hierarchická/struktura/xyz/123

• Odebírání – Přesný předmět: /hierarchická/struktura/xyz

– Wildchar: /hierarchická/+/+/xyz

/hierarchická/struktura/#

/+/struktura/#

Page 8: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Předmět (topic)

/sensory/budovaA/mistnost123/teplota

/sensory/budovaA/mistnost123/+

/sensory/budovaA/#

/sensory/budovaA/+/teplota

/sensory/+/+/teplota

Page 9: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Quality of Service

• Co se stane se zprávou v případě poruchy:

QoS ⓿ … nemusí být doručena vůbec

QoS ❶ … může být doručena vícekrát

QoS ❷ … bude doručena právě jednou

Page 10: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

„Poslední vůle“ (will)

• Co se stane, když mě někdo zabije odpojí

• Zpráva, kterou broker při nečekaném odpojení klienta

• will-topic

• will-payload

• will-qos

• will-retain

Page 11: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Mosquitto

• Broker (mosquitto)

• C++, multiplatformní

• Klient: – mosquitto_pub

– mosquitto_sub

• http://mosquitto.org

• Demo: iot.eclipse.org:1883

Page 12: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Ukázka

Senzor Osvětlení

Page 13: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Ukázka

MQTT Broker

MQTT Pub Senzor Osvětlení

MQTT Sub

Node-RED

Page 14: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Arduino Yún - MQTT

// nejprve: $ opkg install mosquitto-client #include <Process.h> Process mqtt; void setup () { Bridge.begin(); mqtt.begin("mosquitto_pub"); mqtt.addParameter("-h"); mqtt.addParameter(MQTT_HOST); mqtt.addParameter("-t"); mqtt.addParameter(MQTT_TOPIC); mqtt.addParameter("-l"); mqtt.runAsynchronously(); } void loop () { mqtt.println(measure_light()); delay(1000); }

Page 15: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Node.js

var mqtt = require("mqtt");

var mqttClient = mqtt.createClient(HOST, PORT);

mqttClient.subscribe("/light");

mqttClient.on("message", function (topic, msg) {

if (msg == "on") {

sendCmd(ON_CMD);

}

else if (msg == "off"){

sendCmd(OFF_CMD);

}

});

Page 16: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Demo Time

Page 17: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Gatway

• MQTT ↔ něco jiného

– Jiný MQTT borker

– RESTful API (HTTP)

– RESTful API (CoAP)

– MQTT-SN (Sensor Network)

Page 18: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

CoAP

• Protokol pro CoRE

• „HTTP nad UDP“

• Princi hodně podobný HTTP

• Umožňuje REST přístup

• Kromě HTTP:

– Auto discovery

– Komunikace bez odpovědi (např. stream)

Page 19: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Pento projekt

https://eclipse.org/ponte/

Page 20: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

INTEGRACE

Page 21: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Node Red

• Grafický jazyk + runtime

• Tok zpráv od vstupu do výstupu

– API, HW, online service

• Implementace v node.js

• http://nodered.org/

• https://learn.adafruit.com/raspberry-pi-hosting-node-red/what-is-node-red

Page 22: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Demo Time

Page 23: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

openHAB

• Integrační platforma pro home automation

• „protocol agnostic“

• V současnosti 75 protokolů

• Programátorsky přívětivé

• http://www.openhab.org

Page 24: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

http://www.openhab.org/features-architecture.html

Page 25: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

GUI

Page 26: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Závěr

• Protokoly

– MQTT

– CoAP

• NodeRED

• openHab

Page 27: Komunikační protokoly pro IoT - linuxdays.cz · Obsah •Protokoly –MQTT –CoAP –Snad přijde i kouzelník ukázka •Integrační nástroje –Node Red –openHab

Závěr

while (audience.questionAvailable()) {

answer();

}

goto next;

Adam Hořčica

mailto: [email protected] twitter: @horcicaa