SlideShare a Scribd company logo
1 of 31
Download to read offline
Как Internet of Things си
говорят чрез MQTT и софтуер с
отворен код?
Леон Анави
leon.anavi@konsulko.com
leon@anavi.org
Меню за деня
 Общи приказки за Internet of Things
 Суха теория за протокола MQTT
 Open source MQTT брокери и клиенти
 Неуспешни демонстрации
 За десерт: трудни въпроси
Internet of Things (IoT)
 Вградени устройства, свързани към Интернeт
Предизвикателства за IoT
 Комуникация в реално време
 Консумация и работа на батерии
 Ниска цена за производство
 Софтуер, който да е съвместим с устройства с
ограничен хардуер
Комуникация
MQTT
 MQTT е съкращение от MQ Telemetry Transport
 Съществува от 1999г
 От 2013г започва процедура по създаване на
стандарт към международния консорциум с
нестопанска дейност OASIS
MQTT
 Лек протокол от типа publish/subscribe за
комуникация между машини, изграден върху
TCP/IP
 Комуникация в реално време
 Брокер, който да разпределя съобщенията
между клиентите
 Лесна имплементация и съществуващи open
source библиотеки на много програмни езици
OSI Модел
7. Приложен слой
MQTT, HTTP, SMTP, SSH, Telnet и други
6. Представителен слой
TSL, SSL и други
5. Сесиен слой
4. Транспортен слой
TCP, UDP и други
3. Мрежов слой
IP, ICMP, IGPM и други
2. Канален слой
1. Физически слой
MQTT TCP/IP портове
 Порт 1883 е резервиран за MQTT
 Порт 8883 е резервиран за MQTT върху SSL
MQTT
 MQTT клиенти – софтуерни приложения, които
се свързват към MQTT брокер. Могат да
изпращат и да получават съобщения.
 MQTT брокер – софтуер, които се изпълнява
като демон и се грижи за разпределянето на
съобщенията между клиентите.
MQTT операции
 Connect
 Disconnect
 Subscribe
 Unsubscribe
 Publish
Пример
MQTT
Broker
PC
(MQTT client)
Smart Phone
(MQTT client)
Sensor
(MQTT client)
Publish
Subscribe
Publish
Publish
Subscribe
 MQTT клиент се свързва с брокер и се абонира за
дадена тема
 Данни от сензор се изпращат по MQTT и брокерът
ги доставя до заинтересуваните клиенти
MQTT Publish
Topic
Payload
QoS
Retain
"hello/1"
{ "temperature": 20 }
2
false
Пример
MQTT Quality of Service (QoS)
 0 – съобщението ще бъде доставено най-
много веднъж
 1 – съобщението ще бъде доставено поне
веднъж
 2 – съобщението ще бъде доставено точно
един единствен път
MQTT заглавия
 Примерно заглавие
home / kitchen / temperature
 Wildcards на едно ниво
home / + / temperature
 Wildcards на много нива
home / #
Last Will & Testament (LWT)
 Завещание от МQTT клиент, което другите
заинтересувани MQTT клиенти получават, ако
връзката със завещаващия бъде прекъсната
неочаквано.
MQTT Сигурност
 Възможност за криптиране на предаваните
данни с TLS/SSL
 Автентификация с потребителско име и
парола
 Авторизация с Access Control Lists (ACL)
Free and Open
Source Software
MQTT брокери с отворен код
 Mosquitto
 HiveMQ
 Mosca
 emqttd
 VerneMQ
 ActiveMQ
Mosquitto
 MQTT брокер с отворен код, написан на
програмния език C
 Поддържа версии на MQTT протокола 3.1 и 3.1.1
 Наличен за всички популярни GNU/Linux
дистрибуции: Debian,Ubuntu, Fedora, RedHat
Enterprise Linux, openSUSE, CentOS, ArchLinux,
Slackware и други
 Наличен също за Windows, FreeBSD и Mac
 Проект на iot.eclipse.com
Web Socket
 Функционалност, която позволява всеки
модерен уеб браузър да се свързва към MQTT
брокер чрез web socket
 Web socket се поддържат от Mosquitto (след
v1.4), HiveMQ (след v1.4), Mosca (след v0.13.0)
 JavaScript имплементация на MQTT клиент с
WebSocket се предоставя от open source
проекта Paho:
https://www.eclipse.org/paho/clients/js/
Скалиране на MQTT брокери
 При високи натоварвания се използва
стратегия за създаване на мостове (bridges)
между няколко MQTT брокера
 По този начин може да се намали броя
