Vizualno programiranje za Sonoff Basic

Vizualno programiranje za Sonoff Basic
Članak o tome kako od jeftinog kineskog uređaja napraviti programabilni logički kontroler. Ovakav uređaj može se koristiti kako u kućnoj automatizaciji, tako i kao praktične aktivnosti na školskom informatici.
Za informaciju, prema zadanim postavkama program Sonoff Basic radi s mobilnom aplikacijom putem kineske cloud usluge, nakon predložene prepravke, sve buduće interakcije s tim uređajem bit će moguće u pregledniku.

Odjeljak I. Povezivanje Sonoff s uslugom MGT24

Korak 1. Izrada upravljačke ploče

Registrirajte se na stranici mgt24 (ako još niste registrirani) i prijavite se na svoj račun.
PrijavaVizualno programiranje za Sonoff Basic

Da biste izradili upravljačku ploču za uređaj, kliknite na gumb «+».
Primjer izrade pločeVizualno programiranje za Sonoff Basic

Nakon što ploča bude izrađena, pojavit će se na popisu vaših ploča.

U odjeljku «Instalacija» odabrane ploče, pronađite polja «ID uređaja» i «Ključ autorizacije», ova informacija će biti potrebna tijekom podešavanja Sonoff uređaja.
Primjer karticeVizualno programiranje za Sonoff Basic

Korak 2. Preflah uređaja

Pomoću alata XTCOM_UTIL preuzmite firmver PLC Sonoff Basic na uređaj, za to će vam trebati USB-TTL pretvarač. Ovdje upute i video upute.

Korak 3. Podešavanje uređaja

Povežite uređaj na napajanje, nakon što zasvijetli LED, pritisnite gumb i držite ga pritisnutim dok LED ne počne povremeno treptati.
U tom trenutku pojavit će se nova Wi-Fi mreža pod nazivom «PLC Sonoff Basic», povežite svoj računar s ovom mrežom.
Dekodiranje LED indikacije

LED indikacija
Stanje uređaja

povremeno dvostruko treptanje
nema veze s usmjerivačem

neprekidno svijetli
uspostavljena veza s usmjerivačem

povremeno ravnomjerno treptanje
mod Wi-Fi pristupne točke

ugašen
nema napajanja

Otvorite internetski preglednik i u adresnu traku upišite «192.168.4.1», pređite na stranicu postavki mrežnih parametara uređaja.

Ispunite polja na sljedeći način:

  • «Ime mreže» i «Lozinka» (za povezivanje uređaja s kućnim wi-fi usmjerivačem).
  • «ID uređaja» i «Ključ autorizacije» (za autorizaciju uređaja na usluzi MGT24).

Primjer postavki mrežnih parametara uređajaVizualno programiranje za Sonoff Basic

Spremite postavke i ponovo pokrenite uređaj.
Ovdje video upute.

Korak 4. Spojite senzore (opcionalno)

Trenutni firmware podržava do četiri senzora temperature ds18b20. Ovdje video upute na montaži senzora. Očigledno, ovaj korak će biti najteži jer će zahtijevati od vas vješte ruke i lemilicu.

Poglavlje II. Vizualno programiranje

Korak 1. Kreiranje scena

Kao okruženje za programiranje koristi se Blockly, okruženje je jednostavno za učenje, tako da za stvaranje jednostavnih scena nije potrebno biti programer.

Dodao sam posebne blokove za zapisivanje i čitanje parametara uređaja. Pristup svakom parametru se vrši po imenu. Za parametre udaljenih uređaja koriste se složena imena: „parametar@uređaj“.
Padajući izbornik parametaraVizualno programiranje za Sonoff Basic

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

Primjer scene koja sinkronizira rad dva odvojena uređaja. Naime, relej ciljanog uređaja ponavlja rad releja udaljenog uređaja.
Vizualno programiranje za Sonoff Basic

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

Za stvaranje složenijih scena mogu se koristiti varijable, petlje, funkcije (s argumentima) i druge konstrukcije. Neću ovdje detaljno objašnjavati, na mreži već ima dosta obrazovnog materijala o Blocklyju.

Korak 2. Redoslijed izvršavanja scena

