{"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\/it\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic","title":{"rendered":"Programmazione visiva per Sonoff Basic","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Programmazione visiva per Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/0682cb274648d8a8d16b17bced0116d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nArticolo su come trasformare un dispositivo cinese economico in un controllore logico programmabile. Tale dispositivo trover\u00e0 applicazione sia nell'automazione domestica che come attivit\u00e0 pratiche per l'informatica scolastica.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<em>Per riferimento, di default il programma Sonoff Basic funziona con un'app mobile tramite un servizio cloud cinese; dopo la modifica proposta, tutte le ulteriori interazioni con questo dispositivo saranno possibili tramite browser.<\/em> <\/p>\n<h2>Sezione I. Collegamento di Sonoff al servizio MGT24<\/h2>\n<p><\/p>\n<h3>Passo 1. Creazione del pannello di controllo<\/h3>\n<p>\nRegistrati sul sito <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\">mgt24<\/a><\/noindex> (se non sei ancora registrato) e accedi con il tuo account.<br \/>\n<b class=\"spoiler_title\">Accesso al sistema<\/b><img decoding=\"async\" alt=\"Programmazione visiva per Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/e9b310a7cb7d2da90ac8161407944a8c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPer creare un pannello di controllo per un nuovo dispositivo, fai clic sul pulsante &#171;+&#187;.<br \/>\n<b class=\"spoiler_title\">Esempio di creazione del pannello<\/b><img decoding=\"async\" alt=\"Programmazione visiva per Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/dc10d7009ea65c72714c2ccd2314ed0b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUna volta creato, il pannello apparir\u00e0 nell'elenco dei tuoi pannelli.<\/p>\n<p>Nella scheda \u00abInstallazione\u00bb del pannello creato, trova i campi \u00abID dispositivo\u00bb e \u00abChiave di autorizzazione\u00bb; queste informazioni saranno necessarie per configurare il dispositivo Sonoff.<br \/>\n<b class=\"spoiler_title\">Esempio di scheda<\/b><img decoding=\"async\" alt=\"Programmazione visiva per Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/f6cc6f1f469c6278c38c4c63288d9ba2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Passo 2. Flashing del dispositivo<\/h3>\n<p>\nUtilizza l'utility <noindex><a rel=\"nofollow\" href=\"https:\/\/esp8266.ru\/download\/esp8266-utils\/XTCOM_UTIL.zip\">XTCOM_UTIL<\/a><\/noindex> per caricare il firmware <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\/en\/docs\/firmware\/plc_basic.bin\">PLC Sonoff Basic<\/a><\/noindex> sul dispositivo; per farlo avrai bisogno di un convertitore USB-TTL. Qui <noindex><a rel=\"nofollow\" href=\"https:\/\/esp8266.ru\/esp8266-obnovlenie-proshivki-xtcom_util\/\">istruzioni<\/a><\/noindex> e <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_\">videoistruzioni<\/a><\/noindex>.<\/p>\n<h3>Passo 3. Configurazione del dispositivo<\/h3>\n<p>\nCollega il dispositivo all'alimentazione; una volta accesa la luce LED, premi e tieni premuto il pulsante finch\u00e9 il LED non inizia a lampeggiare uniformemente e periodicamente.<br \/>\nA questo punto apparir\u00e0 una nuova rete wi-fi chiamata \u00abPLC Sonoff Basic\u00bb, collegati a questa rete con il tuo computer.<br \/>\n<b class=\"spoiler_title\">Decodifica dell'indicazione LED<\/b><\/p>\n<p>Indicazione LED<br \/>\nStato del dispositivo<\/p>\n<p>lampeggiamento doppio periodico<br \/>\nnessuna connessione al router<\/p>\n<p>luminosit\u00e0 continua<br \/>\nconnessione al router stabilita<\/p>\n<p>lampeggiamento uniforme e periodico<br \/>\nmodalit\u00e0 punto di accesso wi-fi<\/p>\n<p>spento<br \/>\nsenza alimentazione<\/p>\n<p>Apri il browser internet e inserisci nella barra degli indirizzi il testo \u00ab192.168.4.1\u00bb; vai alla pagina delle impostazioni dei parametri di rete del dispositivo.<\/p>\n<p>Compila i campi come segue:<\/p>\n<ul>\n<li>\u00abNome rete\u00bb e \u00abPassword\u00bb (per collegare il dispositivo al router wi-fi domestico).<\/li>\n<li>\u00abID dispositivo\u00bb e \u00abChiave di autorizzazione\u00bb (per l'autenticazione del dispositivo presso il servizio MGT24).<\/li>\n<\/ul>\n<p>\n<b class=\"spoiler_title\">Esempio di impostazione dei parametri di rete del dispositivo<\/b><img decoding=\"async\" alt=\"Programmazione visiva per Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/47d02b3883ce3896157da4dcc4fe7f40.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSalva le impostazioni e riavvia il dispositivo.<br \/>\nQui <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/XTzGJI7y7t8?t=376\">videoistruzioni<\/a><\/noindex>.<\/p>\n<h3>Passo 4. Collegamento dei sensori (opzionale)<\/h3>\n<p>\nIl firmware attuale supporta fino a quattro sensori di temperatura ds18b20. Qui <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\">videoistruzioni<\/a><\/noindex> sull'installazione dei sensori. A quanto pare, questo passaggio sar\u00e0 il pi\u00f9 difficile, poich\u00e9 richieder\u00e0 dalle tue mani abilit\u00e0 dirette e un saldatore.<\/p>\n<h2>Sezione II. Programmazione visiva<\/h2>\n<p><\/p>\n<h3>Passo 1. Creazione degli script<\/h3>\n<p>\nCome ambiente di programmazione viene utilizzato <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.google.com\/blockly\/\">Blockly<\/a><\/noindex>, l'ambiente \u00e8 semplice da usare, quindi non \u00e8 necessario essere un programmatore per creare semplici script.<\/p>\n<p>Ho aggiunto blocchi specializzati per scrivere e leggere i parametri del dispositivo. L'accesso a qualsiasi parametro avviene per nome. Per i parametri dei dispositivi remoti si utilizzano nomi composti: \u00abparametro@dispositivo\u00bb.<br \/>\n<b class=\"spoiler_title\">Elenco a discesa dei parametri<\/b><img decoding=\"async\" alt=\"Programmazione visiva per Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/6ba0f789a4d3e0a394f4773d2c401416.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Esempio di script per l'accensione e lo spegnimento ciclico di un carico (1Hz):<br \/>\n<img decoding=\"async\" alt=\"Programmazione visiva per Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/66876fcb1d029b1a06098a8f2118bba7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEsempio di script che sincronizza il funzionamento di due dispositivi separati. In particolare, il rel\u00e8 del dispositivo target replica il funzionamento del rel\u00e8 del dispositivo remoto.<br \/>\n<img decoding=\"async\" alt=\"Programmazione visiva per Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/a44e81ce1301c7908ac9fa7437785162.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nScript per il termostato (senza isteresi):<br \/>\n<img decoding=\"async\" alt=\"Programmazione visiva per Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/0efa8a8f5e67f5ffd0812af5a2cececa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPer creare script pi\u00f9 complessi, \u00e8 possibile utilizzare variabili, cicli, funzioni (con argomenti) e altre costrutti. Non elencher\u00f2 tutto in dettaglio qui, poich\u00e9 ci sono gi\u00e0 molte <noindex><a rel=\"nofollow\" href=\"http:\/\/blockly.ru\/\">risorse di formazione su Blockly<\/a><\/noindex>.<\/p>\n<h3>Passo 2. Ordine di esecuzione degli script<\/h3>\n<p>\nLo script opera in modalit\u00e0 continua e, una volta raggiunta la fine, si riavvia. Ci sono due blocchi che possono temporaneamente sospendere l'esecuzione dello script, \u00abdelay\u00bb e \u00abpause\u00bb.<br \/>\nIl blocco \u00abdelay\u00bb viene utilizzato per ritardi in millisecondi o microsecondi. Questo blocco mantiene rigorosamente l'intervallo di tempo bloccando l'operazione dell'intero dispositivo. <br \/>\nIl blocco \u00abpause\u00bb viene utilizzato per ritardi in secondi (o meno) e non blocca l'esecuzione di altri processi nel dispositivo.<br \/>\nSe lo script contiene al suo interno un ciclo infinito senza un \u00abpause\u00bb, l'interprete inizia autonomamente una piccola pausa.<br \/>\nIn caso di esaurimento dello stack di memoria allocato, l'interprete fermer\u00e0 l'esecuzione di uno script cos\u00ec vorace (fai attenzione alle funzioni ricorsive).<\/p>\n<h3>Passo 3. Debugging degli script<\/h3>\n<p>\nPer il debug di uno script gi\u00e0 caricato nel dispositivo, \u00e8 possibile eseguire il tracciamento del programma passo dopo passo. Questo \u00e8 estremamente utile quando il comportamento dello script risulta diverso da quello previsto dall'autore. In questo caso, il tracciamento permette all'autore di trovare rapidamente la fonte del problema e correggere l'errore nello script.<\/p>\n<p>Script di calcolo del fattoriale in modalit\u00e0 debug:<br \/>\n<img decoding=\"async\" alt=\"Programmazione visiva per Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/ea6e23729fd530b79b89c9481e78bd64.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLo strumento di debug \u00e8 molto semplice e consiste in tre principali pulsanti: \u00abavvio\u00bb, \u00abpasso avanti\u00bb e \u00abferma\u00bb (senza dimenticare \u00abingresso\u00bb e \u00abuscita\u00bb dalla modalit\u00e0 di debug). Oltre al tracciamento passo-passo, \u00e8 possibile impostare un punto di interruzione su qualsiasi blocco (cliccando con il mouse sul blocco).<br \/>\nPer visualizzare sul monitor i valori correnti dei parametri (sensori, rel\u00e8) utilizzare il blocco \u00abprint\u00bb.<br \/>\nQui <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/2mK6gvqe_18\">video di panoramica<\/a><\/noindex> sull'uso del debugger.<\/p>\n<h2>Sezione per i curiosi. Ma cosa c'\u00e8 sotto il cofano?<\/h2>\n<p>\nPer far funzionare gli script sul dispositivo di destinazione \u00e8 stato sviluppato un interprete di bytecode e un assembler con 38 istruzioni. Nel codice sorgente di blockly \u00e8 stato integrato un generatore di codice specializzato, che converte i blocchi visuali in istruzioni assembler. Successivamente, questo programma assembler viene trasformato in bytecode e inviato al dispositivo per l'esecuzione.<br \/>\nL'architettura di questa macchina virtuale \u00e8 piuttosto semplice e non ha molto senso descriverla, in rete troverete molti articoli sul progetto delle macchine virtuali pi\u00f9 semplici.<br \/>\nPer lo stack della mia macchina virtuale di solito riservo 1000 byte, che sono pi\u00f9 che sufficienti. Certamente, chiamate ricorsive profonde possono esaurire qualsiasi stack, ma \u00e8 poco probabile che trovino un'applicazione pratica.<\/p>\n<p>Il bytecode finale risulta piuttosto compatto. Come esempio, il bytecode per il calcolo dello stesso fattoriale \u00e8 di soli 49 byte. Questa \u00e8 la sua forma di rappresentazione visiva:<br \/>\n<img decoding=\"async\" alt=\"Programmazione visiva per Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/1c6a8b693cbf2131f1f1369d97ad034b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nE questa \u00e8 la sua programma assembler:<\/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>Se la forma di rappresentazione assembler non ha alcun valore pratico, la scheda \u00abjavascript\u00bb, al contrario, offre un aspetto pi\u00f9 familiare rispetto ai blocchi visuali:<\/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>Per quanto riguarda le prestazioni. Eseguendo il pi\u00f9 semplice degli scenari lampeggianti, sullo schermo dell'oscilloscopio ho ottenuto un meandro di 47kHz (con una frequenza di clock del processore di 80MHz).<br \/>\n<img decoding=\"async\" alt=\"Programmazione visiva per Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/961a50c7ef269265443e078a1a81291a.jpg\" style=\"display:block;margin: 0 auto;\" \/><img decoding=\"async\" alt=\"Programmazione visiva per Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/a416044b4cea01121e04e27ae7d1fef2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nRitengo che sia un buon risultato, almeno questa velocit\u00e0 \u00e8 quasi dieci volte pi\u00f9 veloce di <noindex><a rel=\"nofollow\" href=\"http:\/\/esp8266freq.blogspot.com\/2016\/12\/esp-speed-compare-in-lua-micropython.html\">Lua<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/www.espruino.com\/Performance\">Espruino<\/a><\/noindex>.<\/p>\n<h2>Parte conclusiva<\/h2>\n<p>\nIn sintesi, posso dire che l'uso di scenari ci consente non solo di programmare la logica di funzionamento di un singolo dispositivo, ma offre anche la possibilit\u00e0 di collegare pi\u00f9 dispositivi in un unico meccanismo, dove alcuni dispositivi influenzano il comportamento di altri. <br \/>\nInoltre, segnalo che il metodo scelto per memorizzare gli scenari (direttamente nei dispositivi stessi, e non su un server), semplifica il passaggio di dispositivi gi\u00e0 funzionanti a un altro server, ad esempio a un Raspberry domestico, qui <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\/en\/docs\/#!raspberry.md\">istruzioni<\/a><\/noindex>.<\/p>\n<p><i>Questo \u00e8 tutto, sarei felice di ricevere consigli e critiche costruttive.<\/i><br \/>\n<br \/>Fonte: <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.1.1 - 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\/it\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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\udd47Programmazione visiva per Sonoff Basic | ProHoster","description":"Articolo su come da un dispositivo cinese economico.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/33046","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=33046"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/33046\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/24803"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=33046"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=33046"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=33046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}