Komunikační protokoly pro IoT (LinuxDays 2014)

Komunikační 
protokoly pro 
IoT 
Komunikační protokoly pro IoT 
Adam Hořčica (@horcicaa) 
LinuxDays 2014
Komunikační protokoly pro IoT (LinuxDays 2014)
Obsah 
• Protokoly 
– MQTT 
– CoAP 
– Snad přijde i kouzelník ukázka 
• Integrační nástroje 
– Node Red 
– openHab
Architektura 
CoAP MQTT
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
Pub/Sub 
PUB 
SUB 
SUB 
SUB 
Broker 
PUB: /greatings
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/#
Předmět (topic) 
/sensory/budovaA/mistnost123/teplota 
/sensory/budovaA/mistnost123/+ 
/sensory/budovaA/# 
/sensory/budovaA/+/teplota 
/sensory/+/+/teplota
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
„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
Mosquitto 
• Broker (mosquitto) 
• C++, multiplatformní 
• Klient: 
– mosquitto_pub 
– mosquitto_sub 
• http://mosquitto.org 
• Demo: iot.eclipse.org:1883
Ukázka 
Senzor 
Osvětlení
Ukázka 
MQTT Broker 
Senzor MQTT Pub 
Osvětlení 
MQTT Sub 
Node-RED
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); 
}
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); 
} 
});
Demo Time
Gatway 
• MQTT ↔ něco jiného 
– Jiný MQTT borker 
– RESTful API (HTTP) 
– RESTful API (CoAP) 
– MQTT-SN (Sensor Network)
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)
Pento projekt 
https://eclipse.org/ponte/
INTEGRACE
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
Demo Time
openHAB 
• Integrační platforma pro home automation 
• „protocol agnostic“ 
• V současnosti 75 protokolů 
• Programátorsky přívětivé 
• http://www.openhab.org
http://www.openhab.org/features-architecture.html
GUI
Závěr 
• Protokoly 
– MQTT 
– CoAP 
• NodeRED 
• openHab
whileZá(vaěurdience.questionAvailable()) { 
answer(); 
} 
goto next; 
Adam Hořčica 
mailto: adam@horcica.cz 
twitter: @horcicaa
1 of 27

Recommended

Arduino by
ArduinoArduino
ArduinoAdam Hořčica
1.4K views28 slides
PROJECT: Arduino 2 by
PROJECT: Arduino 2PROJECT: Arduino 2
PROJECT: Arduino 2Milan Půlkrábek
584 views18 slides
Mikro­kontrolér s Wi-Fi za $3! nejen pro IOT by
Mikro­kontrolér s Wi-Fi za $3! nejen pro IOTMikro­kontrolér s Wi-Fi za $3! nejen pro IOT
Mikro­kontrolér s Wi-Fi za $3! nejen pro IOTAdam Hořčica
708 views53 slides
Obhajoba by
ObhajobaObhajoba
ObhajobaJiří Macháček
4.1K views8 slides
Když Arduino potkalo Linux by
Když Arduino potkalo LinuxKdyž Arduino potkalo Linux
Když Arduino potkalo LinuxAdam Hořčica
1.4K views23 slides
Node-RED by
Node-REDNode-RED
Node-REDAdam Hořčica
797 views33 slides

More Related Content

Viewers also liked

Arduino z rychliku by
Arduino z rychlikuArduino z rychliku
Arduino z rychlikuAdam Hořčica
584 views18 slides
Seznámení s agilním přístupem - A first look at the Agile by
Seznámení s agilním přístupem - A first look at the AgileSeznámení s agilním přístupem - A first look at the Agile
Seznámení s agilním přístupem - A first look at the AgilePrincipal engineering s.r.o.
541 views20 slides
Arduino naplno (Arduino Day 2015) by
Arduino naplno (Arduino Day 2015)Arduino naplno (Arduino Day 2015)
Arduino naplno (Arduino Day 2015)Adam Hořčica
1.4K views47 slides
PROJECT: Arduino 1 by
PROJECT: Arduino 1PROJECT: Arduino 1
PROJECT: Arduino 1Milan Půlkrábek
541 views15 slides
Sedm zabijáků inovaci ve velkých firmách by
Sedm zabijáků inovaci ve velkých firmáchSedm zabijáků inovaci ve velkých firmách
Sedm zabijáků inovaci ve velkých firmáchZdeněk Macháček
335 views37 slides
New Media, Big Data, IoT aneb jak to je?! by
New Media, Big Data, IoT aneb jak to je?!New Media, Big Data, IoT aneb jak to je?!
New Media, Big Data, IoT aneb jak to je?!Josef Šlerka
1.7K views47 slides

Viewers also liked(8)

Similar to Komunikační protokoly pro IoT (LinuxDays 2014)