Scena radi u neprekidnom režimu, i čim dođe do svog kraja, ponovno se pokreće. Pri tome postoje dva bloka koja mogu privremeno obustaviti rad scene, „delay“ i „pause“.
Blok „delay“ koristi se za milisekundne ili mikrosekundne odgode. Ovaj blok strogo poštuje vremenski interval, blokirajući rad cijelog uređaja.
Blok „pause“ koristi se za sekunde (može i manje) odgode, a ne blokira izvršavanje drugih procesa u uređaju.
Ako scena sadrži beskonačnu petlju, u kojoj nije postavljen „pause“, interpreter će samoinicijativno pokrenuti kratku pauzu.
U slučaju iscrpljivanja dodijeljene memorijske stog, interpreter će zaustaviti izvršavanje takve „proždrljive“ scene (budite oprezni s rekurzivnim funkcijama).

Korak 3. Debugiranje scena

Za ispravku već učitanog scenarija na uređaju, možete pokrenuti korak po korak praćenje programa. To može biti izuzetno korisno kada ponašanje scenarija nije onakvo kakvo je autor zamislio. U tom slučaju, praćenje omogućuje autoru brzu identifikaciju izvora problema i ispravku greške u scenariju.

Scenarij za izračunavanje faktorijala u režimu ispravljanja:
Vizualno programiranje za Sonoff Basic

Alat za ispravljanje je vrlo jednostavan i sastoji se od tri osnovna gumba: 'pokreni', 'jedan korak naprijed' i 'zaustavi' (također ne zaboravite na 'ulaz' i 'izlaz' iz režima ispravljanja). Osim korak po korak praćenja, možete postaviti točku prekida na bilo kojem bloku (klikom miša na blok).
Kako biste prikazali trenutno stanje parametara (senzori, releji) na monitoru, koristite blok 'print'.
Ovdje pregledni video o korištenju ispravljivača.

Odjeljak za znatiželjne. A što je to ispod haube?

Kako bi scenariji radili na ciljnom uređaju, razvijen je interpreter bajt koda i asembler s 38 instrukcija. U izvorni kod blockly ugrađen je specijalizirani generator koda koji konvertira vizualne blokove u asemberske instrukcije. U daljnjem postupku, ovaj asemberski program se pretvara u bajt kod i šalje na uređaj na izvršenje.
Arhitektura ove virtuelne mašine je prilično jednostavna i nema posebnog smisla opisivati je, na mreži ćete pronaći mnogo članaka o projektovanju najjednostavnijih virtuelnih mašina.
Za stog svoje virtuelne mašine obično rezerviram 1000 bajtova, što je dovoljno. Naravno, duboke rekurzije mogu iscrpiti bilo koji stog, ali je malo verovatno da će imati praktičnu primenu.

Konačni bajt kod dobija se prilično kompaktno. Na primer, bajt kod za izračunavanje istog faktorijala iznosi samo 49 bajtova. Ovo je njegova vizualna forma prikaza:
Vizualno programiranje za Sonoff Basic

A ovo je njegova asemberska programa:

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

Ako asemberska forma prikaza nema neku praktičnu vrednost, tab 'javascrit', naprotiv, daje poznatiji izgled nego vizualni blokovi:

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

window.alert(factorial(10));

Što se tiče performansi. Kada sam pokrenuo najjednostavniji scenarij treptanja, na ekranu osciloskopa dobio sam meandar od 47 kHz (pri taktu procesora od 80 MHz).
Vizualno programiranje za Sonoff BasicVizualno programiranje za Sonoff Basic
Smem to smatrati pristojnim rezultatom, barem ta brzina je skoro deset puta brža nego kod Lua i Espruino.

Završni deo

Zaključno ću reći da primena scenarija ne samo da nam omogućava programiranje logike rada pojedinačnog uređaja, već i pruža mogućnost povezivanja više uređaja u jedinstveni mehanizam, gde jedni uređaji utiču na ponašanje drugih.
Takođe ću napomenuti da odabrani način čuvanja scenarija (direktno u samim uređajima, a ne na serveru) olakšava prebacivanje već aktivnih uređaja na drugi server, na primer na domaći Raspberry, ovde upute.

Na tome je sve, bio bih srećan da čujem savete i konstruktivnu kritiku.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster