Vizuelno programiranje za Sonoff Basic

Vizuelno programiranje za Sonoff Basic
Članak o tome kako napraviti programabilni logički kontroler od jeftinog kineskog uređaja. Takav uređaj će naći svoju upotrebu i u kućnoj automatizaciji i kao praktična nastava u školskoj informatici.
Za referencu, program Sonoff Basic po defaultu radi s mobilnom aplikacijom putem kineskog cloud servisa; nakon predložene izmjene, sva daljnja interakcija s ovim uređajem bit će moguća u pretraživaču.

Odjeljak I. Povezivanje Sonoff-a na uslugu MGT24

Korak 1: Kreirajte kontrolni panel

Registrirajte se na web mjestu mgt24 (ako već niste registrovani) i prijavite se koristeći svoj nalog.
Prijavite se u sistemVizuelno programiranje za Sonoff Basic

Da biste kreirali kontrolni panel za novi uređaj, kliknite na dugme “+”.
Primjer kreiranja panelaVizuelno programiranje za Sonoff Basic

Kada se panel kreira, pojaviće se na vašoj listi panela.

Na kartici "Podešavanje" kreiranog panela pronađite polja "Device ID" i "Authorization Key"; ubuduće će ove informacije biti potrebne prilikom postavljanja Sonoff uređaja.
Primjer karticeVizuelno programiranje za Sonoff Basic

Korak 2. Osvježite uređaj

Korištenje uslužnog programa XTCOM_UTIL preuzmite firmver PLC Sonoff Basic na uređaj, za ovo će vam trebati USB-TTL pretvarač. Evo manuelno и Video uputstvo.

Korak 3. Podešavanje uređaja

Uključite uređaj, nakon što se LED dioda upali, pritisnite dugme i držite ga pritisnuto dok LED ne počne periodično ravnomjerno treptati.
U ovom trenutku će se pojaviti nova wi-fi mreža pod nazivom “PLC Sonoff Basic”, povežite svoj računar na ovu mrežu.
Objašnjenje LED indikacije

LED indikacija
Status uređaja

periodično dvostruko treptanje
nema veze sa ruterom

sija neprekidno
uspostavljena veza sa ruterom

periodično ravnomerno treptanje
režim wi-fi pristupne tačke

ugašen
Nema napajanja

Otvorite internet pretraživač i unesite tekst “192.168.4.1” u adresnu traku, idite na stranicu postavki mreže uređaja.

Popunite polja na sljedeći način:

  • “Naziv mreže” i “Lozinka” (za povezivanje uređaja sa vašim kućnim wi-fi ruterom).
  • “ID uređaja” i “Ključ za autorizaciju” (za autorizaciju uređaja na MGT24 servisu).

Primjer postavljanja mrežnih parametara uređajaVizuelno programiranje za Sonoff Basic

Sačuvajte podešavanja i ponovo pokrenite uređaj.
to je Video uputstvo.

Korak 4. Povezivanje senzora (opciono)

Trenutni firmver podržava do četiri senzora temperature ds18b20. Evo Video uputstvo za ugradnju senzora. Očigledno će ovaj korak biti najteži, jer će zahtijevati ravne ruke i lemilo.

Odjeljak II. Vizuelno programiranje

Korak 1: Kreirajte skripte

Koristi se kao programsko okruženje blokovski, okruženje je lako naučiti, tako da ne morate biti programer da biste kreirali jednostavne skripte.

Dodao sam specijalizirane blokove za pisanje i čitanje parametara uređaja. Bilo kojem parametru se pristupa po imenu. Za parametre udaljenih uređaja koriste se složeni nazivi: “parametar@uređaj”.
Padajuća lista opcijaVizuelno programiranje za Sonoff Basic

Primjer scenarija za ciklično uključivanje i isključivanje opterećenja (1Hz):
Vizuelno programiranje za Sonoff Basic

Primjer skripte koja sinhronizuje rad dva odvojena uređaja. Naime, relej ciljnog uređaja ponavlja rad releja udaljenog uređaja.
Vizuelno programiranje za Sonoff Basic

Scenario za termostat (bez histereze):
Vizuelno programiranje za Sonoff Basic

Da biste kreirali složenije skripte, možete koristiti varijable, petlje, funkcije (sa argumentima) i druge konstrukcije. Neću ovde sve detaljno opisivati, već ima dosta toga na netu. edukativni materijal o Blocklyju.

