Vizualno programiranje za Sonoff Basic

Vizualno programiranje za Sonoff Basic
Članek o tem, kako iz poceni kitajske naprave narediti programabilni logični krmilnik. Takšna naprava bo našla svojo uporabo tako v domači avtomatizaciji kot tudi pri praktičnih vajah na šolskem računalništvu.
Za informacijo, privzeto program Sonoff Basic deluje z mobilno aplikacijo prek kitajske oblačne storitve, po predlagani predelavi pa bo možno vse nadaljnje interakcije s to napravo opraviti v brskalniku.

Oddelek I. Povezovanje Sonoff z MGT24 storitvijo

Korak 1. Ustvarjanje nadzorne plošče

Registrirajte se na spletni strani mgt24 (če še niste registrirani) in se prijavite s svojim računom.
PrijavaVizualno programiranje za Sonoff Basic

Da ustvarite nadzorno ploščo za novo napravo, kliknite gumb „+“.
Primer ustvarjanja nadzorne ploščeVizualno programiranje za Sonoff Basic

Ko bo nadzorna plošča ustvarjena, se bo pojavila na seznamu vaših nadzornih plošč.

Na zaviheku „Namestitev“ ustvarjene nadzorne plošče poiščite polja „ID naprave“ in „Ključ avtorizacije“, ta informacija bo potrebna pri nastavitvi naprave Sonoff.
Primer zavihkaVizualno programiranje za Sonoff Basic

Korak 2. Predelava naprave

Z orodjem XTCOM_UTIL naložite programsko opremo PLC Sonoff Basic na napravo, za to boste potrebovali USB-TTL pretvornik. Tukaj navodilo in video navodilo.

Korak 3. Nastavitev naprave

Povežite napravo s napajanjem, ko se prižge LED, pritisnite gumb in ga držite pritisnjenega, dokler LED ne začne enakomerno bliskati.
V tem trenutku se bo pojavila nova wi-fi mreža z imenom „PLC Sonoff Basic“, povežite svoj računalnik s to mrežo.
Razlaga LED indikacije

LED indikacija
Stanje naprave

občasno dvojno bliskanje
ni povezave z usmerjevalnikom

stalno sveti
povezava z usmerjevalnikom je vzpostavljena

občasno enakomerno bliskanje
pristopna točka wi-fi

ugasnjena
ni napajanja

Odprite internetni brskalnik in v naslovno vrstico vpišite „192.168.4.1“, preklopite na stran nastavitev omrežnih parametrov naprave.

Izpolnite polja na naslednji način:

  • „Ime omrežja“ in „Geslo“ (za povezavo naprave z domačim wi-fi usmerjevalnikom).
  • „ID naprave“ in „Ključ avtorizacije“ (za avtorizacijo naprave na MGT24 storitvi).

Primer nastavitve omrežnih parametrov napraveVizualno programiranje za Sonoff Basic

Shrani nastavitve in znova zaženi napravo.
Tukaj video navodilo.

Korak 4. Povezivanje senzora (opcijski)

Trenutni firmver podržava do četiri temperaturna senzora ds18b20. Ovdje video navodilo su informacije o instalaciji senzora. Ovo će očigledno biti najizazovniji korak, jer će zahtijevati vaše vješte ruke i lemilicu.

Poglavlje II. Vizualno programiranje

Korak 1. Kreiranje skripti

Kao okruženje za programiranje koristi se Blockly, okruženje je jednostavno za učenje, tako da ne morate biti programer da biste kreirali jednostavne skripte.

Dodao sam specijalizirane blokove za zapisivanje i čitanje parametara uređaja. Pristup bilo kojem parametru se ostvaruje po imenu. Za parametre udaljenih uređaja koriste se sastavljena imena: „parametar@uređaj”.
Spisak parametaraVizualno programiranje za Sonoff Basic

Primjer skripte cikličnog uključivanja i isključivanja opterećenja (1Hz):
Vizualno programiranje za Sonoff Basic

Primjer skripte koja sinkronizira rad dva odvojena uređaja. Tačnije, relej ciljnog uređaja ponavlja rad releja udaljenog uređaja.
Vizualno programiranje za Sonoff Basic

Skripta za termostat (bez histereze):
Vizualno programiranje za Sonoff Basic

Za kreiranje složenijih skripti možete koristiti varijable, petlje, funkcije (sa argumentima) i druge konstrukcije. Neću ovdje detaljno objašnjavati, već postoji prilično mnogo materijala za učenje o Blockly.

