{"id":37407,"date":"2019-10-31T22:17:29","date_gmt":"2019-10-31T19:17:29","guid":{"rendered":"https:\/\/prohoster.info\/blog\/esp8266-upravlenie-cherez-internet-po-protokolu-mqtt\/"},"modified":"2019-10-31T22:17:29","modified_gmt":"2019-10-31T19:17:29","slug":"esp8266-upravlenie-cherez-internet-po-protokolu-mqtt","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/esp8266-upravlenie-cherez-internet-po-protokolu-mqtt","title":{"rendered":"Esp8266 sterowanie przez internet za pomoc\u0105 protoko\u0142u MQTT","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Esp8266 sterowanie przez internet za pomoc\u0105 protoko\u0142u MQTT\" src=\"\/wp-content\/uploads\/2019\/08\/f2625ae58efb259417096af88f094e54.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n Cze\u015b\u0107 wszystkim! W tym artykule szczeg\u00f3\u0142owo opisz\u0119, jak w zaledwie 20 minut wolnego czasu skonfigurowa\u0107 zdalne sterowanie modu\u0142em esp8266 za pomoc\u0105 aplikacji na Androida w protokole MQTT.<\/p>\n<p> Pomys\u0142 zdalnego sterowania i monitorowania zawsze wzbudza\u0142 zainteresowanie os\u00f3b pasjonuj\u0105cych si\u0119 elektronik\u0105 i programowaniem. Mo\u017cliwo\u015b\u0107 w ka\u017cdej chwili uzyskania lub wys\u0142ania potrzebnych danych, niezale\u017cnie od lokalizacji, stwarza szerokie mo\u017cliwo\u015bci. W moich poprzednich artyku\u0142ach ( <noindex><a rel=\"nofollow\" href=\"https:\/\/geektimes.ru\/post\/255546\/\">Artyku\u0142 1<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/geektimes.ru\/post\/258504\/\">Artyku\u0142 2<\/a><\/noindex>) pr\u00f3bowa\u0142em om\u00f3wi\u0107 kilka dost\u0119pnych i stosunkowo prostych sposob\u00f3w realizacji zdalnego sterowania mikrokontrolerami przez internet. Jednak czas i ca\u0142y \u015bwiat nie stoj\u0105 w miejscu \u2013 post\u0119p nieustannie posuwa si\u0119 do przodu. W kr\u00f3tkim czasie modu\u0142 esp8266 zyska\u0142 du\u017c\u0105 popularno\u015b\u0107, dzi\u0119ki niskiej cenie i wbudowanemu wi-fi, sta\u0142 si\u0119 jednym z kluczowych element\u00f3w \"Inteligentnego domu\".<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nObecnie MQTT jest wiod\u0105cym i najpopularniejszym protoko\u0142em wymiany danych mi\u0119dzy poszczeg\u00f3lnymi urz\u0105dzeniami w ramach system\u00f3w \"Inteligentnego domu\". Oferuje szereg zalet w por\u00f3wnaniu z innymi protoko\u0142ami:<br \/>\n \u2014 niskie zu\u017cycie ruchu;<br \/>\n \u2014 po\u0142\u0105czenie mi\u0119dzy klientem a serwerem jest zawsze otwarte;<br \/>\n \u2014 nie obci\u0105\u017ca \u0142\u0105cza internetowego;<br \/>\n \u2014 brak op\u00f3\u017anie\u0144 w przesy\u0142aniu danych;<br \/>\n \u2014 wygodny system subskrypcji temat\u00f3w;<br \/>\n To wszystko umo\u017cliwia monitorowanie i zarz\u0105dzanie w czasie rzeczywistym. Jednak MQTT wymaga posiadania w\u0142asnego serwera, kt\u00f3ry pe\u0142ni rol\u0119 po\u015brednika mi\u0119dzy klientami sieci. Mamy dwa wyj\u015bcia: stworzy\u0107 w\u0142asny serwer lub skorzysta\u0107 z zewn\u0119trznych us\u0142ug.<\/p>\n<p>Opisywany system zarz\u0105dzania sk\u0142ada si\u0119 z dw\u00f3ch g\u0142\u00f3wnych cz\u0119\u015bci: serwera MQTT (zazwyczaj jest jeden) oraz klient\u00f3w, kt\u00f3rymi mo\u017ce by\u0107 ca\u0142kiem sporo. W naszym przypadku klientami b\u0119d\u0105 aplikacja na Androida oraz sam modu\u0142 esp8266.<\/p>\n<p>Algorytm dzia\u0142ania systemu jest nast\u0119puj\u0105cy. Klienci \u0142\u0105cz\u0105 si\u0119 z serwerem i zaraz po po\u0142\u0105czeniu ka\u017cdy z nich odbywa subskrypcj\u0119 temat\u00f3w, kt\u00f3re go interesuj\u0105. Ca\u0142a komunikacja mi\u0119dzy klientami przebiega przez serwer, kt\u00f3ry przekierowuje dane do innych klient\u00f3w z uwzgl\u0119dnieniem ich subskrypcji.<\/p>\n<p><b>Serwer MQTT. <\/b><\/p>\n<p>W naszym przypadku skorzystamy z bardzo wygodnej us\u0142ugi <noindex><a rel=\"nofollow\" href=\"https:\/\/www.cloudmqtt.com\/\">www.cloudmqtt.com<\/a><\/noindex> kt\u00f3ra oferuje darmowy plan (Cute Cat), w pe\u0142ni zaspokajaj\u0105cy potrzeby realizacji ma\u0142ego, w\u0142asnego systemu \"inteligentnego domu\".<br \/>\n<img decoding=\"async\" alt=\"Esp8266 sterowanie przez internet za pomoc\u0105 protoko\u0142u MQTT\" src=\"\/wp-content\/uploads\/2019\/08\/4dc16e68af75fb268a7a77b04b76d0d1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n Zarejestrujemy si\u0119 na stronie i uzyskamy niezb\u0119dne dane do dost\u0119pu do serwera. Przy konfiguracji klient\u00f3w nale\u017cy u\u017cywa\u0107 standardowego portu (bez SSL i TLS).<br \/>\n<img decoding=\"async\" alt=\"Esp8266 sterowanie przez internet za pomoc\u0105 protoko\u0142u MQTT\" src=\"\/wp-content\/uploads\/2019\/08\/48655ceaaffd45dd414300dd03b7fb09.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Aplikacja na Androida.<\/b><\/p>\n<p>Nasza aplikacja b\u0119dzie dzia\u0142a\u0142a jako pilot do mikrokontrolera oraz b\u0119dzie odbiera\u0107 i wy\u015bwietla\u0107 wszystkie informacje pozyskiwane z esp8266.<\/p>\n<p>Aplikacja nazywa si\u0119 <noindex><a rel=\"nofollow\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.thn.iotmqttdashboard&amp;hl=ru\">IoT MQTT Dashboard<\/a><\/noindex> i stanowi gotowego klienta mqtt z niewielk\u0105 liczb\u0105 bardzo wygodnych widget\u00f3w. Wi\u0119cej informacji na temat dzia\u0142ania aplikacji mo\u017cna znale\u017a\u0107 w filmie.<\/p>\n<p><b>Esp8266.<\/b><\/p>\n<p>Modu\u0142 jest programowany w \u015brodowisku Arduino, jednak chc\u0119 zaznaczy\u0107, \u017ce w ostatnich wersjach Arduino wyst\u0119puj\u0105 problemy z programowaniem modu\u0142u, dlatego zalecam u\u017cywanie wersji 1.6.4.<br \/>\nDla przyk\u0142adu, do esp8266 pod\u0142\u0105czona jest dioda LED (pin 5) oraz czujnik temperatury ds18b20 (pin 2).<br \/>\nPoniewa\u017c do sterowania diod\u0105 LED konieczne jest pozyskiwanie danych, esp po pod\u0142\u0105czeniu powinno subskrybowa\u0107 odpowiedni temat \"test\/led\"; w przeciwnym razie wszystkie wys\u0142ane dane przejd\u0105 obok naszego mikrokontrolera.<br \/>\nAby wysy\u0142a\u0107 dane o temperaturze, subskrypcja nie jest wymagana, ale przy przesy\u0142aniu warto\u015bci temperatury nale\u017cy wskaza\u0107 temat, do kt\u00f3rego te dane b\u0119d\u0105 kierowane.<\/p>\n<p>Poni\u017cej znajduje si\u0119 szkic z szczeg\u00f3\u0142owymi komentarzami.<\/p>\n<p><b class=\"spoiler_title\">Szkic Esp8266_mqtt.ino<\/b><code>\/\/ \u0421\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u043f\u043e\u0434\u043b\u043a\u044e\u0447\u0435\u043d \u043a 5 \u043f\u0438\u043d\u0443<br \/>\n\/\/ \u0414\u0430\u0442\u0447\u0438\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b ds18b20 \u043a 2 \u043f\u0438\u043d\u0443<\/p>\n<p>#include &lt;ESP8266WiFi.h&gt;<br \/>\n#include &lt;PubSubClient.h&gt;<br \/>\n#include &lt;OneWire.h&gt;<br \/>\n#include &lt;DallasTemperature.h&gt;<\/p>\n<p>#define ONE_WIRE_BUS 2<br \/>\nOneWire oneWire(ONE_WIRE_BUS);<br \/>\nCzujniki DallasTemperature(&amp;oneWire);<\/p>\n<p>const char *ssid = \"AIRPORT\"; \/\/ Nazwa punktu dost\u0119pu WiFi<br \/>\nconst char *pass = \"PASSWORD\"; \/\/ Has\u0142o do punktu dost\u0119pu<\/p>\n<p>const char *mqtt_server = \"server\"; \/\/ Nazwa serwera MQTT<br \/>\nconst int mqtt_port = 11140; \/\/ Port do po\u0142\u0105czenia z serwerem MQTT<br \/>\nconst char *mqtt_user = \"Login\"; \/\/ Loginy do serwera<br \/>\nconst char *mqtt_pass = \"Pass\"; \/\/ Has\u0142o do serwera<\/p>\n<p>#define BUFFER_SIZE 100<\/p>\n<p>bool LedState = false;<br \/>\nint tm=300;<br \/>\nfloat temp=0;<\/p>\n<p>\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/p>\n<p>void callback(const MQTT::Publish&amp; pub)<br \/>\n{<br \/>\n Serial.print(pub.topic()); \/\/ wy\u015bwietlamy w porcie szeregowym nazw\u0119 tematu<br \/>\n Serial.print(\" =&gt; \");<br \/>\n Serial.print(pub.payload_string()); \/\/ wy\u015bwietlamy w porcie szeregowym warto\u015b\u0107 odebranych danych<\/p>\n<p> String payload = pub.payload_string();<\/p>\n<p> if(String(pub.topic()) == \"test\/led\") \/\/ sprawdzamy, czy dane przysz\u0142y z odpowiedniego tematu <br \/>\n {<br \/>\n int stled = payload.toInt(); \/\/ przekszta\u0142camy odebrane dane na typ ca\u0142kowity<br \/>\n digitalWrite(5,stled); \/\/ w\u0142\u0105czamy lub wy\u0142\u0105czamy diod\u0119 LED w zale\u017cno\u015bci od otrzymanych warto\u015bci danych<br \/>\n }<br \/>\n}<\/p>\n<p>WiFiClient wclient; <br \/>\nPubSubClient client(wclient, mqtt_server, mqtt_port);<\/p>\n<p>void setup() {<\/p>\n<p> sensors.begin();<br \/>\n Serial.begin(115200);<br \/>\n delay(10);<br \/>\n Serial.println();<br \/>\n Serial.println();<br \/>\n pinMode(5, OUTPUT);<br \/>\n}<\/p>\n<p>void loop() {<br \/>\n \/\/ \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a wi-fi<br \/>\n if (WiFi.status() != WL_CONNECTED) {<br \/>\n Serial.print(\"Connecting to \");<br \/>\n Serial.print(ssid);<br \/>\n Serial.println(\"...\");<br \/>\n WiFi.begin(ssid, pass);<\/p>\n<p>if (WiFi.waitForConnectResult() != WL_CONNECTED)<br \/>\n return;<br \/>\n Serial.println(\"WiFi connected\");<br \/>\n }<\/p>\n<p>\/\/ \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a MQTT \u0441\u0435\u0440\u0432\u0435\u0440\u0443<br \/>\n if (WiFi.status() == WL_CONNECTED) {<br \/>\n if (!client.connected()) {<br \/>\n Serial.println(\"Connecting to MQTT server\");<br \/>\n if (client.connect(MQTT::Connect(\"arduinoClient2\"))<br \/>\n .set_auth(mqtt_user, mqtt_pass))) {<br \/>\n Serial.println(\"Connected to MQTT server\");<br \/>\n client.set_callback(callback);<br \/>\n client.subscribe(\"test\/led\"); \/\/ subskrybujemy temat z danymi dla diody LED<br \/>\n } else {<br \/>\n Serial.println(\"Could not connect to MQTT server\"); <br \/>\n }<br \/>\n }<\/p>\n<p>if (client.connected()){<br \/>\n client.loop();<br \/>\n TempSend();<br \/>\n }<\/p>\n<p>}<br \/>\n} \/\/ end of main loop<\/p>\n<p>\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438\u0439 \u0441 \u0442\u0435\u0440\u043c\u043e\u0434\u0430\u0442\u0447\u0438\u043a\u0430<br \/>\nvoid TempSend(){<br \/>\n if (tm==0)<br \/>\n {<br \/>\n sensors.requestTemperatures(); \/\/ get temperature value from the sensor<br \/>\n float temp = sensors.getTempCByIndex(0);<br \/>\n client.publish(\"test\/temp\",String(temp)); \/\/ wysy\u0142amy warto\u015b\u0107 temperatury do tematu czujnika temperatury<br \/>\n Serial.println(temp);<br \/>\n tm = 300; \/\/ pause between temperature value sends about 3 seconds<br \/>\n }<br \/>\n tm--; <br \/>\n delay(10); <br \/>\n}<br \/>\n<\/code><\/p>\n<p>\nW rezultacie otrzymujemy wygodne narz\u0119dzie do zdalnego sterowania i monitorowania danych, kt\u00f3re jest do\u015b\u0107 proste w obs\u0142udze i b\u0119dzie w zasi\u0119gu nawet dla pocz\u0105tkuj\u0105cych.<\/p>\n<p><b>Film z demonstracj\u0105 dzia\u0142ania systemu sterowania<\/b><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"q36C4rYAKVA\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/q36C4rYAKVA\/hqdefault.jpg\" alt=\"Odtwarzaj wideo\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p><b>Szczeg\u00f3\u0142owa instrukcja wideo dotycz\u0105ca konfiguracji systemu<\/b><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"PTPZv15Td58\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/PTPZv15Td58\/hqdefault.jpg\" alt=\"Odtwarzaj wideo\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p><b>Jedna z mo\u017cliwo\u015bci zastosowania sterowania esp8266 przez protok\u00f3\u0142 MQTT<\/b><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"0GcrRmu15HM\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/0GcrRmu15HM\/hqdefault.jpg\" alt=\"Odtwarzaj wideo\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p><b>Sterowanie ta\u015bm\u0105 LED przez internet<\/b><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"ESSKNfxiSRY\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/ESSKNfxiSRY\/hqdefault.jpg\" alt=\"Odtwarzaj wideo\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p>Je\u015bli masz pytania dotycz\u0105ce tego materia\u0142u, polecam obejrzenie drugiej cz\u0119\u015bci wideo, w kt\u00f3rej materia\u0142 jest przedstawiony w spos\u00f3b bardziej obrazowy.<\/p>\n<p>W archiwum znajduj\u0105 si\u0119 szkic i wszystkie niezb\u0119dne biblioteki do wgrania mikrokontrolera szkicem z przyk\u0142adu.<br \/>\nZwracam uwag\u0119, \u017ce biblioteka ESP8266WiFi.h nie wchodzi w sk\u0142ad tego archiwum, jest instalowana przez mened\u017cera p\u0142yt w \u015brodowisku Arduino.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.mail.ru\/public\/44nnTMk9dBFu\/Files.zip\"><b>ARCHIWUM<\/b><\/a><\/noindex><\/p>\n<p>Serwer MQTT \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.cloudmqtt.com\/\">www.cloudmqtt.com<\/a><\/noindex><\/p>\n<p>Link do aplikacji IoT MQTT Dashboard \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.thn.iotmqttdashboard&#038;hl=ru\">play.google.com\/store\/apps\/details?id=com.thn.iotmqttdashboard&amp;hl=pl<\/a><\/noindex><\/p>\n<p>Dzi\u0119kuj\u0119 wszystkim za uwag\u0119.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/393277\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043a\u0430\u043a \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0437\u0430 20 \u043c\u0438\u043d\u0443\u0442 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0435\u043c esp8266 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Android \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 MQTT. \u0418\u0434\u0435\u044f \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u043e\u0440\u0430\u0436\u0438\u043b\u0430 \u0443\u043c\u044b \u0443\u0432\u043b\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0435 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043b\u044e\u0434\u0435\u0439. \u0412\u0435\u0434\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28068,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37407","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/esp8266-upravlenie-cherez-internet-po-protokolu-mqtt\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Esp8266 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 MQTT | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/esp8266-upravlenie-cherez-internet-po-protokolu-mqtt\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:17:29+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:17:29+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Esp8266 zarz\u0105dzanie przez internet za po\u015brednictwem protoko\u0142u MQTT | ProHoster","description":"Cze\u015b\u0107 wszystkim!","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/esp8266-upravlenie-cherez-internet-po-protokolu-mqtt","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Esp8266 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 MQTT | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/esp8266-upravlenie-cherez-internet-po-protokolu-mqtt","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:17:29+00:00","article:modified_time":"2019-10-31T19:17:29+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37407","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","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":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","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":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"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":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 17:42:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:27:26","updated":"2026-01-23 17:42:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/37407","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=37407"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/37407\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/28068"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=37407"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=37407"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=37407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}