Korak 2: Redoslijed skripti

Skripta radi kontinuirano, a čim dođe do kraja, počinje ponovo. U ovom slučaju, postoje dva bloka koja mogu privremeno pauzirati skriptu, “kašnjenje” i “pauza”.
Blok "delay" se koristi za kašnjenja od milisekundi ili mikrosekunde. Ovaj blok striktno održava vremenski interval, blokirajući rad cijelog uređaja.
Blok “pauza” se koristi za sekundu (ili manje) kašnjenja i ne blokira izvršavanje drugih procesa u uređaju.
Ako sama skripta sadrži beskonačnu petlju, čije tijelo ne sadrži “pauzu”, interpretator samostalno pokreće kratku pauzu.
Ako je dodijeljeni memorijski stog iscrpljen, interpretator će prestati izvršavati takvu skriptu gladnu energije (budite oprezni s rekurzivnim funkcijama).

Korak 3: Otklanjanje grešaka u skriptama

Da biste otklonili greške u skripti koja je već učitana u uređaj, možete pokrenuti praćenje programa korak po korak. Ovo može biti izuzetno korisno kada se pokaže da je ponašanje skripte drugačije od onoga što je autor namjeravao. U ovom slučaju, praćenje omogućava autoru da brzo pronađe izvor problema i ispravi grešku u skripti.

Scenario za izračunavanje faktorijala u načinu za otklanjanje grešaka:
Vizuelno programiranje za Sonoff Basic

Alat za otklanjanje grešaka je vrlo jednostavan i sastoji se od tri glavna dugmeta: “start”, “jedan korak naprijed” i “stop” (ne zaboravimo ni na “enter” i “exit” debug mod). Pored praćenja korak po korak, možete postaviti tačku prekida na bilo koji blok (klikom na blok).
Za prikaz trenutnih vrijednosti parametara (senzora, releja) na monitoru, koristite blok "print".
to je pregledni video o korištenju debagera.

Sekcija za radoznale. Šta je ispod haube?

Da bi skripte radile na ciljnom uređaju, razvijeni su bajtkod interpreter i asembler sa 38 instrukcija. Blocklyjev izvorni kod ima ugrađeni specijalizovani generator koda koji pretvara vizualne blokove u upute za sklapanje. Nakon toga, ovaj asemblerski program se pretvara u bajt kod i prenosi na uređaj za izvršenje.
Arhitektura ove virtuelne mašine je prilično jednostavna i nema posebne svrhe u njenom opisivanju; na Internetu ćete naći mnogo članaka o dizajniranju najjednostavnijih virtuelnih mašina.
Obično izdvajam 1000 bajtova za stog moje virtuelne mašine, što je dovoljno za rezervu. Naravno, duboke rekurzije mogu iscrpiti bilo koji stek, ali je malo vjerovatno da će imati praktičnu upotrebu.

Rezultirajući bajt kod je prilično kompaktan. Kao primjer, bajt kod za izračunavanje istog faktorijala je samo 49 bajtova. Ovo je njegov vizuelni oblik:
Vizuelno programiranje za Sonoff Basic

A ovo je njegov asemblerski 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

Ako montažni oblik reprezentacije nema nikakvu praktičnu vrijednost, tada kartica "javascrit", naprotiv, daje poznatiji izgled od vizualnih blokova:

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 flasher skript, dobio sam kvadratni talas od 47 kHz na ekranu osciloskopa (pri taktu procesora od 80 MHz).
Vizuelno programiranje za Sonoff BasicVizuelno programiranje za Sonoff Basic
Mislim da je ovo dobar rezultat, barem je ova brzina skoro deset puta veća od uzeti и Espruino.

Završni deo

Da rezimiramo, reći ću da nam korištenje skripti omogućava ne samo da programiramo logiku rada zasebnog uređaja, već i omogućuje povezivanje nekoliko uređaja u jedan mehanizam, pri čemu neki uređaji utječu na ponašanje drugih.
Također napominjem da odabrani način pohranjivanja skripti (direktno u same uređaje, a ne na server) pojednostavljuje prebacivanje već ispravnih uređaja na drugi server, na primjer na kućni Raspberry, ovdje manuelno.

To je sve, bit će mi drago čuti savjete i konstruktivne kritike.

izvor: www.habr.com

Dodajte komentar