Programació visual per a Sonoff Basic

Programació visual per a Sonoff Basic
Un article sobre com crear un controlador lògic programable des d'un dispositiu xinès barat. Aquest dispositiu trobarà el seu ús tant en domòtica com com a classes pràctiques en informàtica escolar.
Com a referència, el programa Sonoff Basic funciona per defecte amb una aplicació mòbil a través d'un servei al núvol xinès; després de la modificació proposada, tota interacció posterior amb aquest dispositiu serà possible al navegador.

Secció I. Connexió de Sonoff al servei MGT24

Pas 1: creeu un tauler de control

Registra't al lloc mgt24 (si encara no està registrat) i inicieu sessió amb el vostre compte.
Inicieu la sessió al sistemaProgramació visual per a Sonoff Basic

Per crear un tauler de control per a un dispositiu nou, feu clic al botó "+".
Exemple de creació d'un panellProgramació visual per a Sonoff Basic

Un cop creat el tauler, apareixerà a la vostra llista de taulers.

A la pestanya "Configuració" del tauler creat, cerqueu els camps "Identificador del dispositiu" i "Clau d'autorització"; en el futur, aquesta informació serà necessària quan configureu el dispositiu Sonoff.
Exemple de pestanyaProgramació visual per a Sonoff Basic

Pas 2. Torneu a engegar el dispositiu

Utilitzant la utilitat XTCOM_UTIL descarregar el firmware PLC Sonoff Basic al dispositiu, per a això necessitareu un convertidor USB-TTL. Aquí instrucció и Instrucció de vídeo.

Pas 3. Configuració del dispositiu

Engegueu el dispositiu, després que el LED s'encén, premeu el botó i manteniu-lo premut fins que el LED comenci a parpellejar periòdicament de manera uniforme.
En aquest moment, apareixerà una nova xarxa wi-fi anomenada “PLC Sonoff Basic”, connecteu el vostre ordinador a aquesta xarxa.
Explicació de la indicació LED

Indicació del LED
Estat del dispositiu

doble parpelleig periòdic
sense connexió amb l'encaminador

brilla contínuament
connexió establerta amb l'encaminador

parpelleig uniforme periòdic
mode de punt d'accés wi-fi

extingit
Sense font d'alimentació

Obriu un navegador d'Internet i introduïu el text "192.168.4.1" a la barra d'adreces, aneu a la pàgina de configuració de la xarxa del dispositiu.

