{"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\/no\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic","title":{"rendered":"Visuelle programmering for Sonoff Basic","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Visuelle programmering for Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/0682cb274648d8a8d16b17bced0116d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nEn artikkel om hvordan man kan lage en programmerbar logisk kontroller fra et billig kinesisk apparat. Denne enheten vil kunne brukes b\u00e5de til hjemmeautomatisering og som praktiske oppgaver i skoleinformatikk.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<em>For referanse, som standard fungerer Sonoff Basic-programmet med en mobilapplikasjon gjennom en kinesisk skyl\u00f8sning. Etter den foresl\u00e5tte ombyggingen vil all videre interaksjon med denne enheten v\u00e6re mulig i nettleseren.<\/em> <\/p>\n<h2>Del I. Tilkobling av Sonoff til MGT24-tjenesten<\/h2>\n<p><\/p>\n<h3>Trinn 1. Opprettelse av kontrollpanelet<\/h3>\n<p>\nRegistrer deg p\u00e5 nettstedet <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\">mgt24<\/a><\/noindex> (hvis du ikke allerede er registrert) og logg inn p\u00e5 din konto.<br \/>\n<b class=\"spoiler_title\">Innlogging<\/b><img decoding=\"async\" alt=\"Visuelle programmering for Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/e9b310a7cb7d2da90ac8161407944a8c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor \u00e5 opprette et kontrollpanel for en ny enhet, klikk p\u00e5 knappen &#171;+&#187;.<br \/>\n<b class=\"spoiler_title\">Eksempel p\u00e5 oppretting av panel<\/b><img decoding=\"async\" alt=\"Visuelle programmering for Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/dc10d7009ea65c72714c2ccd2314ed0b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e5r panelet er opprettet, vil det vises p\u00e5 listen over dine paneler.<\/p>\n<p>I fanen \u00abInstallasjon\u00bb for det opprettede panelet, finn feltene \u00abEnhets-ID\u00bb og \u00abAutentiseringsn\u00f8kkel\u00bb. Denne informasjonen vil bli n\u00f8dvendig for fremtidig konfigurering av Sonoff-enheten.<br \/>\n<b class=\"spoiler_title\">Eksempel p\u00e5 fane<\/b><img decoding=\"async\" alt=\"Visuelle programmering for Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/f6cc6f1f469c6278c38c4c63288d9ba2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Trinn 2. Flashing av enheten<\/h3>\n<p>\nBruk verkt\u00f8yet <noindex><a rel=\"nofollow\" href=\"https:\/\/esp8266.ru\/download\/esp8266-utils\/XTCOM_UTIL.zip\">XTCOM_UTIL<\/a><\/noindex> last opp fastvaren <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\/en\/docs\/firmware\/plc_basic.bin\">PLC Sonoff Basic<\/a><\/noindex> til enheten, for dette trenger du en USB-TTL-konverter. Her er en <noindex><a rel=\"nofollow\" href=\"https:\/\/esp8266.ru\/esp8266-obnovlenie-proshivki-xtcom_util\/\">en guide<\/a><\/noindex> og <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_\">video veiledning<\/a><\/noindex>.<\/p>\n<h3>Trinn 3. Konfigurering av enheten<\/h3>\n<p>\nKoble til str\u00f8m til enheten, n\u00e5r LED-lampen lyser, trykk p\u00e5 knappen og hold den nede til LED-lampen begynner \u00e5 blinke jevnt.<br \/>\nP\u00e5 dette tidspunktet vil et nytt Wi-Fi-nettverk med navnet \u00abPLC Sonoff Basic\u00bb vises, koble datamaskinen din til dette nettverket.<br \/>\n<b class=\"spoiler_title\">Dekoding av LED-indikasjonen<\/b><\/p>\n<p>LED-indikasjon<br \/>\nEnhetens tilstand<\/p>\n<p>periodisk dobbelt blink<br \/>\ningen forbindelse til ruteren<\/p>\n<p>lyser kontinuerlig<br \/>\ntilkobling til ruteren er etablert<\/p>\n<p>periodisk jevnt blink<br \/>\nWi-Fi-tilgangspunktmodus<\/p>\n<p>slukket<br \/>\ningen str\u00f8m<\/p>\n<p>\u00c5pne nettleseren og skriv inn teksten \u00ab192.168.4.1\u00bb i adressefeltet, g\u00e5 til innstillingssiden for enhetens nettverksparametre.<\/p>\n<p>Fyll ut feltene som f\u00f8lger:<\/p>\n<ul>\n<li>\u00abNettverksnavn\u00bb og \u00abPassord\u00bb (for \u00e5 knytte enheten til det hjemlige Wi-Fi-ruteren).<\/li>\n<li>\u00abEnhets-ID\u00bb og \u00abAutentiseringsn\u00f8kkel\u00bb (for autentisering av enheten p\u00e5 MGT24-tjenesten).<\/li>\n<\/ul>\n<p>\n<b class=\"spoiler_title\">Eksempel p\u00e5 innstilling av nettverksparametre for enheten<\/b><img decoding=\"async\" alt=\"Visuelle programmering for Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/47d02b3883ce3896157da4dcc4fe7f40.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLagre innstillingene og start enheten p\u00e5 nytt.<br \/>\nHer <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/XTzGJI7y7t8?t=376\">video veiledning<\/a><\/noindex>.<\/p>\n<h3>Trinn 4. Tilkobling av sensorer (valgfritt)<\/h3>\n<p>\nDen n\u00e5v\u00e6rende fastvaren st\u00f8tter opptil fire temperaturf\u00f8lere ds18b20. Her <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\">video veiledning<\/a><\/noindex> er montering av sensorene. Dette trinnet vil tilsynelatende v\u00e6re det mest utfordrende, da det vil kreve gode ferdigheter og en loddebolt.<\/p>\n<h2>Del II. Visuell programmering<\/h2>\n<p><\/p>\n<h3>Trinn 1. Oppretting av scenarier<\/h3>\n<p>\nVi bruker <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.google.com\/blockly\/\">Blockly<\/a><\/noindex>, som er en lettfattelig plattform, s\u00e5 for \u00e5 lage enkle scenarier trenger du ikke v\u00e6re programmerer.<\/p>\n<p>Jeg har lagt til spesialiserte blokker for \u00e5 skrive og lese enhetsparametere. Tilgang til enhver parameter skjer via navn. For parametere fra eksterne enheter brukes sammensatte navn: \u00abparameter@enhet\u00bb.<br \/>\n<b class=\"spoiler_title\">Nedtrekkslisten over parametere<\/b><img decoding=\"async\" alt=\"Visuelle programmering for Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/6ba0f789a4d3e0a394f4773d2c401416.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Eksempel p\u00e5 scenario for syklisk p\u00e5- og avstenging av belastning (1 Hz):<br \/>\n<img decoding=\"async\" alt=\"Visuelle programmering for Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/66876fcb1d029b1a06098a8f2118bba7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEksempel p\u00e5 scenario som synkroniserer arbeidet til to separate enheter. Det vil si at rel\u00e9et p\u00e5 m\u00e5l-enheten gjentar arbeidet til rel\u00e9et p\u00e5 den eksterne enheten.<br \/>\n<img decoding=\"async\" alt=\"Visuelle programmering for Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/a44e81ce1301c7908ac9fa7437785162.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nScenario for termostat (uten hysterese):<br \/>\n<img decoding=\"async\" alt=\"Visuelle programmering for Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/0efa8a8f5e67f5ffd0812af5a2cececa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor \u00e5 lage mer komplekse scenarier kan du bruke variabler, l\u00f8kker, funksjoner (med argumenter) og andre konstruksjoner. Jeg vil ikke g\u00e5 inn p\u00e5 detaljene her, det finnes allerede mye <noindex><a rel=\"nofollow\" href=\"http:\/\/blockly.ru\/\">oppl\u00e6ringsmateriale om Blockly<\/a><\/noindex>.<\/p>\n<h3>Trinn 2. Utf\u00f8relsesrekkef\u00f8lge for scenarier<\/h3>\n<p>\nScenariet kj\u00f8rer kontinuerlig, og s\u00e5 snart det er ferdig, starter det p\u00e5 nytt. Det er to blokker som midlertidig kan stoppe scenariet: \u00abdelay\u00bb og \u00abpause\u00bb.<br \/>\nBlokken \u00abdelay\u00bb brukes for millisekund- eller mikrosekundforsinkelser. Denne blokken holder strengt tidsintervallet, og blokkerer driften av hele enheten. <br \/>\nBlokken \u00abpause\u00bb brukes for forsinkelser p\u00e5 sekunder (eller mindre), og den blokkerer ikke kj\u00f8ringen av andre prosesser i enheten.<br \/>\nHvis scenariet inneholder en uendelig l\u00f8kke uten \u00abpause\u00bb, vil tolken selv initiere en liten pause.<br \/>\nVed oppbruk av tilgjengelig minne vil tolken stoppe kj\u00f8ringen av et slik ressurskrevende scenario (v\u00e6r forsiktig med rekursive funksjoner).<\/p>\n<h3>Trinn 3. Feils\u00f8king av scenarier<\/h3>\n<p>\nFor debugging a script that has already been loaded onto the device, you can initiate step-by-step program tracing. This is extremely useful when the behavior of the script does not match the author's intent. In this case, tracing allows the author to quickly identify the source of the problem and correct the error in the script.<\/p>\n<p>Factorial calculation script in debug mode:<br \/>\n<img decoding=\"async\" alt=\"Visuelle programmering for Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/ea6e23729fd530b79b89c9481e78bd64.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThe debugging tool is very simple and consists of three main buttons: 'start', 'step forward', and 'stop' (also don't forget about 'enter' and 'exit' debug mode). Besides step-by-step tracing, you can set a breakpoint on any block (by clicking with the mouse on the block).<br \/>\nTo display the current values of parameters (sensors, relays) on the monitor, use the 'print' block.<br \/>\nHer <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/2mK6gvqe_18\">overview video<\/a><\/noindex> about using the debugger.<\/p>\n<h2>Section for the curious. So what's under the hood?<\/h2>\n<p>\nIn order for the scripts to work on the target device, a bytecode interpreter and an assembler with 38 instructions were developed. A specialized code generator was integrated into the blockly source code, which converts visual blocks into assembly instructions. Subsequently, this assembly program is transformed into bytecode and sent to the device for execution.<br \/>\nThe architecture of this virtual machine is quite simple, and there is little point in describing it; you will find many articles on the design of simple virtual machines online.<br \/>\nI usually allocate 1000 bytes for the stack of my virtual machine; this is more than enough. Of course, deep recursions can exhaust any stack, but they are unlikely to find practical application.<\/p>\n<p>The resulting bytecode is quite compact. For example, the bytecode for calculating the same factorial consists of only 49 bytes. Here is its visual representation:<br \/>\n<img decoding=\"async\" alt=\"Visuelle programmering for Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/1c6a8b693cbf2131f1f1369d97ad034b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAnd here is its assembly program:<\/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>If the assembly representation has no practical value, the 'javascript' tab, on the other hand, provides a more familiar view than visual blocks:<\/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\u00e5r det gjelder ytelsen. Ved \u00e5 kj\u00f8re et enkelt blinkeskript, fikk jeg en 47kHz rektangul\u00e6r b\u00f8lge p\u00e5 oscilloskopet (med prosessorens klokkehastighet p\u00e5 80MHz).<br \/>\n<img decoding=\"async\" alt=\"Visuelle programmering for Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/961a50c7ef269265443e078a1a81291a.jpg\" style=\"display:block;margin: 0 auto;\" \/><img decoding=\"async\" alt=\"Visuelle programmering for Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/a416044b4cea01121e04e27ae7d1fef2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nJeg anser dette som et greit resultat, i det minste er denne hastigheten nesten ti ganger raskere enn <noindex><a rel=\"nofollow\" href=\"http:\/\/esp8266freq.blogspot.com\/2016\/12\/esp-speed-compare-in-lua-micropython.html\">Lua<\/a><\/noindex> og <noindex><a rel=\"nofollow\" href=\"https:\/\/www.espruino.com\/Performance\">Espruino<\/a><\/noindex>.<\/p>\n<h2>Avsluttende del<\/h2>\n<p>\nFor \u00e5 oppsummere vil jeg si at bruken av skript ikke bare lar oss programmere logikken til en enkelt enhet, men ogs\u00e5 gir mulighet til \u00e5 koble flere enheter sammen i en enhetlig mekanisme, der enkelte enheter p\u00e5virker oppf\u00f8rselen til andre. <br \/>\nJeg vil ogs\u00e5 p\u00e5peke at den valgte metoden for lagring av skript (direkte i enhetene selv, ikke p\u00e5 serveren) forenkler overgangen av allerede fungerende enheter til en annen server, for eksempel til en hjemmelaget Raspberry, her <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\/en\/docs\/#!raspberry.md\">en guide<\/a><\/noindex>.<\/p>\n<p><i>Det er alt, jeg ser frem til \u00e5 h\u00f8re r\u00e5d og konstruktiv kritikk.<\/i><br \/>\n<br \/>Kilde: <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.5 - 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\/no\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\/no\/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\udd47Visuelt programmering for Sonoff Basic | ProHoster","description":"Artikkel om hvordan man bruker et billig kinesisk produkt.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/33046","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=33046"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/33046\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/24803"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=33046"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=33046"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=33046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}