{"id":33046,"date":"2019-10-31T21:50:27","date_gmt":"2019-10-31T18:50:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/vizualnoe-programmirovanie-dlya-sonoff-basic\/"},"modified":"2019-10-31T21:50:27","modified_gmt":"2019-10-31T18:50:27","slug":"vizualnoe-programmirovanie-dlya-sonoff-basic","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic","title":{"rendered":"Visuellt programmering f\u00f6r Sonoff Basic","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Visuellt programmering f\u00f6r Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/0682cb274648d8a8d16b17bced0116d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nEn artikel om hur man f\u00f6rvandlar en billig kinesisk enhet till en programmerbar logikcontroller. En s\u00e5dan enhet kan anv\u00e4ndas b\u00e5de f\u00f6r hemautomation och som praktiska \u00f6vningar i skolans datateknik.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<em>Som referens, som standard fungerar Sonoff Basic-programmet med mobilappen via en kinesisk molntj\u00e4nst, efter den f\u00f6reslagna ombyggnaden blir all vidare interaktion med denna enhet m\u00f6jlig i webbl\u00e4saren.<\/em> <\/p>\n<h2>Avsnitt I. Ansluta Sonoff till MGT24-tj\u00e4nsten<\/h2>\n<p><\/p>\n<h3>Steg 1. Skapa en kontrollpanel<\/h3>\n<p>\nRegistrera dig p\u00e5 webbplatsen <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\">mgt24<\/a><\/noindex> (om du inte redan har registrerat dig) och logga in med ditt konto.<br \/>\n<b class=\"spoiler_title\">Logga in<\/b><img decoding=\"async\" alt=\"Visuellt programmering f\u00f6r Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/e9b310a7cb7d2da90ac8161407944a8c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00f6r att skapa en kontrollpanel f\u00f6r en ny enhet, tryck p\u00e5 knappen &#171;+&#187;.<br \/>\n<b class=\"spoiler_title\">Exempel p\u00e5 att skapa en panel<\/b><img decoding=\"async\" alt=\"Visuellt programmering f\u00f6r Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/dc10d7009ea65c72714c2ccd2314ed0b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e4r panelen har skapats kommer den att visas i din lista \u00f6ver paneler.<\/p>\n<p>I fliken \u201eInstallation\u201d av den skapade panelen, hitta f\u00e4lten \u201eEnhets-ID\u201d och \u201eAutentiseringstoken\u201d, denna information beh\u00f6vs senare f\u00f6r att konfigurera Sonoff-enheten.<br \/>\n<b class=\"spoiler_title\">Exempel p\u00e5 fliken<\/b><img decoding=\"async\" alt=\"Visuellt programmering f\u00f6r Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/f6cc6f1f469c6278c38c4c63288d9ba2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Steg 2. Flasha enheten<\/h3>\n<p>\nAnv\u00e4nd verktyget <noindex><a rel=\"nofollow\" href=\"https:\/\/esp8266.ru\/download\/esp8266-utils\/XTCOM_UTIL.zip\">XTCOM_UTIL<\/a><\/noindex> f\u00f6r att ladda upp fastvaren <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\/en\/docs\/firmware\/plc_basic.bin\">PLC Sonoff Basic<\/a><\/noindex> till enheten, f\u00f6r detta beh\u00f6ver du en USB-TTL-konverterare. H\u00e4r <noindex><a rel=\"nofollow\" href=\"https:\/\/esp8266.ru\/esp8266-obnovlenie-proshivki-xtcom_util\/\">instruktion<\/a><\/noindex> och <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\/en\/docs\/#!sonoff.md#%D0%9F%D0%B5%D1%80%D0%B5%D0%BF%D1%80%D0%BE%D1%88%D0%B8%D0%B2%D0%BA%D0%B0_Sonoff_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_\">finns en videoinstruktion<\/a><\/noindex>.<\/p>\n<h3>Steg 3. Konfigurera enheten<\/h3>\n<p>\nAnslut str\u00f6m till enheten, n\u00e4r LED-lampan t\u00e4nds, tryck p\u00e5 knappen och h\u00e5ll den intryckt tills LED-lampan b\u00f6rjar blinka j\u00e4mnt.<br \/>\nVid denna tidpunkt kommer ett nytt wi-fi-n\u00e4tverk med namnet \u201ePLC Sonoff Basic\u201d att dyka upp, anslut din dator till detta n\u00e4tverk.<br \/>\n<b class=\"spoiler_title\">Avkodning av LED-indikationen<\/b><\/p>\n<p>LED-indikationen<br \/>\nEnhetens tillst\u00e5nd<\/p>\n<p>periodisk dubbelblinkning<br \/>\ningen anslutning till routern<\/p>\n<p>lyser kontinuerligt<br \/>\nanslutning till routern \u00e4r etablerad<\/p>\n<p>periodisk j\u00e4mn blinkning<br \/>\nwi-fi accesspunktsl\u00e4ge<\/p>\n<p>sl\u00e4ckt<br \/>\ningen str\u00f6m<\/p>\n<p>\u00d6ppna webbl\u00e4saren och skriv in adressen \u201e192.168.4.1\u201d i adressf\u00e4ltet, g\u00e5 till inst\u00e4llningssidan f\u00f6r enhetens n\u00e4tverksparametrar.<\/p>\n<p>Fyll i f\u00e4lten enligt f\u00f6ljande:<\/p>\n<ul>\n<li>\u201eNamn p\u00e5 n\u00e4tverk\u201d och \u201eL\u00f6senord\u201d (f\u00f6r att koppla enheten till hemmet wi-fi-router).<\/li>\n<li>\u201eEnhets-ID\u201d och \u201eAutentiseringstoken\u201d (f\u00f6r att auktorisera enheten p\u00e5 MGT24-tj\u00e4nsten).<\/li>\n<\/ul>\n<p>\n<b class=\"spoiler_title\">Exempel p\u00e5 inst\u00e4llningar av n\u00e4tverksparametrar f\u00f6r enheten<\/b><img decoding=\"async\" alt=\"Visuellt programmering f\u00f6r Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/47d02b3883ce3896157da4dcc4fe7f40.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSpara inst\u00e4llningarna och starta om enheten.<br \/>\nH\u00e4r <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/XTzGJI7y7t8?t=376\">finns en videoinstruktion<\/a><\/noindex>.<\/p>\n<h3>Steg 4. Anslutning av sensorer (valfritt)<\/h3>\n<p>\nDen aktuella firmware-versionen st\u00f6der upp till fyra temperatur-sensorer ds18b20. H\u00e4r <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\/en\/docs\/#!sonoff.md#%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B5%D1%80%D0%BC%D0%BE%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA%D0%B0_ds18b20_%D0%BA_Sonoff,_%D0%BC%D0%BE%D0%BD%D1%82%D0%B0%D0%B6%D0%BD%D1%8B%D0%B5_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B\">finns en videoinstruktion<\/a><\/noindex> \u00e4r monteringsanvisningar f\u00f6r sensorerna. Det verkar som att detta steg blir det mest utmanande, eftersom det kr\u00e4ver att du har hantverkskunskaper och en l\u00f6dkolv.<\/p>\n<h2>Avsnitt II. Visuell programmering<\/h2>\n<p><\/p>\n<h3>Steg 1. Skapa skript<\/h3>\n<p>\nSom programmeringsmilj\u00f6 anv\u00e4nds <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.google.com\/blockly\/\">Blockly<\/a><\/noindex>, milj\u00f6n \u00e4r l\u00e4tt att l\u00e4ra sig, s\u00e5 f\u00f6r att skapa enkla skript beh\u00f6ver man inte vara programmerare.<\/p>\n<p>Jag har lagt till specialblock f\u00f6r att l\u00e4sa och skriva enhetens parametrar. \u00c5tkomst till vilken parameter som helst g\u00f6rs via namnet. F\u00f6r parametrar p\u00e5 fj\u00e4rrenheter anv\u00e4nds sammansatta namn: \"parameter@enhet\".<br \/>\n<b class=\"spoiler_title\">Rullgardinslista \u00f6ver parametrar<\/b><img decoding=\"async\" alt=\"Visuellt programmering f\u00f6r Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/6ba0f789a4d3e0a394f4773d2c401416.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Exempel p\u00e5 ett skript f\u00f6r cykliskt p\u00e5- och avsk\u00e4nnande av last (1 Hz):<br \/>\n<img decoding=\"async\" alt=\"Visuellt programmering f\u00f6r Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/66876fcb1d029b1a06098a8f2118bba7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nExempel p\u00e5 ett skript som synkroniserar arbetet mellan tv\u00e5 separata enheter. N\u00e4mligen, rel\u00e4et p\u00e5 m\u00e5l-enheten upprepar rel\u00e4ets arbete p\u00e5 den fj\u00e4rrstyrda enheten.<br \/>\n<img decoding=\"async\" alt=\"Visuellt programmering f\u00f6r Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/a44e81ce1301c7908ac9fa7437785162.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSkript f\u00f6r en termostat (utan hysterese):<br \/>\n<img decoding=\"async\" alt=\"Visuellt programmering f\u00f6r Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/0efa8a8f5e67f5ffd0812af5a2cececa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00f6r att skapa mer komplexa skript kan man anv\u00e4nda variabler, loopar, funktioner (med argument) och andra konstruktioner. Jag kommer inte att f\u00f6rklara allt detta i detalj h\u00e4r, det finns redan en hel del <noindex><a rel=\"nofollow\" href=\"http:\/\/blockly.ru\/\">utbildningsmaterial om Blockly<\/a><\/noindex>.<\/p>\n<h3>Steg 2. Ordning f\u00f6r skriptens utf\u00f6rande<\/h3>\n<p>\nSkriptet k\u00f6rs i kontinuerligt l\u00e4ge, och s\u00e5 snart det n\u00e5r sin slutpunkt startar det om. Det finns tv\u00e5 block som kan tillf\u00e4lligt pausa skriptets k\u00f6rning, \"delay\" och \"pause\".<br \/>\nBlocket \"delay\" anv\u00e4nds f\u00f6r millisekund- eller mikrosekunds-pausar. Detta block h\u00e5ller strikt p\u00e5 tidsintervallet och blockerar hela enhetens funktion. <br \/>\nBlocket \"pause\" anv\u00e4nds f\u00f6r sekunders (kan \u00e4ven vara kortare) pausar, och det blockerar inte utf\u00f6randet av andra processer i enheten.<br \/>\nOm skriptet inneh\u00e5ller en o\u00e4ndlig loop utan en \"pause\", initierar interpreteraren sj\u00e4lv en kort paus.<br \/>\nOm den tilldelade stackminnet tar slut, kommer interpreteraren att stoppa utf\u00f6randet av ett s\u00e5dant resurskr\u00e4vande skript (var f\u00f6rsiktig med rekursiva funktioner).<\/p>\n<h3>Steg 3. Fels\u00f6kning av skript<\/h3>\n<p>\nF\u00f6r att debugga ett skript som redan har laddats in i enheten kan du starta steg-f\u00f6r-steg-tracing av programmet. Detta \u00e4r mycket anv\u00e4ndbart n\u00e4r skriptets beteende inte \u00e4r som f\u00f6rv\u00e4ntat av f\u00f6rfattaren. I s\u00e5dana fall g\u00f6r tracing det m\u00f6jligt f\u00f6r f\u00f6rfattaren att snabbt hitta k\u00e4llan till problemet och korrigera felet i skriptet.<\/p>\n<p>Skript f\u00f6r ber\u00e4kning av faktoriel i debug-l\u00e4ge:<br \/>\n<img decoding=\"async\" alt=\"Visuellt programmering f\u00f6r Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/ea6e23729fd530b79b89c9481e78bd64.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDebuggingverktyget \u00e4r mycket enkelt och best\u00e5r av tre grundl\u00e4ggande knappar: \"start\", \"ett steg fram\u00e5t\" och \"stopp\" (gl\u00f6m heller inte \"in\" och \"ut\" ur debug-l\u00e4ge). F\u00f6rutom steg-f\u00f6r-steg-tracing kan du s\u00e4tta en brytpunkt p\u00e5 vilken block som helst (genom att klicka med musen p\u00e5 blocket).<br \/>\nF\u00f6r att visa aktuella v\u00e4rden p\u00e5 parametrarna (sensorer, rel\u00e4er) p\u00e5 sk\u00e4rmen, anv\u00e4nd blocket \"print\".<br \/>\nH\u00e4r <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/2mK6gvqe_18\">\u00f6versiktlig videofilm<\/a><\/noindex> om anv\u00e4ndningen av debuggern.<\/p>\n<h2>Avsnitt f\u00f6r nyfikna. Vad finns under huven?<\/h2>\n<p>\nF\u00f6r att skripten ska fungera p\u00e5 m\u00e5lenheten utvecklades en byte-kodtolk och en assembler med 38 instruktioner. I k\u00e4llkoden f\u00f6r blockly integrerades en specialiserad kodgenerator som konverterar visuella block till assemblerinstruktioner. Denna assemblerprogram \u00f6verf\u00f6rs sedan till byte-kod och skickas till enheten f\u00f6r utf\u00f6rande.<br \/>\nArkitekturen f\u00f6r denna virtuella maskin \u00e4r ganska enkel och det finns ingen s\u00e4rskild mening med att beskriva den, p\u00e5 n\u00e4tet hittar du m\u00e5nga artiklar om design av enklaste virtuella maskiner.<br \/>\nF\u00f6r min virtuella maskins stack brukar jag avs\u00e4tta 1000 byte, vilket \u00e4r mer \u00e4n tillr\u00e4ckligt. Sj\u00e4lvklart kan djup rekursion f\u00f6rbruka vilken stack som helst, men det \u00e4r osannolikt att de f\u00e5r praktisk till\u00e4mpning.<\/p>\n<p>Den slutliga byte-koden \u00e4r ganska kompakt. Som exempel utg\u00f6r byte-koden f\u00f6r ber\u00e4kning av samma faktoriel endast 49 byte. H\u00e4r \u00e4r dess visuella representationsform:<br \/>\n<img decoding=\"async\" alt=\"Visuellt programmering f\u00f6r Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/1c6a8b693cbf2131f1f1369d97ad034b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOch h\u00e4r \u00e4r dess assemblerprogram:<\/p>\n<pre><code class=\"javascript\">shift -1\nldi 10\ncall factorial, 1\nprint\nexit\n:factorial\nld_arg 0\nldi 1\ngt\nje 8\nld_arg 0\nld_arg 0\nldi 1\nsub\ncall factorial, 1\nmul\nret\nldi 1\nret\n<\/code><\/pre>\n<p>Om den assemblerformade representationen inte har n\u00e5got praktiskt v\u00e4rde, ger fliken \"javascrit\", \u00e5 sin sida, en mer bekant vy \u00e4n visuella block:<\/p>\n<pre><code class=\"javascript\">function factorial(num) {\n  if (num &gt; 1) {\n    return num + factorial(num - 1);\n  }\n  return 1;\n}\n\nwindow.alert(factorial(10));\n<\/code><\/pre>\n<p>N\u00e4r det kommer till prestanda. Vid k\u00f6rning av ett enkelt blinkande program fick jag en v\u00e5gform p\u00e5 47 kHz p\u00e5 oscilloskopet (med en processor klockfrekvens p\u00e5 80 MHz).<br \/>\n<img decoding=\"async\" alt=\"Visuellt programmering f\u00f6r Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/961a50c7ef269265443e078a1a81291a.jpg\" style=\"display:block;margin: 0 auto;\" \/><img decoding=\"async\" alt=\"Visuellt programmering f\u00f6r Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/a416044b4cea01121e04e27ae7d1fef2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nJag anser att detta \u00e4r ett bra resultat, \u00e5tminstone \u00e4r denna hastighet n\u00e4stan tio g\u00e5nger snabbare \u00e4n <noindex><a rel=\"nofollow\" href=\"http:\/\/esp8266freq.blogspot.com\/2016\/12\/esp-speed-compare-in-lua-micropython.html\">Lua<\/a><\/noindex> och <noindex><a rel=\"nofollow\" href=\"https:\/\/www.espruino.com\/Performance\">Espruino<\/a><\/noindex>.<\/p>\n<h2>Avslutande del<\/h2>\n<p>\nSammanfattningsvis vill jag s\u00e4ga att anv\u00e4ndningen av skript inte bara l\u00e5ter oss programmera logiken f\u00f6r enskilda enheter, utan ocks\u00e5 ger m\u00f6jlighet att koppla flera enheter till en enhetlig mekanism, d\u00e4r vissa enheter p\u00e5verkar beteendet hos andra. <br \/>\nJag vill ocks\u00e5 p\u00e5peka att den valda metoden f\u00f6r lagring av skript (direkt i enheterna, snarare \u00e4n p\u00e5 servern) f\u00f6renklar \u00f6verg\u00e5ngen av redan fungerande enheter till en annan server, till exempel en hemmaserver med Raspberry Pi, h\u00e4r <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\/en\/docs\/#!raspberry.md\">instruktion<\/a><\/noindex>.<\/p>\n<p><i>Det \u00e4r allt, jag ser fram emot att h\u00f6ra r\u00e5d och konstruktiv kritik.<\/i><br \/>\n<br \/>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/436272\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0438\u0437 \u0434\u0435\u0448\u0451\u0432\u043e\u0433\u043e \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440. \u0422\u0430\u043a\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0430\u0439\u0434\u0451\u0442 \u0441\u0432\u043e\u0451 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u0442\u0430\u043a \u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u043d\u044f\u0442\u0438\u0439 \u043f\u043e \u0448\u043a\u043e\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u043a\u0435. \u0414\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0438, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 Sonoff Basic \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u043a\u0438, \u0432\u0441\u0451 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u044d\u0442\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u0441\u0442\u0430\u043d\u0435\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24803,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33046","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.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0438\u0437 \u0434\u0435\u0448\u0451\u0432\u043e\u0433\u043e \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.\" \/>\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\/sv\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\udd47\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f Sonoff Basic | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0438\u0437 \u0434\u0435\u0448\u0451\u0432\u043e\u0433\u043e \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic\" \/>\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-31T18:50:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:50:27+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\udd47Visuell programmering f\u00f6r Sonoff Basic | ProHoster","description":"En artikel om hur man anv\u00e4nder en billig kinesisk enhet.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\udd47\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f Sonoff Basic | ProHoster","og:description":"\u0421\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0438\u0437 \u0434\u0435\u0448\u0451\u0432\u043e\u0433\u043e \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic","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-31T18:50:27+00:00","article:modified_time":"2019-10-31T18:50:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33046","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-21 13:45:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:47:29","updated":"2026-01-21 13:45:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/33046","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=33046"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/33046\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/24803"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=33046"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=33046"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=33046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}