SlideShare une entreprise Scribd logo
1  sur  27
Komunikační 
protokoly pro 
IoT 
Komunikační protokoly pro IoT 
Adam Hořčica (@horcicaa) 
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

Contenu connexe

En vedette

Seznámení s agilním přístupem - A first look at the Agile
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.
 
Arduino naplno (Arduino Day 2015)
Arduino naplno (Arduino Day 2015)Arduino naplno (Arduino Day 2015)
Arduino naplno (Arduino Day 2015)Adam Hořčica
 
Sedm zabijáků inovaci ve velkých firmách
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
 
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?!
New Media, Big Data, IoT aneb jak to je?!Josef Šlerka
 
Specifika vývoje aplikací pro internet věcí (Dmytro Trofymchuk)
Specifika vývoje aplikací pro internet věcí (Dmytro Trofymchuk)Specifika vývoje aplikací pro internet věcí (Dmytro Trofymchuk)
Specifika vývoje aplikací pro internet věcí (Dmytro Trofymchuk)eMan s.r.o.
 

En vedette (8)

Arduino z rychliku
Arduino z rychlikuArduino z rychliku
Arduino z rychliku
 
Seznámení s agilním přístupem - A first look at the Agile
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 Agile
 
Arduino naplno (Arduino Day 2015)
Arduino naplno (Arduino Day 2015)Arduino naplno (Arduino Day 2015)
Arduino naplno (Arduino Day 2015)
 
PROJECT: Arduino 1
PROJECT: Arduino 1PROJECT: Arduino 1
PROJECT: Arduino 1
 
Sedm zabijáků inovaci ve velkých firmách
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ách
 
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?!
New Media, Big Data, IoT aneb jak to je?!
 
Vizualizace jako pomocník projektového managera
Vizualizace jako pomocník projektového manageraVizualizace jako pomocník projektového managera
Vizualizace jako pomocník projektového managera
 
Specifika vývoje aplikací pro internet věcí (Dmytro Trofymchuk)
Specifika vývoje aplikací pro internet věcí (Dmytro Trofymchuk)Specifika vývoje aplikací pro internet věcí (Dmytro Trofymchuk)
Specifika vývoje aplikací pro internet věcí (Dmytro Trofymchuk)
 

Similaire à Komunikační protokoly pro IoT (LinuxDays 2014)

WebSockets - how to do real-time applications in PHP
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
 
MicroPython IoT vlaxa
MicroPython IoT vlaxaMicroPython IoT vlaxa
MicroPython IoT vlaxaVladan Laxa
 
JavaScript v GTM - Measure Camp Brno 2017
JavaScript v GTM - Measure Camp Brno 2017JavaScript v GTM - Measure Camp Brno 2017
JavaScript v GTM - Measure Camp Brno 2017Michal Blažek
 
Zmrakování pružné včely
Zmrakování pružné včelyZmrakování pružné včely
Zmrakování pružné včelyfersman
 
Nette v cloudu - Poslední Sobota
Nette v cloudu - Poslední SobotaNette v cloudu - Poslední Sobota
Nette v cloudu - Poslední SobotaPatrik Votoček
 
Sítě pro malé a střední podniky 2014
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 2014Vladimír Smitka
 
OpenStack Technical Overview
OpenStack Technical OverviewOpenStack Technical Overview
OpenStack Technical OverviewLukas Korous
 
Slovak Sun Training Day 2010 - OpenSolaris
Slovak Sun Training Day 2010 - OpenSolarisSlovak Sun Training Day 2010 - OpenSolaris
Slovak Sun Training Day 2010 - OpenSolarisMartin Cerveny
 
MoroSystems na ostravském CZJUGu o Apache Wicket
MoroSystems na ostravském CZJUGu o Apache WicketMoroSystems na ostravském CZJUGu o Apache Wicket
MoroSystems na ostravském CZJUGu o Apache WicketTomáš Páral
 
#golang @SkrzCzDev (Skrz DEV Cirkus 21.10.2015)
#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 Kulhan
 
Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Tomáš Kukol
 
Slovak Sun Training Day 2010 - DTrace
Slovak Sun Training Day 2010 - DTraceSlovak Sun Training Day 2010 - DTrace
Slovak Sun Training Day 2010 - DTraceMartin Cerveny
 
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 Dev Meetup: Postavte si chytrou domácnost (2.8.2016, Hradec Králové)eMan s.r.o.
 
Malware Houdiny
Malware HoudinyMalware Houdiny
Malware HoudinyCESNET
 
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
Rodina protokolů TCP/IP, téma 9: Transportní protokoly Jiří Peterka
 
Python v PostgreSQL pohledem PHP programátora
Python v PostgreSQL pohledem PHP programátoraPython v PostgreSQL pohledem PHP programátora
Python v PostgreSQL pohledem PHP programátoraMichal Špaček
 
WP výkon a jeho profilování
WP výkon a jeho profilováníWP výkon a jeho profilování
WP výkon a jeho profilováníVladimír Smitka
 

Similaire à Komunikační protokoly pro IoT (LinuxDays 2014) (20)

