Vizualno programiranje za Sonoff Basic

Vizualno programiranje za Sonoff Basic
Članak o tome kako stvoriti programabilni logički kontroler iz jeftinog kineskog uređaja. Takav će uređaj svoju primjenu naći kako u kućnoj automatizaciji, tako i kao praktična nastava u školskoj informatici.
Za referencu, program Sonoff Basic prema zadanim postavkama radi s mobilnom aplikacijom putem kineske usluge u oblaku; nakon predložene izmjene sve daljnje interakcije s ovim uređajem bit će moguće u pregledniku.

Odjeljak I. Povezivanje Sonoffa s uslugom MGT24

Korak 1: Napravite upravljačku ploču

Registrirajte se na stranici mgt24 (ako već niste registrirani) i prijavite se koristeći svoj račun.
Prijaviti seVizualno programiranje za Sonoff Basic

Za izradu upravljačke ploče za novi uređaj kliknite na gumb “+”.
Primjer izrade panelaVizualno programiranje za Sonoff Basic

Nakon što se ploča izradi, pojavit će se na vašem popisu ploča.

Na kartici "Podešavanje" stvorene ploče pronađite polja "ID uređaja" i "Ključ autorizacije", u budućnosti će ti podaci biti potrebni prilikom postavljanja Sonoff uređaja.
Primjer karticeVizualno programiranje za Sonoff Basic

Korak 2. Ponovno fleširajte uređaj

Korištenje uslužnog programa XTCOM_UTIL preuzmite firmware PLC Sonoff Basic na uređaj, za to će vam trebati USB-TTL pretvarač. Ovdje nastava и Video upute.

Korak 3. Postavljanje uređaja

Uključite uređaj u struju, nakon što LED dioda zasvijetli pritisnite tipku i držite je pritisnutu dok LED dioda ne počne povremeno ravnomjerno treperiti.
U ovom trenutku pojavit će se nova Wi-Fi mreža pod nazivom "PLC Sonoff Basic", povežite svoje računalo na ovu mrežu.
Objašnjenje LED indikacije

LED indikacija
Status uređaja

periodično dvostruko treptanje
nema veze s ruterom

neprekidno svijetli
uspostavljena veza s ruterom

periodično ravnomjerno bljeskanje
način rada wi-fi pristupne točke

ugasio se
Nema napajanja

Otvorite internetski preglednik i unesite tekst "192.168.4.1" u adresnu traku, idite na stranicu postavki mrežnih postavki uređaja.

Ispunite polja na sljedeći način:

  • “Naziv mreže” i “Lozinka” (za povezivanje uređaja s kućnim wi-fi usmjerivačem).
  • “ID uređaja” i “Autorizacijski ključ” (za autorizaciju uređaja na usluzi MGT24).

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

Spremite postavke i ponovno pokrenite uređaj.
Ovdje Video upute.

Korak 4. Povezivanje senzora (opcija)

Trenutačni firmware podržava do četiri temperaturna senzora ds18b20. Ovdje Video upute za ugradnju senzora. Očigledno, ovaj korak će biti najteži, jer će zahtijevati ravne ruke i lemilo.

Odjeljak II. Vizualno programiranje

Korak 1: Stvorite skripte

Koristi se kao programsko okruženje Blockly, okruženje je jednostavno za naučiti, tako da ne morate biti programer za izradu jednostavnih skripti.

Dodao sam specijalizirane blokove za pisanje i čitanje parametara uređaja. Bilo kojem parametru se pristupa imenom. Za parametre udaljenih uređaja koriste se složeni nazivi: “parameter@device”.
Padajući popis opcijaVizualno programiranje za Sonoff Basic

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

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

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

Za izradu složenijih skripti možete koristiti varijable, petlje, funkcije (s argumentima) i druge konstrukcije. Neću ovdje sve to detaljno opisivati, ima već dosta toga na netu. obrazovni materijal o Blocklyju.