WebSockets - how to do real-time applications in PHP by
WebSockets - how to do real-time applications in PHPWebSockets - how to do real-time applications in PHP
WebSockets - how to do real-time applications in PHPBrnoPHP
1.4K views31 slides
MicroPython IoT vlaxa by
MicroPython IoT vlaxaMicroPython IoT vlaxa
MicroPython IoT vlaxaVladan Laxa
135 views28 slides
JavaScript v GTM - Measure Camp Brno 2017 by
JavaScript v GTM - Measure Camp Brno 2017JavaScript v GTM - Measure Camp Brno 2017
JavaScript v GTM - Measure Camp Brno 2017Michal Blažek
1.5K views24 slides
Zmrakování pružné včely by
Zmrakování pružné včelyZmrakování pružné včely
Zmrakování pružné včelyfersman
158 views26 slides
Nette v cloudu - Poslední Sobota by
Nette v cloudu - Poslední SobotaNette v cloudu - Poslední Sobota
Nette v cloudu - Poslední SobotaPatrik Votoček
831 views17 slides
2 prz by
 2 prz 2 prz
2 przVojtěch Dubrovský
834 views42 slides

Similar to Komunikační protokoly pro IoT (LinuxDays 2014)(20)

WebSockets - how to do real-time applications in PHP by BrnoPHP
WebSockets - how to do real-time applications in PHPWebSockets - how to do real-time applications in PHP
WebSockets - how to do real-time applications in PHP
BrnoPHP1.4K views
MicroPython IoT vlaxa by Vladan Laxa
MicroPython IoT vlaxaMicroPython IoT vlaxa
MicroPython IoT vlaxa
Vladan Laxa135 views
JavaScript v GTM - Measure Camp Brno 2017 by Michal Blažek
JavaScript v GTM - Measure Camp Brno 2017JavaScript v GTM - Measure Camp Brno 2017
JavaScript v GTM - Measure Camp Brno 2017
Michal Blažek1.5K views
Zmrakování pružné včely by fersman
Zmrakování pružné včelyZmrakování pružné včely
Zmrakování pružné včely
fersman158 views
Nette v cloudu - Poslední Sobota by Patrik Votoček
Nette v cloudu - Poslední SobotaNette v cloudu - Poslední Sobota
Nette v cloudu - Poslední Sobota
Patrik Votoček831 views
Sítě pro malé a střední podniky 2014 by Vladimír Smitka
Sítě pro malé a střední podniky 2014Sítě pro malé a střední podniky 2014
Sítě pro malé a střední podniky 2014
Vladimír Smitka1.5K views
OpenStack Technical Overview by Lukas Korous
OpenStack Technical OverviewOpenStack Technical Overview
OpenStack Technical Overview
Lukas Korous225 views
Slovak Sun Training Day 2010 - OpenSolaris by Martin Cerveny
Slovak Sun Training Day 2010 - OpenSolarisSlovak Sun Training Day 2010 - OpenSolaris
Slovak Sun Training Day 2010 - OpenSolaris
Martin Cerveny524 views
MoroSystems na ostravském CZJUGu o Apache Wicket by Tomáš Páral
MoroSystems na ostravském CZJUGu o Apache WicketMoroSystems na ostravském CZJUGu o Apache Wicket
MoroSystems na ostravském CZJUGu o Apache Wicket
Tomáš Páral811 views
#golang @SkrzCzDev (Skrz DEV Cirkus 21.10.2015) by Jakub Kulhan
#golang @SkrzCzDev (Skrz DEV Cirkus 21.10.2015)#golang @SkrzCzDev (Skrz DEV Cirkus 21.10.2015)
#golang @SkrzCzDev (Skrz DEV Cirkus 21.10.2015)
Jakub Kulhan394 views
Smalltalk prakticky [CZ] by Tomáš Kukol
Smalltalk prakticky [CZ]Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]
Tomáš Kukol1.6K views
Slovak Sun Training Day 2010 - DTrace by Martin Cerveny
Slovak Sun Training Day 2010 - DTraceSlovak Sun Training Day 2010 - DTrace
Slovak Sun Training Day 2010 - DTrace
Martin Cerveny368 views
eMan Dev Meetup: Postavte si chytrou domácnost (2.8.2016, Hradec Králové) by eMan s.r.o.
eMan Dev Meetup: Postavte si chytrou domácnost (2.8.2016, Hradec Králové)eMan Dev Meetup: Postavte si chytrou domácnost (2.8.2016, Hradec Králové)
eMan Dev Meetup: Postavte si chytrou domácnost (2.8.2016, Hradec Králové)
eMan s.r.o.389 views
Malware Houdiny by CESNET
Malware HoudinyMalware Houdiny
Malware Houdiny
CESNET252 views
Rodina protokolů TCP/IP, téma 9: Transportní protokoly by Jiří Peterka
Rodina protokolů TCP/IP, téma 9: Transportní protokoly Rodina protokolů TCP/IP, téma 9: Transportní protokoly
Rodina protokolů TCP/IP, téma 9: Transportní protokoly
Jiří Peterka966 views
Python v PostgreSQL pohledem PHP programátora by Michal Špaček
Python v PostgreSQL pohledem PHP programátoraPython v PostgreSQL pohledem PHP programátora
Python v PostgreSQL pohledem PHP programátora
Michal Špaček707 views