Ompliu els camps de la següent manera:

  • "Nom de la xarxa" i "Contrasenya" (per enllaçar el dispositiu amb l'encaminador Wi-Fi de casa).
  • “Identificador del dispositiu” i “Clau d'autorització” (per autoritzar el dispositiu al servei MGT24).

Exemple de configuració dels paràmetres de xarxa del dispositiuProgramació visual per a Sonoff Basic

Deseu la configuració i reinicieu el dispositiu.
Aquí Instrucció de vídeo.

Pas 4. Connectar sensors (opcional)

El firmware actual admet fins a quatre sensors de temperatura ds18b20. Aquí Instrucció de vídeo per a la instal·lació de sensors. Pel que sembla, aquest pas serà el més difícil, ja que requerirà braços rectes i un soldador.

Secció II. Programació visual

Pas 1: creeu scripts

S'utilitza com a entorn de programació De forma bloquejada, l'entorn és fàcil d'aprendre, de manera que no cal ser programador per crear scripts senzills.

He afegit blocs especialitzats per escriure i llegir paràmetres del dispositiu. S'accedeix a qualsevol paràmetre pel nom. Per als paràmetres de dispositius remots, s'utilitzen noms compostos: "paràmetre@dispositiu".
Llista desplegable d'opcionsProgramació visual per a Sonoff Basic

Exemple d'escenari per a l'encesa i apagada cíclica de la càrrega (1 Hz):
Programació visual per a Sonoff Basic

Un exemple d'un script que sincronitza el funcionament de dos dispositius separats. És a dir, el relé del dispositiu objectiu repeteix el funcionament del relé del dispositiu remot.
Programació visual per a Sonoff Basic

Escenari per al termòstat (sense histèresi):
Programació visual per a Sonoff Basic

Per crear scripts més complexos, podeu utilitzar variables, bucles, funcions (amb arguments) i altres construccions. No descriuré tot això amb detall aquí; ja n'hi ha força a la xarxa. material educatiu sobre Blockly.

Pas 2: Ordre dels scripts

L'script s'executa contínuament i, tan bon punt arriba al seu final, torna a començar. En aquest cas, hi ha dos blocs que poden aturar temporalment l'script, "retard" i "pausa".
El bloc "retard" s'utilitza per a retards de mil·lisegons o microsegons. Aquest bloc manté estrictament l'interval de temps, bloquejant el funcionament de tot el dispositiu.
El bloc "pausa" s'utilitza per a segones (o menys) retards i no bloqueja l'execució d'altres processos al dispositiu.
Si el propi script conté un bucle infinit, el cos del qual no conté "pausa", l'intèrpret inicia de manera independent una breu pausa.
Si la pila de memòria assignada s'esgota, l'intèrpret deixarà d'executar un script tan famós d'energia (compte amb les funcions recursives).

Pas 3: depuració de scripts

Per depurar un script que ja s'ha carregat al dispositiu, podeu executar un seguiment del programa pas a pas. Això pot ser extremadament útil quan el comportament del guió resulta ser diferent del que pretenia l'autor. En aquest cas, el rastreig permet a l'autor trobar ràpidament l'origen del problema i corregir l'error de l'script.

Escenari per calcular el factorial en mode de depuració:
Programació visual per a Sonoff Basic

L'eina de depuració és molt senzilla i consta de tres botons principals: "iniciar", "un pas endavant" i "aturar" (tampoc no ens oblidem del mode de depuració "entrar" i "sortir"). A més del seguiment pas a pas, podeu establir un punt d'interrupció en qualsevol bloc (fent clic al bloc).
Per mostrar els valors actuals dels paràmetres (sensors, relés) al monitor, utilitzeu el bloc "impressió".
Aquí vídeo de visió general sobre l'ús del depurador.

Secció per a curiosos. Què hi ha sota el capó?

Per tal que els scripts funcionin al dispositiu de destinació, es va desenvolupar un intèrpret de bytecode i un assemblador amb 38 instruccions. El codi font de Blockly té un generador de codi especialitzat integrat que converteix els blocs visuals en instruccions de muntatge. Posteriorment, aquest programa assemblador es converteix en bytecode i es transfereix al dispositiu per a l'execució.
L'arquitectura d'aquesta màquina virtual és força senzilla i no té cap sentit particular descriure-la; a Internet trobareu molts articles sobre el disseny de les màquines virtuals més senzilles.
Normalment assigno 1000 bytes per a la pila de la meva màquina virtual, que n'hi ha prou. Per descomptat, les recursències profundes poden esgotar qualsevol pila, però és poc probable que tinguin cap ús pràctic.

El bytecode resultant és força compacte. Com a exemple, el codi de bytes per calcular el mateix factorial és de només 49 bytes. Aquesta és la seva forma visual:
Programació visual per a Sonoff Basic

I aquest és el seu programa assemblador:

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

Si la forma de representació del muntatge no té cap valor pràctic, la pestanya "javascrit", per contra, dóna un aspecte més familiar que els blocs visuals:

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

window.alert(factorial(10));

Pel que fa al rendiment. Quan vaig executar l'script intermitent més senzill, vaig obtenir una ona quadrada de 47 kHz a la pantalla de l'oscil·loscopi (a una velocitat de rellotge del processador de 80 MHz).
Programació visual per a Sonoff BasicProgramació visual per a Sonoff Basic
Crec que aquest és un bon resultat, almenys aquesta velocitat és gairebé deu vegades més ràpida que lua и Espruino.

La part final

En resum, diré que l'ús d'scripts ens permet no només programar la lògica de funcionament d'un dispositiu separat, sinó que també permet connectar diversos dispositius en un únic mecanisme, on alguns dispositius influeixen en el comportament dels altres.
També observo que el mètode escollit per emmagatzemar scripts (directament als propis dispositius i no al servidor) simplifica el canvi de dispositius que ja funcionen a un altre servidor, per exemple, a un Raspberry domèstic, aquí instrucció.

Això és tot, estaré encantat d'escoltar consells i crítiques constructives.

Font: www.habr.com

Afegeix comentari