Programmazione visiva per Sonoff Basic.

Programmazione visiva per Sonoff Basic.
Articolo su come trasformare un dispositivo cinese economico in un controllore logico programmabile. Questo dispositivo troverà applicazione sia nell'automazione domestica che come attività pratiche per l'informatica scolastica.
Per riferimento, per impostazione predefinita il programma Sonoff Basic funziona con un'app mobile tramite il servizio cloud cinese; dopo la modifica proposta, tutte le interazioni con questo dispositivo saranno possibili nel browser.

Sezione I. Collegamento del Sonoff al servizio MGT24

Passaggio 1. Creazione del pannello di controllo

Registrati sul sito mgt24 (se non sei ancora registrato) e accedi con il tuo account.
Accesso al sistemaProgrammazione visiva per Sonoff Basic.

Per creare un pannello di controllo per il nuovo dispositivo, fai clic sul pulsante "+".
Esempio di creazione del pannelloProgrammazione visiva per Sonoff Basic.

Dopo che il pannello è stato creato, apparirà nell'elenco dei tuoi pannelli.

Nella scheda "Installazione" del pannello creato, trova i campi "ID dispositivo" e "Chiave di autorizzazione"; queste informazioni saranno necessarie durante la configurazione del dispositivo Sonoff.
Esempio di schedaProgrammazione visiva per Sonoff Basic.

Passaggio 2. Flashing del dispositivo

Utilizzando l'utility XTCOM_UTIL carica il firmware PLC Sonoff Basic per il dispositivo, avrete bisogno di un convertitore USB-TTL. Qui una guida e istruzioni video.

Passo 3. Configurazione del dispositivo

Collegate l'alimentazione al dispositivo, dopo che il LED si accende, premete il pulsante e tenetelo premuto fino a quando il LED inizia a lampeggiare in modo uniforme.
A questo punto apparirà una nuova rete wi-fi chiamata «PLC Sonoff Basic», collegate il vostro computer a questa rete.
Decodifica dell'indicazione a LED

Indicazione a LED
Stato del dispositivo

lampeggio doppio periodico
nessuna connessione al router

illuminazione continua
connessione stabilita con il router

lampeggio uniforme periodico
modalità access point wi-fi

spento
senza alimentazione

Aprite il browser internet e inserite nella barra degli indirizzi il testo «192.168.4.1», quindi andate alla pagina delle impostazioni della rete del dispositivo.

Compilate i campi come segue:

  • «Nome della rete» e «Password» (per collegare il dispositivo al router wi-fi domestico).
  • «ID dispositivo» e «Chiave di autorizzazione» (per autorizzare il dispositivo al servizio MGT24).

Esempio di configurazione delle impostazioni della rete del dispositivoProgrammazione visiva per Sonoff Basic.

Salvate le impostazioni e riavviate il dispositivo.
Qui istruzioni video.

Passo 4. Collegamento dei sensori (opzionale)

Il firmware attuale supporta fino a quattro sensori di temperatura ds18b20. Qui istruzioni video per il montaggio dei sensori. Questo passaggio sarà probabilmente il più complesso, poiché richiederà abilità manuali e un saldatore.

Sezione II. Programmazione visiva

Passo 1. Creazione degli scenari

Come ambiente di programmazione viene utilizzato Blockly, un ambiente semplice da apprendere, quindi non è necessario essere programmatori per creare scenari semplici.

Ho aggiunto blocchi specializzati per la registrazione e la lettura dei parametri del dispositivo. L'accesso a qualsiasi parametro avviene tramite nome. Per i parametri dei dispositivi remoti si usano nomi composti: «parametro@dispositivo».
Menu a discesa dei parametriProgrammazione visiva per Sonoff Basic.

Esempio di scenario di accensione e spegnimento ciclico del carico (1Hz):
Programmazione visiva per Sonoff Basic.

Esempio di scenario che sincronizza il funzionamento di due dispositivi separati. In particolare, il relais del dispositivo target replica l'operatività del relais del dispositivo remoto.
Programmazione visiva per Sonoff Basic.

Scenario per un termostato (senza isteresi):
Programmazione visiva per Sonoff Basic.

Per creare scenari più complessi, puoi utilizzare variabili, cicli, funzioni (con argomenti) e altre strutture. Non mi dilungherò qui nei dettagli, poiché ci sono già molte informazioni di materiale didattico su Blockly.

Passo 2. Ordine di esecuzione degli scenari

