ݺߣ

ݺߣShare a Scribd company logo
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
Ad

Recommended

Arduino
Arduino
Adam Hořčica
PROJECT: Arduino 2
PROJECT: Arduino 2
Milan Půlkrábek
Mikro­kontrolér s Wi-Fi za $3! nejen pro IOT
Mikro­kontrolér s Wi-Fi za $3! nejen pro IOT
Adam Hořčica
Když Arduino potkalo Linux
Když Arduino potkalo Linux
Adam Hořčica
Node-RED
Node-RED
Adam Hořčica
TNPW2-2016-01
TNPW2-2016-01
Lukáš Vacek
Hackathony v České republice
Hackathony v České republice
Andrej Probst
Arduino z rychliku
Arduino z rychliku
Adam Hořčica
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 Agile
Principal engineering s.r.o.
Arduino naplno (Arduino Day 2015)
Arduino naplno (Arduino Day 2015)
Adam Hořčica
PROJECT: Arduino 1
PROJECT: Arduino 1
Milan Půlkrábek
Sedm zabijáků inovaci ve velkých firmách
Sedm zabijáků inovaci ve velkých firmách
Zdeněk Macháček
New Media, Big Data, IoT aneb jak to je?!
New Media, Big Data, IoT aneb jak to je?!
Josef Šlerka
Vizualizace jako pomocník projektového managera
Vizualizace jako pomocník projektového managera
Principal engineering s.r.o.
Specifika vývoje aplikací pro internet věcí (Dmytro Trofymchuk)
Specifika vývoje aplikací pro internet věcí (Dmytro Trofymchuk)
eMan s.r.o.
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)
Adam Hořčica
Strahov podle Jiry (Silicon Hill, HRuSHka 2015)
Strahov podle Jiry (Silicon Hill, HRuSHka 2015)
Adam Hořčica
Bluetooth Robot Car
Bluetooth Robot Car
Adam Hořčica
Čtečky SH
Čtečky SH
Adam Hořčica
Arduino Workshop
Arduino Workshop
Adam Hořčica

More Related Content

Viewers also liked (8)

Arduino z rychliku
Arduino z rychliku
Adam Hořčica
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 Agile
Principal engineering s.r.o.
Arduino naplno (Arduino Day 2015)
Arduino naplno (Arduino Day 2015)
Adam Hořčica
PROJECT: Arduino 1
PROJECT: Arduino 1
Milan Půlkrábek
Sedm zabijáků inovaci ve velkých firmách
Sedm zabijáků inovaci ve velkých firmách
Zdeněk Macháček
New Media, Big Data, IoT aneb jak to je?!
New Media, Big Data, IoT aneb jak to je?!
Josef Šlerka
Vizualizace jako pomocník projektového managera
Vizualizace jako pomocník projektového managera
Principal engineering s.r.o.
Specifika vývoje aplikací pro internet věcí (Dmytro Trofymchuk)
Specifika vývoje aplikací pro internet věcí (Dmytro Trofymchuk)
eMan s.r.o.
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 Agile
Principal engineering s.r.o.
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ách
Zdeněk Macháček
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)
eMan s.r.o.

More from Adam Hořčica (7)

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)
Adam Hořčica
Strahov podle Jiry (Silicon Hill, HRuSHka 2015)
Strahov podle Jiry (Silicon Hill, HRuSHka 2015)
Adam Hořčica
Bluetooth Robot Car
Bluetooth Robot Car
Adam Hořčica
Čtečky SH
Čtečky SH
Adam Hořčica
Arduino Workshop
Arduino Workshop
Adam Hořčica
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)
Adam Hořčica
Strahov podle Jiry (Silicon Hill, HRuSHka 2015)
Strahov podle Jiry (Silicon Hill, HRuSHka 2015)
Adam Hořčica
Ad

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

  • #2: 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?