Programmazione visuale per Sonoff Basic

Programmazione visuale per Sonoff Basic
Un articulu nantu à cumu creà un controller logicu programmable da un dispositivu cinese economicu. Un tali dispusitivu truverà u so usu in l'automatizazione di a casa è cum'è classi pratiche in l'informatica scolastica.
Per riferimentu, per difettu, u prugramma Sonoff Basic funziona cù una applicazione mobile attraversu un serviziu di nuvola cinese; dopu a mudificazione pruposta, tutte l'interazzione ulteriore cù stu dispusitivu serà pussibule in u navigatore.

Sezzione I. Cunnette Sonoff à u serviziu MGT24

Passu 1: Crea un panel di cuntrollu

Registrate nantu à u situ mgt24 (se micca digià registratu) è accede cù u vostru contu.
LoginProgrammazione visuale per Sonoff Basic

Per creà un pannellu di cuntrollu per un novu dispositivu, cliccate nantu à u buttone "+".
Esempiu di creazione di un pannelluProgrammazione visuale per Sonoff Basic

Una volta u pannellu hè creatu, apparirà in a vostra lista di pannelli.

In a tabulazione "Setup" di u pannellu creatu, truvate i campi "Device ID" è "Authorization Key"; in u futuru, sta infurmazione serà necessaria quandu cunfigurà u dispositivu Sonoff.
Esempiu di tabulazioneProgrammazione visuale per Sonoff Basic

Step 2. Reflash u dispusitivu

Utilizà l'utilità XTCOM_UTIL scaricate u firmware PLC Sonoff Basic à u dispusitivu, per questu avete bisognu di un cunvertitore USB-TTL. Quì manuale и Istruzzioni video.

Passu 3. Setup dispusitivu

Applicà u putere à u dispusitivu, dopu chì u LED si accende, appughjà u buttone è manteneu premutu finu à chì u LED cumencia à lampassi periodicamente in modu uniforme.
À questu mumentu, una nova rete wi-fi chjamata "PLC Sonoff Basic" apparirà, cunnette u vostru urdinatore à sta reta.
Spiegazione di l'indicazione LED

Indicazione LED
Status di u dispusitivu

doppia lampeggiante periodica
senza cunnessione cù u router

brilla continuamente
cunnessione stabilita cù u router

lampeggi uniformi periodici
Modu puntu di accessu Wi-Fi

spenti
Nisuna alimentazione elettrica

Aprite un navigatore Internet è inserite u testu "192.168.4.1" in a barra di indirizzu, andate à a pagina di paràmetri di a reta di u dispusitivu.

Riempite i campi cum'è seguita:

  • "Nome di a rete" è "Password" (per ligà u dispusitivu à u vostru router wi-fi di casa).
  • "Device ID" è "Authorization key" (per autorizà u dispusitivu nantu à u serviziu MGT24).

Esempiu di paràmetri di rete di u dispositivuProgrammazione visuale per Sonoff Basic

Salvà i paràmetri è reboot u dispusitivu.
Istruzzioni video.

Passu 4. Cunnessu sensors (opcional)

U firmware attuale sustene finu à quattru sensori di temperatura ds18b20. Quì Istruzzioni video per l'installazione di sensori. Apparentemente, questu passu serà u più difficiuli, postu chì hà bisognu di braccia dritte è un ferru di saldatura.

Sezione II. prugrammazione visuale

Passu 1: Crea Scripts

Adupratu cum'è un ambiente di prugrammazione Blockly, L'ambiente hè faciule d'amparà, perchè ùn avete micca bisognu di esse un programatore per creà scripts simplici.

Aghju aghjustatu blocchi specializati per scrive è leghje i paràmetri di u dispositivu. Ogni paràmetru hè accessu per nome. Per i paràmetri di i dispositi remoti, i nomi composti sò usati: "parameter@device".
Lista a tendina di opzioniProgrammazione visuale per Sonoff Basic

Esempiu di scenariu per accensione è spegnimentu ciclicu di a carica (1 Hz):
Programmazione visuale per Sonoff Basic

Un esempiu di un script chì sincroniza l'operazione di dui dispositi separati. Vale à dì, u relé di u dispusitivu di destinazione ripetiri u funziunamentu di u relé di u dispusitivu luntani.
Programmazione visuale per Sonoff Basic

Scenariu per u termostatu (senza isteresi):
Programmazione visuale per Sonoff Basic

Per creà scripts più cumplessi, pudete aduprà variàbili, loops, funzioni (cù argumenti) è altri custruzzioni. Ùn descriveraghju micca tuttu questu in dettagliu quì; ci hè digià assai in a reta. materiale educativu nantu à Blockly.