Korak 2: Redoslijed skripti

Skripta radi kontinuirano, a čim dođe do kraja, počinje iznova. U ovom slučaju postoje dva bloka koji mogu privremeno pauzirati skriptu, "odgoda" i "pauza".
Blok "kašnjenja" koristi se za odgode od milisekundi ili mikrosekundi. Ovaj blok strogo održava vremenski interval, blokirajući rad cijelog uređaja.
Blok “pause” koristi se za sekunde (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", tumač samostalno pokreće kratku pauzu.
Ako je dodijeljeni memorijski stog iscrpljen, tumač će prestati izvršavati takvu skriptu gladnu energije (budite oprezni s rekurzivnim funkcijama).

Korak 3: Otklanjanje pogrešaka u skriptama

Za otklanjanje pogrešaka skripte 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 ponašanje skripte razlikuje od onoga što je autor namjeravao. U ovom slučaju praćenje omogućuje autoru da brzo pronađe izvor problema i ispravi grešku u skripti.

Scenarij za izračunavanje faktorijela u načinu otklanjanja pogrešaka:
Vizualno programiranje za Sonoff Basic

Alat za otklanjanje pogrešaka vrlo je jednostavan i sastoji se od tri glavna gumba: "start", "jedan korak naprijed" i "stop" (također nemojmo zaboraviti "ulaz" i "izlaz" iz načina otklanjanja pogrešaka). Osim praćenja korak po korak, možete postaviti prijelomnu točku na bilo koji blok (klikom na blok).
Za prikaz trenutnih vrijednosti parametara (senzora, releja) na monitoru koristite blok "ispis".
Ovdje video pregled o korištenju programa za ispravljanje pogrešaka.

Sekcija za znatiželjne. Što je ispod haube?

Kako bi skripte radile na ciljnom uređaju, razvijen je interpreter bajtkoda i asembler s 38 instrukcija. Blocklyjev izvorni kod ima ugrađen specijalizirani generator koda koji vizualne blokove pretvara u upute za sklapanje. Naknadno se ovaj asemblerski program pretvara u bajt kod i prenosi na uređaj za izvođenje.
Arhitektura ovog virtualnog stroja prilično je jednostavna i nema smisla opisivati ​​ga, na internetu ćete naći mnogo članaka o projektiranju najjednostavnijih virtualnih strojeva.
Obično izdvajam 1000 bajtova za stog svog virtualnog stroja, što je dovoljno za preokret. Naravno, duboke rekurzije mogu iscrpiti bilo koji stog, ali malo je vjerojatno da će imati bilo kakvu praktičnu korist.

Rezultirajući bajt kod prilično je kompaktan. Na primjer, bajt kod za izračun istog faktorijela je samo 49 bajtova. Ovo je njegov vizualni oblik:
Vizualno 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 skupni oblik predstavljanja 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 izvedbe. Kad sam pokrenuo najjednostavniju flasher skriptu, dobio sam pravokutni val od 47 kHz na zaslonu osciloskopa (na taktu procesora od 80 MHz).
Vizualno programiranje za Sonoff BasicVizualno programiranje za Sonoff Basic
Mislim da je ovo dobar rezultat, barem je ova brzina gotovo deset puta veća od Lua и Espruino.

Završni dio

Ukratko, reći ću da nam korištenje skripti omogućuje ne samo programiranje logike rada zasebnog uređaja, već također omogućuje povezivanje nekoliko uređaja u jedan mehanizam, gdje neki uređaji utječu na ponašanje drugih.
Također napominjem da odabrani način pohranjivanja skripti (izravno u same uređaje, a ne na poslužitelj) pojednostavljuje prebacivanje već radnih uređaja na drugi poslužitelj, primjerice na kućni Raspberry, ovdje nastava.

To je sve, bit će mi drago čuti savjet i konstruktivnu kritiku.

Izvor: www.habr.com

Dodajte komentar