клиенти свързани към един брокер
Публични MQTT брокери
Server Broker Port Websocket
iot.eclipse.org Mosquitto 1883 / 8883 80 / 443
test.mosquitto.org Mosquitto 1883 / 8883 / 8884 8080 / 8081
test.mosca.io Mosca 1883 80
broker.hivemq.com HiveMQ 1883 8000
broker.mqttdashboard.com HiveMQ 1883 8000
cloudmqtt.com Mosquitto 1xxxx 3xxxx
MQTT клиенти
 Paho предоставя имплементации на MQTT
клиенти на C/C++, Java, JavaScript, Python and C#
http://www.eclipse.org/paho/
 Node.js библиотека за MQTT клиенти:
https://www.npmjs.com/package/mqtt
 MQTT библиотека за Arduino:
http://pubsubclient.knolleary.net/
 Java
 Python
 JavaScript
 GoLang
 C
 .Net (C#)
 Android service
 Embedded C/C++
За JavaScript и Node.js феновете...
 Инсталация:
npm install mqtt --save
 Пример:
Демо
Demo 1: Total game changer for
Internet of Things ;)
Демо 2: Проклятието на демото
Не работи точно, когато ти трябва!
Демо 3: Терминалът
Въпроси?

More Related Content

Viewers also liked (7)

тигр
тигртигр
тигр
 
Անտառային ոլորտի էկոհամակարգերի եւ կենսաբազմազանության տնտեսական նշանակության...
Անտառային ոլորտի էկոհամակարգերի եւ կենսաբազմազանության տնտեսական նշանակության...Անտառային ոլորտի էկոհամակարգերի եւ կենսաբազմազանության տնտեսական նշանակության...
Անտառային ոլորտի էկոհամակարգերի եւ կենսաբազմազանության տնտեսական նշանակության...
 
Ձկներ
ՁկներՁկներ
Ձկներ
 
Recursos Forestales Por Karla L. Ramón
Recursos Forestales Por Karla L. RamónRecursos Forestales Por Karla L. Ramón
Recursos Forestales Por Karla L. Ramón
 
Travel and Tour Advisory
Travel and Tour AdvisoryTravel and Tour Advisory
Travel and Tour Advisory
 
Senior Project Research Paper
Senior Project Research PaperSenior Project Research Paper
Senior Project Research Paper
 
Music Education Research Paper
Music Education Research PaperMusic Education Research Paper
Music Education Research Paper
 

Similar to Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

FABRIQ - Short - Svetlin Nakov
FABRIQ - Short - Svetlin NakovFABRIQ - Short - Svetlin Nakov
FABRIQ - Short - Svetlin Nakov
Svetlin Nakov
 
Защита при създаване на Dot net приложения в интернет
Защита при създаване на Dot net приложения в интернетЗащита при създаване на Dot net приложения в интернет
Защита при създаване на Dot net приложения в интернет
Monika Petrova
 
Veneta_Aleksieva_TechSys-last
Veneta_Aleksieva_TechSys-lastVeneta_Aleksieva_TechSys-last
Veneta_Aleksieva_TechSys-last
Ivailo Jelqzkov
 
FABRIQ - Presentation Nakov 0.8
FABRIQ - Presentation Nakov 0.8FABRIQ - Presentation Nakov 0.8
FABRIQ - Presentation Nakov 0.8
Svetlin Nakov
 
Безопасност и защита на VPN мрежи
Безопасност и защита на VPN мрежиБезопасност и защита на VPN мрежи
Безопасност и защита на VPN мрежи
Vqra Velinova
 
интернет развитие
интернет развитиеинтернет развитие
интернет развитие
Kanio
 
Nakov - .NET Framework Overview + Security
Nakov - .NET Framework Overview +  SecurityNakov - .NET Framework Overview +  Security
Nakov - .NET Framework Overview + Security
Svetlin Nakov
 
Svetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework OverviewSvetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework Overview
Svetlin Nakov
 

Similar to Как Internet of Things си говорят чрез MQTT и софтуер с отворен код? (20)

FABRIQ - Short - Svetlin Nakov
FABRIQ - Short - Svetlin NakovFABRIQ - Short - Svetlin Nakov
FABRIQ - Short - Svetlin Nakov
 
Защита при създаване на Dot net приложения в интернет
Защита при създаване на Dot net приложения в интернетЗащита при създаване на Dot net приложения в интернет
Защита при създаване на Dot net приложения в интернет
 