Korak 2. Redoslijed izvršavanja skripti

Skripta radi u neprestanom režimu, a čim dođe do svog kraja, ponovno se pokreće. Pri tome postoje dva bloka koja mogu privremeno obustaviti rad skripte, „delay” i „pause”.
Blok „delay” se koristi za milisekundne ili mikrosekundne odgode. Ovaj blok strogo drži vremenski interval, blokirajući rad cijelog uređaja.
Blok „pause” se koristi za odgode u sekundama (može i manje), i ne blokira izvršavanje drugih procesa u uređaju.
Ako skripta unutar sebe sadrži beskonačnu petlju, u kojoj se ne nalazi „pause”, interpretator samoinicijativno pokreće malu pauzu.
U slučaju preopterećenja dodijeljene memorije, interpretator će zaustaviti izvršavanje takve 'proždrljive' skripte (budite oprezni s rekurzivnim funkcijama).

Korak 3. Debagiranje skripti

Za odpravo težav z že naloženim scenarijem na napravi lahko zaženete sledenje programa po korakih. To je izjemno koristno, kadar se je obnašanje scenarija izkazalo za drugačno od tistega, ki ga je avtor zamišljal. V tem primeru sledenje omogoča avtorju hitro najti vir težave in popraviti napako v scenariju.

Scenarij za izračun faktoriela v načinu odpravljanja napak:
Vizualno programiranje za Sonoff Basic

Orodje za odpravljanje napak je zelo preprosto in sestavlja ga tri glavne gumbe: »začetek«, »korak naprej« in »ustavi« (prav tako ne pozabite na »vstop« in »izstop« iz načina odpravljanja napak). Poleg korak po koraku sledenja lahko postavite tudi točko prekinitev na katerikoli blok (s klikom z miško nad blokom).
Za izpis trenutnih vrednosti parametrov (senzorji, releji) uporabite blok »print«.
Tukaj posnetek videa o uporabi razhroščevalnika.

Oddelek za radovedne. Kaj se dogaja pod pokrovom?

Za delovanje scenarijev na ciljni napravi je bil razvit interpretator bajtnega kode in assembler na 38 ukazov. V izvorno kodo blockly je bil vgrajen specializiran generator kode, ki pretvarja vizualne bloke v assemblerne ukaze. V nadaljevanju se ta assemblerni program pretvori v bajtno kodo in prenese v napravo za izvajanje.
Arhitektura te virtualne naprave je precej preprosta in nima posebnega smisla, da jo opisujemo; na spletu lahko najdete številne članke o oblikovanju najpreprostejših virtualnih naprav.
Za sklad svoje virtualne naprave običajno dodelim 1000 bajtov, kar je dovolj. Seveda lahko globoke rekurzije porabijo katerikoli sklad, a malo verjetno je, da bi jim našli praktično uporabo.

Končna bajtna koda je precej kompaktna. Kot primer, bajtna koda za izračun istega faktoriela obsega le 49 bajtov. To je njena vizualna oblika:
Vizualno programiranje za Sonoff Basic

In to je njen assemblerni program:

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

Če forma assemblerne predstavitve nima praktične vrednosti, pa zavihek »javascrit« nasprotno ponuja bolj znan videz kot vizualni bloki:

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

window.alert(factorial(10));

Kar zadeva zmogljivost. Ko sem zagnal najpreprostejšo migajočo skripto, sem na osciloskopskem zaslonu prejel meander 47 kHz (pri taktu 80 MHz procesorja).
Vizualno programiranje za Sonoff BasicVizualno programiranje za Sonoff Basic
Menim, da je to odličen rezultat, vsaj ta hitrost je skoraj desetkrat hitrejša kot pri Lua in Espruino.

Zaključni del

Prav tako bi rekel, da nam uporaba skript omogoča ne le programiranje logike delovanja posameznega naprave, ampak tudi povezovanje več naprav v enoten mehanizem, kjer ene naprave vplivajo na vedenje drugih.
Prav tako bi poudaril, da izbrani način shranjevanja skript (takoj v napravah, ne na strežniku) poenostavi preklop že delujočih naprav na drug strežnik, na primer na domači Raspberry, tukaj. navodilo.

To je vse, vesel bom, da slišim nasvete in konstruktivno kritiko.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster