{"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\/nl\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic","title":{"rendered":"Visueel programmeren voor Sonoff Basic","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Visueel programmeren voor Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/0682cb274648d8a8d16b17bced0116d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nEen artikel over hoe je een goedkoop Chinees apparaat kunt ombouwen tot een programmeerbare logische controller. Dit apparaat kan zowel in huisautomatisering als voor praktische lessen in de schoolinformatica worden gebruikt.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<em>Ter referentie, standaard werkt het Sonoff Basic-programma met de mobiele app via een Chinese cloudservice; na de voorgestelde aanpassing is al het verdere contact met dit apparaat mogelijk via de browser.<\/em> <\/p>\n<h2>Hoofdstuk I. Verbinden van Sonoff met de MGT24-service<\/h2>\n<p><\/p>\n<h3>Stap 1. Een dashboard maken<\/h3>\n<p>\nRegistreer je op de website <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\">mgt24<\/a><\/noindex> (als je nog niet geregistreerd bent) en log in met je account.<br \/>\n<b class=\"spoiler_title\">Inloggen<\/b><img decoding=\"async\" alt=\"Visueel programmeren voor Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/e9b310a7cb7d2da90ac8161407944a8c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOm een bedieningspaneel voor het nieuwe apparaat te maken, klik op de knop &#171;+&#187;.<br \/>\n<b class=\"spoiler_title\">Voorbeeld van het maken van een dashboard<\/b><img decoding=\"async\" alt=\"Visueel programmeren voor Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/dc10d7009ea65c72714c2ccd2314ed0b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNadat het dashboard is gemaakt, verschijnt het in de lijst met jouw dashboards.<\/p>\n<p>In het tabblad \u2018Installatie\u2019 van het gemaakte dashboard, zoek de velden \u2018Apparaat-ID\u2019 en \u2018Authenticatiecode\u2019; deze informatie is later nodig bij de setup van het Sonoff-apparaat.<br \/>\n<b class=\"spoiler_title\">Voorbeeld van het tabblad<\/b><img decoding=\"async\" alt=\"Visueel programmeren voor Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/f6cc6f1f469c6278c38c4c63288d9ba2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Stap 2. Het apparaat opnieuw flashen<\/h3>\n<p>\nGebruik de tool <noindex><a rel=\"nofollow\" href=\"https:\/\/esp8266.ru\/download\/esp8266-utils\/XTCOM_UTIL.zip\">XTCOM_UTIL<\/a><\/noindex> om de firmware te uploaden <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\/en\/docs\/firmware\/plc_basic.bin\">PLC Sonoff Basic<\/a><\/noindex> naar het apparaat; hiervoor heb je een USB-TTL converter nodig. Hier is een <noindex><a rel=\"nofollow\" href=\"https:\/\/esp8266.ru\/esp8266-obnovlenie-proshivki-xtcom_util\/\">handleiding<\/a><\/noindex> en <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_\">videoinstructie<\/a><\/noindex>.<\/p>\n<h3>Stap 3. Het apparaat configureren<\/h3>\n<p>\nSchakel het apparaat in; zodra de LED oplicht, druk op de knop en houd deze ingedrukt totdat de LED regelmatig gaat knipperen.<br \/>\nOp dat moment verschijnt er een nieuw wifi-netwerk met de naam \u2018PLC Sonoff Basic\u2019, verbind je computer met dit netwerk.<br \/>\n<b class=\"spoiler_title\">Uitleg van de LED-indicatie<\/b><\/p>\n<p>LED-indicatie<br \/>\nApparaatstatus<\/p>\n<p>periodiek dubbel knipperen<br \/>\ngeen verbinding met de router<\/p>\n<p>continu aan<br \/>\nverbinding met de router is ingesteld<\/p>\n<p>regelmatig knipperen<br \/>\nwifi-accesspointmodus<\/p>\n<p>uit<br \/>\ngeen voeding<\/p>\n<p>Open een internetbrowser en voer in de adresbalk \u2018192.168.4.1\u2019 in om naar de pagina met netwerkparameters van het apparaat te gaan.<\/p>\n<p>Vul de velden als volgt in:<\/p>\n<ul>\n<li>\u2018Netwerknaam\u2019 en \u2018Wachtwoord\u2019 (om het apparaat aan de thuis-wifi-router te koppelen).<\/li>\n<li>\u2018Apparaat-ID\u2019 en \u2018Authenticatiecode\u2019 (voor de autorisatie van het apparaat op de MGT24-service).<\/li>\n<\/ul>\n<p>\n<b class=\"spoiler_title\">Voorbeeld van het instellen van de netwerkparameters van het apparaat<\/b><img decoding=\"async\" alt=\"Visueel programmeren voor Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/47d02b3883ce3896157da4dcc4fe7f40.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSla de instellingen op en herstart het apparaat.<br \/>\nHier <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/XTzGJI7y7t8?t=376\">videoinstructie<\/a><\/noindex>.<\/p>\n<h3>Stap 4. Sensoren aansluiten (optioneel)<\/h3>\n<p>\nDe huidige firmware ondersteunt tot vier ds18b20 temperatuur-sensoren. Hier <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\">videoinstructie<\/a><\/noindex> is de installatie van de sensoren. Dit lijkt de meest uitdagende stap te zijn, aangezien het je directe handigheid en een soldeerbout zal vereisen.<\/p>\n<h2>Hoofdstuk II. Visuele programmering<\/h2>\n<p><\/p>\n<h3>Stap 1. Scenario's maken<\/h3>\n<p>\nAls programmeeromgeving wordt <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.google.com\/blockly\/\">Blockly<\/a><\/noindex>, een gebruiksvriendelijke omgeving, gebruikt, dus je hoeft geen programmeur te zijn om eenvoudige scenario's te maken.<\/p>\n<p>Ik heb gespecialiseerde blokken toegevoegd voor het lezen en schrijven van apparaatparameters. Toegang tot elke parameter verloopt op naam. Voor parameters van externe apparaten worden samengestelde namen gebruikt: \"parameter@apparaat\".<br \/>\n<b class=\"spoiler_title\">Keuzelijst van parameters<\/b><img decoding=\"async\" alt=\"Visueel programmeren voor Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/6ba0f789a4d3e0a394f4773d2c401416.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Voorbeeld van een scenario voor het cyclisch in- en uitschakelen van een belasting (1Hz):<br \/>\n<img decoding=\"async\" alt=\"Visueel programmeren voor Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/66876fcb1d029b1a06098a8f2118bba7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVoorbeeld van een scenario dat de werking van twee aparte apparaten synchroniseert. Namelijk, het relais van het doelaan apparaat herhaalt de werking van het relais van het externe apparaat.<br \/>\n<img decoding=\"async\" alt=\"Visueel programmeren voor Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/a44e81ce1301c7908ac9fa7437785162.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nScenario voor een thermostaat (zonder hysterese):<br \/>\n<img decoding=\"async\" alt=\"Visueel programmeren voor Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/0efa8a8f5e67f5ffd0812af5a2cececa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOm complexere scenario's te cre\u00ebren, kunnen variabelen, lussen, functies (met argumenten) en andere constructies worden gebruikt. Ik zal hier niet alles gedetailleerd uiteenzetten, er is al veel <noindex><a rel=\"nofollow\" href=\"http:\/\/blockly.ru\/\">onderwijsmateriaal over Blockly<\/a><\/noindex>.<\/p>\n<h3>Stap 2. Uitvoeringsvolgorde van scenario's<\/h3>\n<p>\nHet scenario werkt continu, en zodra het zijn einde bereikt, start het opnieuw. Er zijn twee blokken die tijdelijk de uitvoering van het scenario kunnen pauzeren: \"delay\" en \"pause\".<br \/>\nHet blok \"delay\" wordt gebruikt voor milliseconde- of microsecondevertragingen. Dit blok houdt strikt het tijdsinterval in stand, waarbij de werking van het hele toestel wordt geblokkeerd. <br \/>\nHet blok \"pause\" wordt gebruikt voor secondes (en minder) vertragingen, en het blok blokkeert de uitvoering van andere processen in het toestel niet.<br \/>\nAls het scenario een oneindige lus bevat, waarin \"pause\" niet is opgenomen, zal de interpreter zelf een korte pauze initi\u00ebren.<br \/>\nBij een uitputting van de toegewezen stapelgeheugen zal de interpreter de uitvoering van een dergelijk 'hongerige' scenario stoppen (wees voorzichtig met recursieve functies).<\/p>\n<h3>Stap 3. Scenario's debuggen<\/h3>\n<p>\nVoor het debuggen van een al geladen script op het apparaat, kan de programma-uitvoering stap voor stap worden getraceerd. Dit is bijzonder nuttig wanneer het gedrag van het script afwijkt van de bedoeling van de auteur. In dat geval stelt de traceerfunctie de auteur in staat om snel de bron van het probleem te vinden en de fout in het script te corrigeren.<\/p>\n<p>Script voor het berekenen van de faculteit in debugmodus:<br \/>\n<img decoding=\"async\" alt=\"Visueel programmeren voor Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/ea6e23729fd530b79b89c9481e78bd64.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe debugtool is heel eenvoudig en bestaat uit drie basisknoppen: \u00abstart\u00bb, \u00ab\u00e9\u00e9n stap vooruit\u00bb en \u00abstop\u00bb (vergeet ook de \u00abin\u00bb en \u00abuit\u00bb van de debugmodus niet). Naast stap-voor-stap tracing kun je op elk blok een breakpoint instellen (door met de muis op het blok te klikken).<br \/>\nOm de huidige waarden van de parameters (sensoren, relais) op het beeldscherm weer te geven, gebruik je de blok \u00abprint\u00bb.<br \/>\nHier <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/2mK6gvqe_18\">overzichtvideo<\/a><\/noindex> over het gebruik van de debugger.<\/p>\n<h2>Sectie voor nieuwsgierigen. Wat zit er onder de motorkap?<\/h2>\n<p>\nOm ervoor te zorgen dat de scripts op het doelapparaat werken, is er een bytecode-interpreter en assembler ontwikkeld met 38 instructies. In de broncode van blockly is een gespecialiseerde codegenerator ingebouwd die visuele blokken omzet in assemblerinstructies. Later wordt dit assemblerprogramma omgezet in bytecode en naar het apparaat gestuurd voor uitvoering.<br \/>\nDe architectuur van deze virtuele machine is redelijk eenvoudig en het heeft niet veel zin om het te beschrijven; je vindt veel artikelen op internet over het ontwerpen van de eenvoudigste virtuele machines.<br \/>\nVoor de stack van mijn virtuele machine reserveer ik meestal 1000 bytes, dit is ruimschoots voldoende. Natuurlijk kunnen diepe recursies elke stack uitputten, maar ze zullen zelden praktische toepassingen vinden.<\/p>\n<p>De uiteindelijke bytecode is behoorlijk compact. Ter illustratie, de bytecode voor het berekenen van dezelfde faculteit is slechts 49 bytes. Dit is de visuele voorstelling ervan:<br \/>\n<img decoding=\"async\" alt=\"Visueel programmeren voor Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/1c6a8b693cbf2131f1f1369d97ad034b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn dit is zijn assemblerprogramma:<\/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>Als de assemblerrepresentatie geen praktische waarde heeft, dan biedt het tabblad \u00abjavascrit\u00bb daarentegen een meer vertrouwde weergave dan de visuele blokken:<\/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>Wat betreft de prestaties. Bij het uitvoeren van het eenvoudigste knipperprogramma kreeg ik een meander van 47 kHz op het oscilloscoopscherm (met een kloksnelheid van de processor van 80 MHz).<br \/>\n<img decoding=\"async\" alt=\"Visueel programmeren voor Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/961a50c7ef269265443e078a1a81291a.jpg\" style=\"display:block;margin: 0 auto;\" \/><img decoding=\"async\" alt=\"Visueel programmeren voor Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/a416044b4cea01121e04e27ae7d1fef2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nIk beschouw dit als een behoorlijk resultaat, tenminste, deze snelheid is bijna tien keer sneller dan die van <noindex><a rel=\"nofollow\" href=\"http:\/\/esp8266freq.blogspot.com\/2016\/12\/esp-speed-compare-in-lua-micropython.html\">Lua<\/a><\/noindex> en <noindex><a rel=\"nofollow\" href=\"https:\/\/www.espruino.com\/Performance\">Espruino<\/a><\/noindex>.<\/p>\n<h2>Slotgedeelte<\/h2>\n<p>\nSamenvattend kan ik zeggen dat het gebruik van scripts ons niet alleen in staat stelt om de logica van een afzonderlijk apparaat te programmeren, maar ook de mogelijkheid biedt om verschillende apparaten te verbinden tot een enkel mechanisme, waarbij sommige apparaten invloed hebben op het gedrag van andere. <br \/>\nIk wil ook opmerken dat de gekozen manier van het opslaan van scripts (rechtstreeks in de apparaten zelf, niet op de server) het eenvoudiger maakt om al werkende apparaten naar een andere server te schakelen, bijvoorbeeld naar een thuis Raspberry, hier. <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\/en\/docs\/#!raspberry.md\">handleiding<\/a><\/noindex>.<\/p>\n<p><i>Dat is alles, ik sta open voor suggesties en constructieve kritiek.<\/i><br \/>\n<br \/>Bron: <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.3 - 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\/nl\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\/nl\/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\udd47 Visueel programmeren voor Sonoff Basic | ProHoster","description":"Artikel over hoe uit een goedkoop Chinees apparaat.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/33046","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=33046"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/33046\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/24803"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=33046"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=33046"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=33046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}