Lo scenario opera in modalità continua e, non appena raggiunge la fine, viene riavviato. Ci sono due blocchi che possono temporaneamente sospendere l'esecuzione dello scenario: 'delay' e 'pause'.
Il blocco 'delay' è utilizzato per ritardi di millisecondi o microsecondi. Questo blocco mantiene rigorosamente l'intervallo di tempo, bloccando l'esecuzione dell'intero dispositivo.
Il blocco 'pause' è usato per ritardi in secondi (anche meno) e non blocca l'esecuzione di altri processi nel dispositivo.
Se lo scenario contiene un ciclo infinito che non include un 'pause', l'interprete attiverà autonomamente una piccola pausa.
In caso di esaurimento dello stack di memoria allocato, l'interprete fermerà l'esecuzione di uno scenario ingordo (fai attenzione con le funzioni ricorsive).

Passo 3. Debugging degli scenari

Per eseguire il debug di uno script già caricato nel dispositivo, è possibile avviare il tracciamento step-by-step del programma. Questo è estremamente utile quando il comportamento dello script non corrisponde a quanto previsto dall'autore. In questo caso, il tracciamento consente all'autore di individuare rapidamente la fonte del problema e correggere l'errore nello script.

Script per il calcolo del fattoriale in modalità di debug:
Programmazione visiva per Sonoff Basic.

Lo strumento di debug è molto semplice e consiste in tre pulsanti principali: «avvia», «passo avanti» e «ferma» (non dimentichiamo anche «ingresso» e «uscita» dalla modalità di debug). Oltre al tracciamento passo-passo, è possibile impostare un punto di interruzione su qualsiasi blocco (cliccando sul blocco con il mouse).
Per visualizzare sul monitor i valori correnti dei parametri (sensori, relè), utilizzare il blocco «print».
Qui video introduttivo sull'uso del debugger.

Sezione per i curiosi. Ma cosa c'è sotto il cofano?

Per far funzionare gli script sul dispositivo di destinazione, è stato sviluppato un interprete di bytecode e un assemblatore con 38 istruzioni. Nel codice sorgente di blockly è stato integrato un generatore di codice specializzato che converte i blocchi visivi in istruzioni di assemblatore. Successivamente, questo programma assemblatore viene trasformato in bytecode e inviato al dispositivo per l'esecuzione.
L'architettura di questa macchina virtuale è piuttosto semplice e non ha molto senso descriverla; online puoi trovare numerosi articoli sulla progettazione delle macchine virtuali più semplici.
Di solito riservo 1000 byte per lo stack della mia macchina virtuale, che è più che sufficiente. Certo, ricorsioni profonde possono esaurire qualsiasi stack, ma è improbabile che trovino un'applicazione pratica.

Il bytecode finale risulta piuttosto compatto. Ad esempio, il bytecode per calcolare lo stesso fattoriale è di soli 49 byte. Questa è la sua forma visiva di rappresentazione:
Programmazione visiva per Sonoff Basic.

Ecco il suo programma assemblatore:

shift -1
ldi 10
call factorial, 1
print
exit
:factorial
ld_arg 0
ldi 1
gt
je 8
ld_arg 0
ld_arg 0
ldi 1
sub
call factorial, 1
mul
ret
ldi 1
ret

Se la forma di presentazione in assembler non ha alcun valore pratico, la scheda «javascrit», al contrario, offre un aspetto più familiare rispetto ai blocchi visivi:

function factorial(num) {
  if (num > 1) {
    return num + factorial(num - 1);
  }
  return 1;
}

window.alert(factorial(10));

Per quanto riguarda le prestazioni. Eseguendo il più semplice degli script lampeggianti, sullo schermo dell'oscilloscopio ho ottenuto un m2 a 47kHz (con frequenza di clock della CPU di 80MHz).
Programmazione visiva per Sonoff Basic.Programmazione visiva per Sonoff Basic.
Ritengo che questo sia un buon risultato, almeno questa velocità è quasi dieci volte più veloce di Lua e Espruino.

Parte finale

In conclusione, posso dire che l'uso degli script non solo ci consente di programmare la logica di funzionamento di un singolo dispositivo, ma offre anche l'opportunità di collegare più dispositivi in un unico meccanismo, dove alcuni dispositivi influenzano il comportamento degli altri.
Nota anche che il metodo scelto per memorizzare gli script (direttamente nei dispositivi stessi, e non su un server) semplifica il passaggio di dispositivi già funzionanti a un altro server, ad esempio a un Raspberry domestico, qui una guida.

Con questo è tutto, sarò felice di ricevere suggerimenti e critiche costruttive.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster