{"id":7319,"date":"2019-05-17T11:43:56","date_gmt":"2019-05-17T09:43:56","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=7319"},"modified":"2025-05-07T12:03:18","modified_gmt":"2025-05-07T10:03:18","slug":"mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/","title":{"rendered":"MQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M"},"content":{"rendered":"\n<p>IoT (<em>Internet of Things<\/em>) jest obecnie jedn\u0105 z pr\u0119\u017cnie rozwijaj\u0105cych si\u0119 ga\u0142\u0119zi przemys\u0142u le\u017c\u0105c\u0105 na pograniczu IT oraz elektroniki. Do najwa\u017cniejszych zagadnie\u0144 zwi\u0105zanych z t\u0105 dziedzin\u0105 nale\u017cy M2M, czyli komunikacja urz\u0105dzenie do urz\u0105dzenia.<\/p>\n\n\n\n<p>W sieci opartej o WiFi\/Ethernet wykorzystywanych jest wiele r\u00f3\u017cnych wyspecjalizowanych protoko\u0142\u00f3w jak:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>SMTP,<\/li><li>FTP,<\/li><li>HTTP,<\/li><li>HTTPS,<\/li><\/ul>\n\n\n\n<p>kt\u00f3re s\u0142u\u017c\u0105 do obs\u0142ugi poczty czy synchronizacji czasu. HTTP i HTTPS stosowane s\u0105 cz\u0119sto do wymiany informacji. Niekoniecznie do odsy\u0142ania tre\u015bci HTML, aby wizualizowa\u0107 WWW, a np., \u017ceby na polecenie GET odpowiedzie\u0107 odpowiednim JSON-em. Takie podej\u015bcie bywa stosowane w IoT.<\/p>\n\n\n\n<p>Jest jednak protok\u00f3\u0142, kt\u00f3ry okazuje si\u0119 \u0142atwiej skalowalny, l\u017cejszy, a w efekcie wymagaj\u0105cy mniej energii, co dla urz\u0105dze\u0144 embedded jest bardzo wa\u017cne. Chodzi w\u0142a\u015bnie o MQTT (<strong>Message Queue Telemetry Transport<\/strong>) opieraj\u0105ce si\u0119 o model publikacja\/subskrypcja i proste wymiany informacji bez zb\u0119dnych dodatk\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Model publikacja\/subskrypcja<\/strong><\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/pub_sub-1.jpg\"><img decoding=\"async\" width=\"1024\" height=\"641\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/pub_sub-1-1024x641.jpg\" alt=\"Przyk\u0142adowa relacja pomi\u0119dzy klientami a brokerem w modelu publikacja\/subskrypcja\" class=\"wp-image-7327\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/pub_sub-1-1024x641.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/pub_sub-1-300x188.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/pub_sub-1.jpg 1443w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Ryc 1. Przyk\u0142adowa relacja pomi\u0119dzy klientami a brokerem w modelu publikacja\/subskrypcja<\/figcaption><\/figure><\/div>\n\n\n\n<p>Jak wida\u0107 na powy\u017cszej grafice mamy tutaj do czynienia z jednym brokerem. Mo\u017ce by\u0107 on umieszczony na kt\u00f3rym\u015b z urz\u0105dze\u0144 w sieci lub udost\u0119pniany na zewn\u0105trz przez providera. Z nim komunikuj\u0105 si\u0119 klienci, wysy\u0142aj\u0105 wiadomo\u015bci, nas\u0142uchuj\u0105 lub wykonuj\u0105 obie te czynno\u015bci. Wszystko uporz\u0105dkowane jest przy zastosowaniu temat\u00f3w.<\/p>\n\n\n\n<p>Dzia\u0142a to troch\u0119 na zasadzie podobnej do forum. Klient okre\u015bla, \u017ce interesuje go dany temat. W powi\u0105zaniu z nim wszyscy mog\u0105 co\u015b czyta\u0107 i\/lub pisa\u0107 nowe wiadomo\u015bci. Tak te\u017c u\u017cy\u0142 tego protoko\u0142u Facebook, wykorzystuj\u0105c MQTT do popularnego Messengera.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Charakterystyka MQTT<\/strong><\/h2>\n\n\n\n<p>Wa\u017cn\u0105 cech\u0105 MQTT jest to, \u017ce klienci nie musz\u0105 by\u0107 skomunikowani ze sob\u0105 \u2013 istotna jest tylko komunikacja z brokerem. MQTT dzia\u0142a na warstwach od sesji do aplikacji nad TCP\/IP. Istnieje tak\u017ce MQTT-SN przeznaczone pod UDP oraz rozwi\u0105zania Bluetooth i BLE (<em>Bluetooth Low Energy<\/em>). Aby odczytywa\u0107 i publikowa\u0107, potrzebne s\u0105 adres brokera, tematy, kt\u00f3re musimy sobie ustali\u0107, oraz zwykle klucz i u\u017cytkownik.<\/p>\n\n\n\n<p>Dla publikacji du\u017c\u0105 rol\u0119 odgrywa parametr <strong>QoS (<em>Quality of Service). <\/em><\/strong>W&nbsp;uproszczeniu okre\u015bla on, jak bardzo dbamy o dostarczenie paczki.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>&#8211; QoS = 0 \u2013 publikujemy i nie obchodzi nas, co dalej dzieje si\u0119 z paczk\u0105.<\/li><li>&#8211; Qos = 1 \u2013 po nadaniu klient publikuj\u0105cy przechowuje wiadomo\u015b\u0107 a\u017c do ACK, daj\u0105c sobie tym samym mo\u017cliwo\u015b\u0107 do powt\u00f3rnego wys\u0142ania w razie braku potwierdzenia.<\/li><li>&#8211; QoS = 2 \u2013 mechanizm oparty o dwupoziomowy handshake, kiedy chcemy by\u0107 pewni dostarczenia naszej paczki oraz unikni\u0119cia wys\u0142ania jej wi\u0119cej ni\u017c raz.<\/li><\/ul>\n\n\n\n<p>W przypadku temat\u00f3w warto wspomnie\u0107 o jeszcze kilku mo\u017cliwo\u015bciach. Grupujemy je podobnie jak drzewo folder\u00f3w, oddzielaj\u0105c kolejne poziomy zag\u0142\u0119bienia znakiem: \u201e\/\u201dnp. \u201e\/urz\u0105dzenie_1\/odczytane_parametry\/temperatura\u201d. Dla u\u0142atwienia mo\u017cna korzysta\u0107 z dw\u00f3ch znak\u00f3w specjalnych:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u201e+\u201d \u2013 znajduje analogiczne zastosowanie jak w drzewie folder\u00f3w \u201e*\u201d, nas\u0142uchuj\u0105c wszystkich podtemat\u00f3w na danym poziomie. Dla przyk\u0142adu \u201e\/urz\u0105dzenie_1\/odczytane_parametry\/+\u201d odbierze wiadomo\u015bci nadane na \u201e\/urz\u0105dzenie_1\/odczytane_parametry\/temperatura\u201d i \u201e\/urz\u0105dzenie_1\/odczytane_parametry\/o\u015bwietlenie\u201d;<\/li><li>\u201e#\u201d \u2013 u\u017cywamy, kiedy interesuj\u0105 nas wszystkie kolejne poziomy zagnie\u017cd\u017cenia, np. wykorzystanie \u201e\/urz\u0105dzenie_1\/#\u201d skutkuje odczytaniem wiadomo\u015bci i z \u201e\/urz\u0105dzenie_1\/odczytane_parametry\/temperatura\u201d, i z innych parametr\u00f3w, np. \u201e\/urz\u0105dzenie_1\/diagnostyka\u201d.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Praktyka \u2013 Broker<\/strong><\/h2>\n\n\n\n<p>\u017beby \u0142atwiej zrozumie\u0107 ca\u0142o\u015b\u0107, pos\u0142u\u017c\u0119 si\u0119 przyk\u0142adem. Na pocz\u0105tek potrzeba brokera. Ja przygotuj\u0119 tutaj na <a href=\"https:\/\/mosquitto.org\/\" class=\"ek-link\" rel=\"nofollow\" >PC Mosquitto<\/a>, kt\u00f3ry mo\u017ce dzia\u0142a\u0107 te\u017c jako klient. Mamy tak\u017ce troch\u0119 alternatyw jak np. <a href=\"https:\/\/www.hivemq.com\/\" class=\"ek-link\" rel=\"nofollow\" >popularny HiveMQ.<\/a><\/p>\n\n\n\n<p>Pod Linuxa mo\u017cemy go \u015bci\u0105gn\u0105\u0107 komend\u0105:\u00ad\u00ad\u00ad\u00ad\u00ad<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\napt-get install mosquitto\n<\/pre><\/div>\n\n\n<p><a href=\"https:\/\/mosquitto.org\/download\/\" class=\"ek-link\" rel=\"nofollow\" >Plik instalacyjny dla Windowsa<\/a> jest r\u00f3wnie\u017c dost\u0119pny.<\/p>\n\n\n\n<p>Trzeba jednak jeszcze zajrze\u0107 do redme-windows.txt w folderze, w kt\u00f3rym zainstalowany zosta\u0142 Mosquitto. Tam znajdziemy opis, w tym o <a href=\"http:\/\/slproweb.com\/products\/Win32OpenSSL.html\" class=\"ek-link\" rel=\"nofollow\" >zale\u017cno\u015b\u0107 do OpenSSL.<\/a><\/p>\n\n\n\n<p>Na tym etapie da si\u0119 ju\u017c odpali\u0107 broker.<\/p>\n\n\n\n<p>Mosquitto -v<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/1.png\"><img decoding=\"async\" width=\"1024\" height=\"95\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/1-1024x95.png\" alt=\"\" class=\"wp-image-7332\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/1-1024x95.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/1-300x28.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/1.png 1500w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Jak wida\u0107, MQTT domy\u015blnie korzysta z portu 1883.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Praktyka \u2013 Klienci<\/strong><\/h2>\n\n\n\n<p>Nast\u0119pnie mo\u017cna tworzy\u0107 klient\u00f3w. Do przyk\u0142adu wystarczy dw\u00f3ch \u2013 jeden do subskrypcji, drugi do publikacji. Stworz\u0119 ich na tej samej maszynie, co mo\u017cna zauwa\u017cy\u0107 po IP: 127.0.0.1, ale mo\u017cemy sobie wyobrazi\u0107, \u017ce s\u0105 oni po prostu w tej samej sieci.<\/p>\n\n\n\n<p>Podaj\u0119 tak\u017ce przyk\u0142adowe biblioteki dla klient\u00f3w:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.eclipse.org\/paho\/\" class=\"ek-link\" rel=\"nofollow\" >Paho MQTT<\/a> \u2013 dla j\u0119zyk\u00f3w C, C++, Python, Java, JS, Go,<\/li><li><a href=\"https:\/\/m2mqtt.wordpress.com\/\" rel=\"nofollow\" >M2Mqtt<\/a> \u2013 dla C#. (Nuget w Visual Studio),<\/li><li><a href=\"https:\/\/learn.adafruit.com\/adafruit-io\/mqtt-api\" rel=\"nofollow\" >Adafruit IO<\/a> \u2013 dla Ruby on Rails, Node.JS.<\/li><\/ul>\n\n\n\n<p>Ja pos\u0142u\u017c\u0119 si\u0119 t\u0105 pierwsz\u0105 oraz Pythonem.<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/eclipse\/paho.mqtt.python\" class=\"ek-link\" rel=\"nofollow\" >\u0179r\u00f3d\u0142o do instalacji<\/a> znajdziesz tutaj.<\/p>\n\n\n\n<p>Wystarczy otworzy\u0107 \u015bci\u0105gni\u0119t\u0105 paczk\u0119 i zainstalowa\u0107:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\ncd paho.mqtt.python\npython setup.py install\n<\/pre><\/div>\n\n\n<p>Skrypt dla subskrypcji:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\nimport paho.mqtt.client as mqtt\n \nlocalhost = '127.0.0.1'\nport = 1883\ntimeout = 60\ntopic = \"\/test\/podtest\"\n \ndef on_connect(client, userdata, flags, rc):\nprint(\"error = \"+str(rc))\nclient.subscribe(topic)\n \ndef on_message(client, userdata, msg):\nprint(\"msg!\")\nprint(msg.payload)\n \nclient = mqtt.Client()\nclient.on_connect = on_connect\nclient.on_message = on_message\n \nclient.connect(localhost, port, timeout)\n \nclient.loop_forever()\n<\/pre><\/div>\n\n\n<p>Skrypt dla publikacji:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\nimport time\nimport paho.mqtt.client as mqtt\n \nlocalhost = '127.0.0.1'\nport = 1883\ntimeout = 60\ntopic = \"\/test\/podtest\"\nQos = 0\nmessage_payload = \"1\"\n \ndef on_connect(client, userdata, flags, rc):\nprint(\"error = \"+str(rc))\n \nclient = mqtt.Client()\nclient.on_connect = on_connect\n \nclient.connect(localhost, port, timeout)\nclient.publish(topic, message_payload, 0)\n \ntime.sleep(4)\nclient.disconnect()\n<\/pre><\/div>\n\n\n<p>Na pocz\u0105tku uruchamiam subskrypcj\u0119, kt\u00f3ra ca\u0142y czas nas\u0142uchuje na dany temat. Widzimy efekt tak\u017ce na konsoli brokera.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/2.png\"><img decoding=\"async\" width=\"1024\" height=\"223\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/2-1024x223.png\" alt=\"\" class=\"wp-image-7333\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/2-1024x223.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/2-300x65.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/2.png 1500w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Mo\u017cna odpali\u0107 jednorazowo wykonuj\u0105cy si\u0119 skrypt publikacji.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/3.png\"><img decoding=\"async\" width=\"1024\" height=\"81\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/3-1024x81.png\" alt=\"\" class=\"wp-image-7334\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/3-1024x81.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/3-300x24.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/3.png 1500w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Efekt jest widoczny na brokerze, a tak\u017ce na konsoli ze skryptem subskrybuj\u0105cym.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/4.png\"><img decoding=\"async\" width=\"1024\" height=\"345\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/4-1024x345.png\" alt=\"\" class=\"wp-image-7335\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/4-1024x345.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/4-300x101.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/4.png 1500w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Dzia\u0142anie jest niezwykle proste, a ilo\u015b\u0107 potrzebnego ku temu kodu jest minimalna.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Przydatne narz\u0119dzia<\/strong><\/h2>\n\n\n\n<p>Mogliby\u015bmy tak\u017ce zastosowa\u0107 przydatne narz\u0119dzie do tego protoko\u0142u, <a href=\"https:\/\/github.com\/sandro-k\/MQTTLensChromeApp\" class=\"ek-link\" rel=\"nofollow\" >mianowicie MQTTlens<\/a>. Jest to nak\u0142adka na przegl\u0105dark\u0119 Chrome, kt\u00f3ra w \u0142atwy spos\u00f3b pozwala tworzy\u0107 klient\u00f3w oraz publikowa\u0107 i subskrybowa\u0107 w bardzo przejrzystym GUI (rysunek poni\u017cej).<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/5.png\"><img decoding=\"async\" width=\"1507\" height=\"1037\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/5-1024x705.png\" alt=\"\" class=\"wp-image-7331\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/5-1024x705.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/5-300x206.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/5.png 1507w\" sizes=\"(max-width: 1507px) 100vw, 1507px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Do test\u00f3w u\u017cyteczny mo\u017ce by\u0107 podstawowy provider. Jednym z nich jest <a href=\"https:\/\/www.cloudmqtt.com\/\" class=\"ek-link\" rel=\"nofollow\" >CloudMQTT<\/a>, kt\u00f3ry posiada darmowy pakiet z ograniczeniem dziennych wiadomo\u015bci, ale dla ma\u0142ych projekt\u00f3w zupe\u0142nie to wystarcza.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Podsumowanie<\/strong><\/h2>\n\n\n\n<p>MQTT na dobre ju\u017c zadomowi\u0142o si\u0119 w komunikacji mi\u0119dzy urz\u0105dzeniami i wielu producent\u00f3w, np. system\u00f3w smart home tj. <a href=\"https:\/\/www.itead.cc\/sonoff-wifi-wireless-switch.html\" class=\"ek-link\" rel=\"nofollow\" >popularna seria Sonoff od Itead<\/a>, korzysta w\u0142a\u015bnie z tego rozwi\u0105zania. Maj\u0105c na uwadze jak proste jest rozpocz\u0119cie pracy z tym protoko\u0142em, warto spr\u00f3bowa\u0107.<\/p>\n\n\n\n<p>***<\/p>\n\n\n\n<p>Je\u015bli interesuj\u0105 Ci\u0119 zagadnienia zwi\u0105zane z Embedded, zach\u0119camy do lektury artyku\u0142\u00f3w naszych ekspert\u00f3w np. <a href=\"https:\/\/sii.pl\/blog\/practical-use-of-cryptography-on-the-example-of-instant-messaging-application\/\" class=\"ek-link\">Practical use of cryptography on the example of instant messaging application<\/a>, <a href=\"https:\/\/sii.pl\/blog\/branchless-programming-czyli-programowanie-bezgaleziowe\/\" class=\"ek-link\">Branchless programming czyli programowanie \u201ebezga\u0142\u0119ziowe\u201d<\/a>, <a href=\"https:\/\/sii.pl\/blog\/tinyml-uczenie-maszynowe-w-systemach-wbudowanych\/\" class=\"ek-link\">TinyML: Uczenie maszynowe w systemach wbudowanych<\/a> oraz <a href=\"https:\/\/sii.pl\/blog\/maszyny-wirtualne-interpretery-czesc-i-architektura\/\" class=\"ek-link\">Maszyny wirtualne \u2013 interpretery.<\/a><\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;7319&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;31&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;3.8&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;2&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;3.8\\\/5&quot;,&quot;size&quot;:&quot;30&quot;,&quot;title&quot;:&quot;MQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M&quot;,&quot;width&quot;:&quot;120.6&quot;,&quot;_legend&quot;:&quot;{score}\\\/5&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 120.6px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 24px;\">\n            3.8\/5    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>IoT (Internet of Things) jest obecnie jedn\u0105 z pr\u0119\u017cnie rozwijaj\u0105cych si\u0119 ga\u0142\u0119zi przemys\u0142u le\u017c\u0105c\u0105 na pograniczu IT oraz elektroniki. Do &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/\">Continued<\/a><\/p>\n","protected":false},"author":202,"featured_media":7509,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":4,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1314],"tags":[563,435,767,766],"class_list":["post-7319","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-twardo","tag-embedded","tag-iot","tag-m2m","tag-mqtt"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"MQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Szymon Markiewicz\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"blogersii\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"MQTT | blogersii\" \/>\n\t\t<meta property=\"og:description\" content=\"MQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/mqtt.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/mqtt.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"850\" \/>\n\t\t<meta property=\"og:image:height\" content=\"440\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-05-17T09:43:56+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2025-05-07T10:03:18+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Sii.Polska\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"MQTT | blogersii\" \/>\n\t\t<meta name=\"twitter:description\" content=\"MQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/mqtt.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\\\/#article\",\"name\":\"MQTT | blogersii\",\"description\":\"MQTT \\u2013 lekki i przyjemny protok\\u00f3\\u0142 dla komunikacji M2M\",\"inLanguage\":\"pl-PL\",\"headline\":\"MQTT \\u2013 lekki i przyjemny protok\\u00f3\\u0142 dla komunikacji M2M\",\"author\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/author\\\/szymon-markiewicz\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/#organization\"},\"datePublished\":\"2019-05-17T09:43:56+02:00\",\"dateModified\":\"2025-05-07T10:03:18+02:00\",\"articleSection\":\"Development na twardo, Embedded, Internet of Things, M2M, MQTT\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\\\/#webpage\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/mqtt.jpg\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\\\/#articleImage\",\"width\":850,\"height\":440}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sii.pl\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/development-na-twardo\\\/#listItem\",\"name\":\"Development na twardo\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/development-na-twardo\\\/#listItem\",\"position\":2,\"name\":\"Development na twardo\",\"item\":\"https:\\\/\\\/sii.pl\\\/blog\\\/development-na-twardo\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\\\/#listItem\",\"name\":\"MQTT \\u2013 lekki i przyjemny protok\\u00f3\\u0142 dla komunikacji M2M\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\\\/#listItem\",\"position\":3,\"name\":\"MQTT \\u2013 lekki i przyjemny protok\\u00f3\\u0142 dla komunikacji M2M\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/development-na-twardo\\\/#listItem\",\"name\":\"Development na twardo\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/sii.pl\\\/#organization\",\"name\":\"Sii Polska\",\"url\":\"https:\\\/\\\/sii.pl\\\/blog\\\/\",\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/siipolska\\\/\",\"https:\\\/\\\/www.tiktok.com\\\/@siipolska\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCQ3UQ7RJPEYnAWC_rPE5Dxg\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/sii-polska\",\"https:\\\/\\\/clutch.co\\\/profile\\\/sii-poland\",\"https:\\\/\\\/www.crunchbase.com\\\/organization\\\/sii\",\"https:\\\/\\\/www.wikidata.org\\\/wiki\\\/Q16601096\"]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\\\/#webpage\",\"url\":\"https:\\\/\\\/sii.pl\\\/blog\\\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\\\/\",\"name\":\"MQTT | blogersii\",\"description\":\"MQTT \\u2013 lekki i przyjemny protok\\u00f3\\u0142 dla komunikacji M2M\",\"inLanguage\":\"pl-PL\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\\\/#breadcrumblist\"},\"author\":\"https:\\\/\\\/sii.pl\\\/blog\\\/author\\\/szymon-markiewicz\\\/#author\",\"creator\":\"https:\\\/\\\/sii.pl\\\/blog\\\/author\\\/szymon-markiewicz\\\/#author\",\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/mqtt.jpg\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\\\/#mainImage\",\"width\":850,\"height\":440},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\\\/#mainImage\"},\"datePublished\":\"2019-05-17T09:43:56+02:00\",\"dateModified\":\"2025-05-07T10:03:18+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/sii.pl\\\/blog\\\/\",\"name\":\"blogersii\",\"description\":\"Blog technologiczny Sii \\u2013 praktyczna wiedza od ekspert\\u00f3w\",\"inLanguage\":\"pl-PL\",\"publisher\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"MQTT | blogersii","description":"MQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M","canonical_url":"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/#article","name":"MQTT | blogersii","description":"MQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M","inLanguage":"pl-PL","headline":"MQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M","author":{"@id":"https:\/\/sii.pl\/blog\/author\/szymon-markiewicz\/#author"},"publisher":{"@id":"https:\/\/sii.pl\/#organization"},"datePublished":"2019-05-17T09:43:56+02:00","dateModified":"2025-05-07T10:03:18+02:00","articleSection":"Development na twardo, Embedded, Internet of Things, M2M, MQTT","mainEntityOfPage":{"@id":"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/#webpage"},"isPartOf":{"@id":"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/#webpage"},"image":{"@type":"ImageObject","url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/mqtt.jpg","@id":"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/#articleImage","width":850,"height":440}},{"@type":"BreadcrumbList","@id":"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog#listItem","position":1,"name":"Home","item":"https:\/\/sii.pl\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog\/development-na-twardo\/#listItem","name":"Development na twardo"}},{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog\/development-na-twardo\/#listItem","position":2,"name":"Development na twardo","item":"https:\/\/sii.pl\/blog\/development-na-twardo\/","nextItem":{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/#listItem","name":"MQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M"},"previousItem":{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/#listItem","position":3,"name":"MQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M","previousItem":{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog\/development-na-twardo\/#listItem","name":"Development na twardo"}}]},{"@type":"Organization","@id":"https:\/\/sii.pl\/#organization","name":"Sii Polska","url":"https:\/\/sii.pl\/blog\/","sameAs":["https:\/\/www.instagram.com\/siipolska\/","https:\/\/www.tiktok.com\/@siipolska","https:\/\/www.youtube.com\/channel\/UCQ3UQ7RJPEYnAWC_rPE5Dxg","https:\/\/www.linkedin.com\/company\/sii-polska","https:\/\/clutch.co\/profile\/sii-poland","https:\/\/www.crunchbase.com\/organization\/sii","https:\/\/www.wikidata.org\/wiki\/Q16601096"]},{"@type":"WebPage","@id":"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/#webpage","url":"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/","name":"MQTT | blogersii","description":"MQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M","inLanguage":"pl-PL","isPartOf":{"@id":"https:\/\/sii.pl\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/#breadcrumblist"},"author":"https:\/\/sii.pl\/blog\/author\/szymon-markiewicz\/#author","creator":"https:\/\/sii.pl\/blog\/author\/szymon-markiewicz\/#author","image":{"@type":"ImageObject","url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/mqtt.jpg","@id":"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/#mainImage","width":850,"height":440},"primaryImageOfPage":{"@id":"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/#mainImage"},"datePublished":"2019-05-17T09:43:56+02:00","dateModified":"2025-05-07T10:03:18+02:00"},{"@type":"WebSite","@id":"https:\/\/sii.pl\/blog\/#website","url":"https:\/\/sii.pl\/blog\/","name":"blogersii","description":"Blog technologiczny Sii \u2013 praktyczna wiedza od ekspert\u00f3w","inLanguage":"pl-PL","publisher":{"@id":"https:\/\/sii.pl\/#organization"}}]},"og:locale":"pl_PL","og:site_name":"blogersii","og:type":"article","og:title":"MQTT | blogersii","og:description":"MQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M","og:url":"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/","og:image":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/mqtt.jpg","og:image:secure_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/mqtt.jpg","og:image:width":850,"og:image:height":440,"article:published_time":"2019-05-17T09:43:56+00:00","article:modified_time":"2025-05-07T10:03:18+00:00","article:publisher":"https:\/\/www.facebook.com\/Sii.Polska","twitter:card":"summary","twitter:title":"MQTT | blogersii","twitter:description":"MQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M","twitter:image":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/mqtt.jpg"},"aioseo_meta_data":{"post_id":"7319","title":"MQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M","description":"MQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M","keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"article","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"summary","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":{"id":"#aioseo-article-64671430cd997","slug":"article","graphName":"Article","label":"Article","properties":{"type":"BlogPosting","name":"#post_title","headline":"#post_title","description":"#post_excerpt","image":"","keywords":"","author":{"name":"#author_name","url":"#author_url"},"dates":{"include":true,"datePublished":"","dateModified":""}}},"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":"{\"article\":{\"articleType\":\"BlogPosting\"},\"course\":{\"name\":\"\",\"description\":\"\",\"provider\":\"\"},\"faq\":{\"pages\":[]},\"product\":{\"reviews\":[]},\"recipe\":{\"ingredients\":[],\"instructions\":[],\"keywords\":[]},\"software\":{\"reviews\":[],\"operatingSystems\":[]},\"webPage\":{\"webPageType\":\"WebPage\"}}","pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"limit_modified_date":false,"created":"2021-10-15 05:33:30","updated":"2025-05-07 10:09:31","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/sii.pl\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/sii.pl\/blog\/development-na-twardo\/\" title=\"Development na twardo\">Development na twardo<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tMQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/sii.pl\/blog"},{"label":"Development na twardo","link":"https:\/\/sii.pl\/blog\/development-na-twardo\/"},{"label":"MQTT \u2013 lekki i przyjemny protok\u00f3\u0142 dla komunikacji M2M","link":"https:\/\/sii.pl\/blog\/mqtt-lekki-i-przyjemny-protokol-dla-komunikacji-m2m\/"}],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2019\/04\/mqtt.jpg","category_names":["Development na twardo"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/7319","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/202"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=7319"}],"version-history":[{"count":1,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/7319\/revisions"}],"predecessor-version":[{"id":20824,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/7319\/revisions\/20824"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/7509"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=7319"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=7319"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=7319"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}