10724 vpn
10724 vpn10724 vpn
10724 vpn
 
Veneta_Aleksieva_TechSys-last
Veneta_Aleksieva_TechSys-lastVeneta_Aleksieva_TechSys-last
Veneta_Aleksieva_TechSys-last
 
FABRIQ - Presentation Nakov 0.8
FABRIQ - Presentation Nakov 0.8FABRIQ - Presentation Nakov 0.8
FABRIQ - Presentation Nakov 0.8
 
Virtual Private Networks Security Presents
Virtual Private Networks Security PresentsVirtual Private Networks Security Presents
Virtual Private Networks Security Presents
 
Vpn
VpnVpn
Vpn
 
Безопасност и защита на VPN мрежи
Безопасност и защита на VPN мрежиБезопасност и защита на VPN мрежи
Безопасност и защита на VPN мрежи
 
интернет развитие
интернет развитиеинтернет развитие
интернет развитие
 
Sdn nfv мрежова виртуализация
Sdn nfv мрежова виртуализацияSdn nfv мрежова виртуализация
Sdn nfv мрежова виртуализация
 
VET4SBO Level 3 module 1 - unit 2 - 0.009 bg
VET4SBO Level 3   module 1 - unit 2 - 0.009 bgVET4SBO Level 3   module 1 - unit 2 - 0.009 bg
VET4SBO Level 3 module 1 - unit 2 - 0.009 bg
 
Protokoli
ProtokoliProtokoli
Protokoli
 
VET4SBO Level 2 module 6 - unit 4 - v1.0 bg
VET4SBO Level 2   module 6 - unit 4 - v1.0 bgVET4SBO Level 2   module 6 - unit 4 - v1.0 bg
VET4SBO Level 2 module 6 - unit 4 - v1.0 bg
 
Nakov - .NET Framework Overview + Security
Nakov - .NET Framework Overview +  SecurityNakov - .NET Framework Overview +  Security
Nakov - .NET Framework Overview + Security
 
Vpn mreji 105227
Vpn mreji 105227Vpn mreji 105227
Vpn mreji 105227
 
DIPLOMA_MAGISTUR
DIPLOMA_MAGISTURDIPLOMA_MAGISTUR
DIPLOMA_MAGISTUR
 
OpenVPN
OpenVPNOpenVPN
OpenVPN
 
Open Vpn – Poor Man’S Vpn Solution
Open Vpn – Poor Man’S Vpn SolutionOpen Vpn – Poor Man’S Vpn Solution
Open Vpn – Poor Man’S Vpn Solution
 
Svetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework OverviewSvetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework Overview
 
VET4SBO Level 2 module 6 - unit 3 - v1.0 bg
VET4SBO Level 2   module 6 - unit 3 - v1.0 bgVET4SBO Level 2   module 6 - unit 3 - v1.0 bg
VET4SBO Level 2 module 6 - unit 3 - v1.0 bg
 

More from Leon Anavi

Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Leon Anavi
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux Devices
Leon Anavi
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства
Leon Anavi
 

More from Leon Anavi (20)

Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
 
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
 
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
 
Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?
 
Linux обновления с RAUC и Docker
Linux обновления с RAUC и DockerLinux обновления с RAUC и Docker
Linux обновления с RAUC и Docker
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux Devices
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware Makers
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source Hardware
 
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureA/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive Kiosk
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry Pi
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation Tools
 