Passu 2: Ordine di Scripts

U script corre continuamente, è appena ghjunghje à a so fine, principia di novu. In questu casu, ci sò dui blocchi chì ponu pause temporaneamente u script, "ritardu" è "pause".
U bloccu "ritardu" hè utilizatu per i ritardi di millisecondi o microsecondi. Stu bloccu mantene strettamente l'intervallu di tempu, bluccà u funziunamentu di tuttu u dispusitivu.
U bloccu "pausa" hè utilizatu per i secondi (o menu) ritardi, è ùn impedisce micca l'esekzione di altri prucessi in u dispusitivu.
Se u script stessu cuntene un ciclu infinitu, u corpu di quale ùn cuntene micca "pausa", l'interprete principia indipindente una pausa corta.
Se a pila di memoria attribuita hè esaurita, l'interprete cesserà di eseguisce un script cusì affamato di putere (attenzione à e funzioni recursive).

Passu 3: Debugging Scripts

Per debug un script chì hè digià stata caricata in u dispusitivu, pudete eseguisce una traccia di prugramma passu à passu. Questu pò esse estremamente utile quandu u cumpurtamentu di u script hè diventatu sfarente di ciò chì l'autore intendeva. In questu casu, a traccia permette à l'autore di truvà rapidamente a fonte di u prublema è corregge l'errore in u script.

Scenariu per u calculu factoriale in modu di debug:
Programmazione visuale per Sonoff Basic

U strumentu di debug hè assai simplice è hè custituitu di trè buttoni principali: "iniziu", "un passu avanti" è "stop" (ùn ci scurdemu ancu di "entra" è "esce" in u modu di debug. In più di u tracciamentu passu à passu, pudete stabilisce un puntu di ruptura in ogni blocu (cliccate nantu à u bloccu).
Per vede i valori attuali di i paràmetri (sensori, relè) in u monitor, utilizate u bloccu "stampa".
video panoramica circa l'usu di u debugger.

Sezione per i curiosi. Chì ci hè sottu à u cappucciu ?

Per chì i scripts funzionanu nantu à u dispusitivu di destinazione, sò stati sviluppati un interprete di bytecode è un assembler cù 38 instructions. U codice fonte di Blockly hà un generatore di codice specializatu integratu chì converte i blocchi visuali in struzzioni di assemblea. In seguitu, stu prugramma assembler hè cunvertitu in bytecode è trasferitu à u dispusitivu per l'esekzione.
L'architettura di sta macchina virtuale hè abbastanza sèmplice è ùn ci hè micca un puntu particulare in a discrizzione; in Internet truverete assai articuli nantu à u disignu di e macchine virtuali più simplici.
Di solitu attribuite 1000 bytes per a pila di a mo macchina virtuale, chì hè abbastanza per risparmià. Di sicuru, i recursioni prufonde ponu esaurisce ogni stack, ma sò improbabile di avè qualchì usu praticu.

U bytecode risultante hè abbastanza compactu. Per esempiu, u bytecode per calculà u listessu fattoriale hè solu 49 bytes. Questa hè a so forma visuale:
Programmazione visuale per Sonoff Basic

È questu hè u so prugramma assembler:

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 a forma di rapprisintazioni di l'assemblea ùn hà micca un valore praticu, allora a tabulazione "javascrit", à u cuntrariu, dà un aspettu più familiar chì i blocchi visuali:

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

window.alert(factorial(10));

In quantu à u rendiment. Quandu aghju eseguitu u script flasher più simplice, aghju avutu una onda quadra di 47 kHz nantu à a pantalla di l'oscilloscopiu (à una velocità di clock di processore di 80 MHz).
Programmazione visuale per Sonoff BasicProgrammazione visuale per Sonoff Basic
Pensu chì questu hè un bonu risultatu, almenu sta velocità hè quasi dece volte più veloce piglià и Espruinu.

Parte finale

Per riassume, diceraghju chì l'usu di scripts permette micca solu di programà a logica di u funziunamentu di un dispositivu separatu, ma ancu permette di cunnette parechji dispositi in un unicu mecanismu, induve certi dispositi influenzanu u cumpurtamentu di l'altri.
Aghju nutatu ancu chì u metudu sceltu per almacenà scripts (direttamente in i dispositi stessi, è micca in u servitore) simplificà u cambiamentu di i dispositi chì travaglianu à un altru servitore, per esempiu à una casa Raspberry, quì. manuale.

Hè tuttu, saraghju cuntentu di sente cunsiglii è critiche constructive.

Source: www.habr.com

Add a comment