More from Adam Hořčica

Posíláme e-mail (tentokrát pro roboty) by
Posíláme e-mail (tentokrát pro roboty)Posíláme e-mail (tentokrát pro roboty)
Posíláme e-mail (tentokrát pro roboty)Adam Hořčica
154 views34 slides
Projekty z rychlíku (Silicon Hill, HRuSHka 2014) by
Projekty z rychlíku (Silicon Hill, HRuSHka 2014)Projekty z rychlíku (Silicon Hill, HRuSHka 2014)
Projekty z rychlíku (Silicon Hill, HRuSHka 2014)Adam Hořčica
250 views15 slides
Strahov podle Jiry (Silicon Hill, HRuSHka 2015) by
Strahov podle Jiry (Silicon Hill, HRuSHka 2015)Strahov podle Jiry (Silicon Hill, HRuSHka 2015)
Strahov podle Jiry (Silicon Hill, HRuSHka 2015)Adam Hořčica
584 views45 slides
Bluetooth Robot Car by
Bluetooth Robot CarBluetooth Robot Car
Bluetooth Robot CarAdam Hořčica
322 views8 slides
Čtečky SH by
Čtečky SHČtečky SH
Čtečky SHAdam Hořčica
701 views27 slides
Arduino Workshop by
Arduino WorkshopArduino Workshop
Arduino WorkshopAdam Hořčica
437 views6 slides

More from Adam Hořčica(7)

Posíláme e-mail (tentokrát pro roboty) by Adam Hořčica
Posíláme e-mail (tentokrát pro roboty)Posíláme e-mail (tentokrát pro roboty)
Posíláme e-mail (tentokrát pro roboty)
Adam Hořčica154 views
Projekty z rychlíku (Silicon Hill, HRuSHka 2014) by Adam Hořčica
Projekty z rychlíku (Silicon Hill, HRuSHka 2014)Projekty z rychlíku (Silicon Hill, HRuSHka 2014)
Projekty z rychlíku (Silicon Hill, HRuSHka 2014)
Adam Hořčica250 views
Strahov podle Jiry (Silicon Hill, HRuSHka 2015) by Adam Hořčica
Strahov podle Jiry (Silicon Hill, HRuSHka 2015)Strahov podle Jiry (Silicon Hill, HRuSHka 2015)
Strahov podle Jiry (Silicon Hill, HRuSHka 2015)
Adam Hořčica584 views

Komunikační protokoly pro IoT (LinuxDays 2014)

  • 1. Komunikační protokoly pro IoT Komunikační protokoly pro IoT Adam Hořčica (@horcicaa) LinuxDays 2014
  • 3. Obsah • Protokoly – MQTT – CoAP – Snad přijde i kouzelník ukázka • Integrační nástroje – Node Red – openHab
  • 5. 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
  • 6. Pub/Sub PUB SUB SUB SUB Broker PUB: /greatings
  • 7. 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/#
  • 8. Předmět (topic) /sensory/budovaA/mistnost123/teplota /sensory/budovaA/mistnost123/+ /sensory/budovaA/# /sensory/budovaA/+/teplota /sensory/+/+/teplota
  • 9. 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
  • 10. „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
  • 11. Mosquitto • Broker (mosquitto) • C++, multiplatformní • Klient: – mosquitto_pub – mosquitto_sub • http://mosquitto.org • Demo: iot.eclipse.org:1883
  • 13. Ukázka MQTT Broker Senzor MQTT Pub Osvětlení MQTT Sub Node-RED
  • 14. 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); }
  • 15. 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); } });
  • 17. Gatway • MQTT ↔ něco jiného – Jiný MQTT borker – RESTful API (HTTP) – RESTful API (CoAP) – MQTT-SN (Sensor Network)
  • 18. 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)
  • 21. 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
  • 23. openHAB • Integrační platforma pro home automation • „protocol agnostic“ • V současnosti 75 protokolů • Programátorsky přívětivé • http://www.openhab.org
  • 25. GUI
  • 26. Závěr • Protokoly – MQTT – CoAP • NodeRED • openHab
  • 27. whileZá(vaěurdience.questionAvailable()) { answer(); } goto next; Adam Hořčica mailto: adam@horcica.cz twitter: @horcicaa

Editor's Notes

  1. Dobrý den… Pracují ve firmě Profinit. Hlavní pracovní náplň je vývoj enteriprise aplikací – což jsou různé e-bankingy, ekonomický sw atd. Ale abych se z toho nezbláznil tak si občas po večerech hraji i s nějaým HW. Včera se tu někdo na začátku své přednášky ptal kdo Rpi a kdo Arduino, … já bych to drobě upravil a zepta se kdo má Rpi I Arduino?