Практични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiПрактични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry Pi
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source Hardware
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry Pi
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с Linux
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT Brokers
 

Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

  • 1. Как Internet of Things си говорят чрез MQTT и софтуер с отворен код? Леон Анави leon.anavi@konsulko.com leon@anavi.org
  • 2. Меню за деня  Общи приказки за Internet of Things  Суха теория за протокола MQTT  Open source MQTT брокери и клиенти  Неуспешни демонстрации  За десерт: трудни въпроси
  • 3. Internet of Things (IoT)  Вградени устройства, свързани към Интернeт
  • 4. Предизвикателства за IoT  Комуникация в реално време  Консумация и работа на батерии  Ниска цена за производство  Софтуер, който да е съвместим с устройства с ограничен хардуер
  • 6. MQTT  MQTT е съкращение от MQ Telemetry Transport  Съществува от 1999г  От 2013г започва процедура по създаване на стандарт към международния консорциум с нестопанска дейност OASIS
  • 7. MQTT  Лек протокол от типа publish/subscribe за комуникация между машини, изграден върху TCP/IP  Комуникация в реално време  Брокер, който да разпределя съобщенията между клиентите  Лесна имплементация и съществуващи open source библиотеки на много програмни езици
  • 8. OSI Модел 7. Приложен слой MQTT, HTTP, SMTP, SSH, Telnet и други 6. Представителен слой TSL, SSL и други 5. Сесиен слой 4. Транспортен слой TCP, UDP и други 3. Мрежов слой IP, ICMP, IGPM и други 2. Канален слой 1. Физически слой
  • 9. MQTT TCP/IP портове  Порт 1883 е резервиран за MQTT  Порт 8883 е резервиран за MQTT върху SSL
  • 10. MQTT  MQTT клиенти – софтуерни приложения, които се свързват към MQTT брокер. Могат да изпращат и да получават съобщения.  MQTT брокер – софтуер, които се изпълнява като демон и се грижи за разпределянето на съобщенията между клиентите.
  • 11. MQTT операции  Connect  Disconnect  Subscribe  Unsubscribe  Publish
  • 12. Пример MQTT Broker PC (MQTT client) Smart Phone (MQTT client) Sensor (MQTT client) Publish Subscribe Publish Publish Subscribe  MQTT клиент се свързва с брокер и се абонира за дадена тема  Данни от сензор се изпращат по MQTT и брокерът ги доставя до заинтересуваните клиенти
  • 14. MQTT Quality of Service (QoS)  0 – съобщението ще бъде доставено най- много веднъж  1 – съобщението ще бъде доставено поне веднъж  2 – съобщението ще бъде доставено точно един единствен път
  • 15. MQTT заглавия  Примерно заглавие home / kitchen / temperature  Wildcards на едно ниво home / + / temperature  Wildcards на много нива home / #
  • 16. Last Will & Testament (LWT)  Завещание от МQTT клиент, което другите заинтересувани MQTT клиенти получават, ако връзката със завещаващия бъде прекъсната неочаквано.
  • 17. MQTT Сигурност  Възможност за криптиране на предаваните данни с TLS/SSL  Автентификация с потребителско име и парола  Авторизация с Access Control Lists (ACL)
  • 19. MQTT брокери с отворен код  Mosquitto  HiveMQ  Mosca  emqttd  VerneMQ  ActiveMQ
  • 20. Mosquitto  MQTT брокер с отворен код, написан на програмния език C  Поддържа версии на MQTT протокола 3.1 и 3.1.1  Наличен за всички популярни GNU/Linux дистрибуции: Debian,Ubuntu, Fedora, RedHat Enterprise Linux, openSUSE, CentOS, ArchLinux, Slackware и други  Наличен също за Windows, FreeBSD и Mac  Проект на iot.eclipse.com
  • 21. Web Socket  Функционалност, която позволява всеки модерен уеб браузър да се свързва към MQTT брокер чрез web socket  Web socket се поддържат от Mosquitto (след v1.4), HiveMQ (след v1.4), Mosca (след v0.13.0)  JavaScript имплементация на MQTT клиент с WebSocket се предоставя от open source проекта Paho: https://www.eclipse.org/paho/clients/js/
  • 22. Скалиране на MQTT брокери  При високи натоварвания се използва стратегия за създаване на мостове (bridges) между няколко MQTT брокера  По този начин може да се намали броя клиенти свързани към един брокер
  • 23. Публични MQTT брокери Server Broker Port Websocket iot.eclipse.org Mosquitto 1883 / 8883 80 / 443 test.mosquitto.org Mosquitto 1883 / 8883 / 8884 8080 / 8081 test.mosca.io Mosca 1883 80 broker.hivemq.com HiveMQ 1883 8000 broker.mqttdashboard.com HiveMQ 1883 8000 cloudmqtt.com Mosquitto 1xxxx 3xxxx
  • 24. MQTT клиенти  Paho предоставя имплементации на MQTT клиенти на C/C++, Java, JavaScript, Python and C# http://www.eclipse.org/paho/  Node.js библиотека за MQTT клиенти: https://www.npmjs.com/package/mqtt  MQTT библиотека за Arduino: http://pubsubclient.knolleary.net/
  • 25.  Java  Python  JavaScript  GoLang  C  .Net (C#)  Android service  Embedded C/C++
  • 26. За JavaScript и Node.js феновете...  Инсталация: npm install mqtt --save  Пример:
  • 28. Demo 1: Total game changer for Internet of Things ;)
  • 29. Демо 2: Проклятието на демото Не работи точно, когато ти трябва!