WebSockets - how to do real-time applications in PHP
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
 
MicroPython IoT vlaxa
MicroPython IoT vlaxaMicroPython IoT vlaxa
MicroPython IoT vlaxa
 
JavaScript v GTM - Measure Camp Brno 2017
JavaScript v GTM - Measure Camp Brno 2017JavaScript v GTM - Measure Camp Brno 2017
JavaScript v GTM - Measure Camp Brno 2017
 
Zmrakování pružné včely
Zmrakování pružné včelyZmrakování pružné včely
Zmrakování pružné včely
 
Nette v cloudu - Poslední Sobota
Nette v cloudu - Poslední SobotaNette v cloudu - Poslední Sobota
Nette v cloudu - Poslední Sobota
 
2 prz
 2 prz 2 prz
2 prz
 
Virtualizace datových center
Virtualizace datových centerVirtualizace datových center
Virtualizace datových center
 
Sítě pro malé a střední podniky 2014
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
 
OpenStack Technical Overview
OpenStack Technical OverviewOpenStack Technical Overview
OpenStack Technical Overview
 
Slovak Sun Training Day 2010 - OpenSolaris
Slovak Sun Training Day 2010 - OpenSolarisSlovak Sun Training Day 2010 - OpenSolaris
Slovak Sun Training Day 2010 - OpenSolaris
 
MoroSystems na ostravském CZJUGu o Apache Wicket
MoroSystems na ostravském CZJUGu o Apache WicketMoroSystems na ostravském CZJUGu o Apache Wicket
MoroSystems na ostravském CZJUGu o Apache Wicket
 
#golang @SkrzCzDev (Skrz DEV Cirkus 21.10.2015)
#golang @SkrzCzDev (Skrz DEV Cirkus 21.10.2015)#golang @SkrzCzDev (Skrz DEV Cirkus 21.10.2015)
#golang @SkrzCzDev (Skrz DEV Cirkus 21.10.2015)
 
Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]
 
Slovak Sun Training Day 2010 - DTrace
Slovak Sun Training Day 2010 - DTraceSlovak Sun Training Day 2010 - DTrace
Slovak Sun Training Day 2010 - DTrace
 
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 Dev Meetup: Postavte si chytrou domácnost (2.8.2016, Hradec Králové)
 
App Engine Kick Start
App Engine Kick StartApp Engine Kick Start
App Engine Kick Start
 
Malware Houdiny
Malware HoudinyMalware Houdiny
Malware Houdiny
 
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
Rodina protokolů TCP/IP, téma 9: Transportní protokoly
 
Python v PostgreSQL pohledem PHP programátora
Python v PostgreSQL pohledem PHP programátoraPython v PostgreSQL pohledem PHP programátora
Python v PostgreSQL pohledem PHP programátora
 
WP výkon a jeho profilování
WP výkon a jeho profilováníWP výkon a jeho profilování
WP výkon a jeho profilování
 

Plus de 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)
Posíláme e-mail (tentokrát pro roboty)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)
Projekty z rychlíku (Silicon Hill, HRuSHka 2014)Adam Hořčica
 
Strahov podle Jiry (Silicon Hill, HRuSHka 2015)
Strahov podle Jiry (Silicon Hill, HRuSHka 2015)Strahov podle Jiry (Silicon Hill, HRuSHka 2015)
Strahov podle Jiry (Silicon Hill, HRuSHka 2015)Adam Hořčica
 
MacGyver - akce prvák 2010
MacGyver - akce prvák 2010MacGyver - akce prvák 2010
MacGyver - akce prvák 2010Adam Hořčica
 

Plus de Adam Hořčica (7)

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)
Posíláme e-mail (tentokrát pro roboty)
 
Projekty z rychlíku (Silicon Hill, HRuSHka 2014)
Projekty z rychlíku (Silicon Hill, HRuSHka 2014)Projekty z rychlíku (Silicon Hill, HRuSHka 2014)
Projekty z rychlíku (Silicon Hill, HRuSHka 2014)
 
Strahov podle Jiry (Silicon Hill, HRuSHka 2015)
Strahov podle Jiry (Silicon Hill, HRuSHka 2015)Strahov podle Jiry (Silicon Hill, HRuSHka 2015)
Strahov podle Jiry (Silicon Hill, HRuSHka 2015)
 
Bluetooth Robot Car
Bluetooth Robot CarBluetooth Robot Car
Bluetooth Robot Car
 
Čtečky SH
Čtečky SHČtečky SH
Čtečky SH
 
Arduino Workshop
Arduino WorkshopArduino Workshop
Arduino Workshop
 
MacGyver - akce prvák 2010
MacGyver - akce prvák 2010MacGyver - akce prvák 2010
MacGyver - akce prvák 2010
 

Komunikační protokoly pro IoT (LinuxDays 2014)

  • 1. Komunikační protokoly pro IoT Komunikační protokoly pro IoT Adam Hořčica (@horcicaa) LinuxDays 2014
  • 2.
  • 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

Notes de l'éditeur

  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?