Vizualno programiranje za Sonoff Basic

Vizualno programiranje za Sonoff Basic
Članek o tem, kako ustvariti programabilni logični krmilnik iz poceni kitajske naprave. Takšna naprava bo našla svojo uporabo tako pri domači avtomatizaciji kot pri praktičnem pouku šolskega računalništva.
Za referenco, program Sonoff Basic privzeto deluje z mobilno aplikacijo prek kitajske storitve v oblaku; po predlagani spremembi bo vsa nadaljnja interakcija s to napravo možna v brskalniku.

Razdelek I. Povezovanje Sonoffa s storitvijo MGT24

1. korak: Ustvarite nadzorno ploščo

Registrirajte se na spletnem mestu mgt24 (če še niste registrirani) in se prijavite s svojim računom.
Prijava v sistemVizualno programiranje za Sonoff Basic

Če želite ustvariti nadzorno ploščo za novo napravo, kliknite na gumb "+".
Primer izdelave ploščeVizualno programiranje za Sonoff Basic

Ko je plošča ustvarjena, se prikaže na vašem seznamu plošč.

Na zavihku »Nastavitev« ustvarjene plošče poiščite polji »ID naprave« in »Ključ avtorizacije«; v prihodnosti bodo ti podatki potrebni pri nastavitvi naprave Sonoff.
Primer zavihkaVizualno programiranje za Sonoff Basic

2. korak. Ponovno zaženite napravo

Uporaba pripomočka XTCOM_UTIL prenesite vdelano programsko opremo PLC Sonoff Basic v napravo, boste za to potrebovali pretvornik USB-TTL. Tukaj Navodila и Video navodila.

3. korak. Nastavitev naprave

Priključite napajanje naprave, ko lučka LED zasveti, pritisnite gumb in ga držite pritisnjenega, dokler lučka LED ne začne periodično enakomerno utripati.
V tem trenutku se prikaže novo omrežje Wi-Fi, imenovano "PLC Sonoff Basic", povežite svoj računalnik s tem omrežjem.
Razlaga LED indikacije

LED indikacija
Stanje naprave

občasno dvojno utripanje
ni povezave z usmerjevalnikom

neprestano sveti
vzpostavljena povezava z usmerjevalnikom

periodično enakomerno utripanje
način dostopne točke wi-fi

ugasnilo
Brez napajanja

Odprite internetni brskalnik in v naslovno vrstico vnesite besedilo »192.168.4.1«, pojdite na stran z nastavitvami omrežnih nastavitev naprave.

Izpolnite polja na naslednji način:

  • »Ime omrežja« in »Geslo« (za povezavo naprave z domačim Wi-Fi usmerjevalnikom).
  • “ID naprave” in “Autorizacijski ključ” (za avtorizacijo naprave na storitvi MGT24).

Primer nastavitve omrežnih parametrov napraveVizualno programiranje za Sonoff Basic

Shranite nastavitve in znova zaženite napravo.
Tukaj Video navodila.

Korak 4. Priključitev senzorjev (izbirno)

Trenutna vdelana programska oprema podpira do štiri temperaturne senzorje ds18b20. Tukaj Video navodila za namestitev senzorjev. Očitno bo ta korak najtežji, saj bo zahteval ravne roke in spajkalnik.

Razdelek II. Vizualno programiranje

1. korak: Ustvarite skripte

Uporablja se kot programsko okolje Blokirano, okolja je enostavno naučiti, zato vam ni treba biti programer za ustvarjanje preprostih skriptov.

Dodal sem specializirane bloke za pisanje in branje parametrov naprave. Do katerega koli parametra lahko dostopate po imenu. Za parametre oddaljenih naprav se uporabljajo sestavljena imena: “parameter@device”.
Spustni seznam možnostiVizualno programiranje za Sonoff Basic

Primer scenarija za ciklični vklop in izklop bremena (1Hz):
Vizualno programiranje za Sonoff Basic

Primer skripta, ki sinhronizira delovanje dveh ločenih naprav. Rele ciljne naprave namreč ponavlja delovanje releja oddaljene naprave.
Vizualno programiranje za Sonoff Basic

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

Če želite ustvariti bolj zapletene skripte, lahko uporabite spremenljivke, zanke, funkcije (z argumenti) in druge konstrukte. Vsega tega tukaj ne bom podrobno opisoval, na netu je že kar nekaj. izobraževalno gradivo o Blocklyju.

2. korak: Vrstni red skriptov

Skript teče neprekinjeno in takoj, ko doseže svoj konec, se začne znova. V tem primeru obstajata dva bloka, ki lahko začasno zaustavita skript, »zakasnitev« in »pavza«.
Blok "zakasnitev" se uporablja za milisekundne ali mikrosekundne zakasnitve. Ta blok strogo ohranja časovni interval in blokira delovanje celotne naprave.
Blok "pavza" se uporablja za sekundne (ali manj) zakasnitve in ne blokira izvajanja drugih procesov v napravi.
Če skript sam vsebuje neskončno zanko, katere telo ne vsebuje "pavze", tolmač samostojno sproži kratko pavzo.
Če je dodeljeni pomnilniški sklad izčrpan, bo tolmač prenehal izvajati tako požrešen skript (bodite previdni pri rekurzivnih funkcijah).

3. korak: Odpravljanje napak v skriptih

Za odpravljanje napak v skriptu, ki je že naložen v napravo, lahko korak za korakom zaženete sledenje programa. To je lahko zelo koristno, ko se je obnašanje scenarija izkazalo za drugačno od tistega, kar je avtor nameraval. V tem primeru sledenje omogoča avtorju, da hitro najde izvor težave in popravi napako v scenariju.

Scenarij za izračun faktoriala v načinu za odpravljanje napak:
Vizualno programiranje za Sonoff Basic

Orodje za odpravljanje napak je zelo preprosto in je sestavljeno iz treh glavnih gumbov: »start«, »en korak naprej« in »stop« (ne pozabimo tudi na »enter« in »exit« način odpravljanja napak). Poleg sledenja po korakih lahko na katerem koli bloku nastavite prekinitveno točko (s klikom na blok).
Za prikaz trenutnih vrednosti parametrov (senzorjev, relejev) na monitorju uporabite blok »natisni«.
Tukaj pregledni video o uporabi razhroščevalnika.

Rubrika za radovedneže. Kaj je pod pokrovom?

Da bi skripte delovale na ciljni napravi, sta bila razvita tolmač bajtne kode in asembler z 38 navodili. Blocklyjeva izvorna koda ima vgrajen specializiran generator kode, ki pretvori vizualne bloke v navodila za sestavljanje. Nato se ta program za sestavljanje pretvori v bajtno kodo in prenese v napravo za izvedbo.
Arhitektura tega virtualnega stroja je precej preprosta in nima posebnega smisla, da bi ga opisovali, na internetu boste našli veliko člankov o načrtovanju najpreprostejših virtualnih strojev.
Ponavadi dodelim 1000 bajtov za sklad svojega virtualnega stroja, kar je dovolj za rezervo. Seveda lahko globoke rekurzije izčrpajo vsak sklad, vendar je malo verjetno, da bodo imele kakršno koli praktično uporabo.

Nastala bajtna koda je precej kompaktna. Na primer, bajtna koda za izračun istega faktoriala je samo 49 bajtov. To je njegova vizualna oblika:
Vizualno programiranje za Sonoff Basic

In to 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

Če montažna oblika predstavitve nima praktične vrednosti, potem zavihek "javascrit", nasprotno, daje bolj znan videz kot vizualni bloki:

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

window.alert(factorial(10));

Glede uspešnosti. Ko sem zagnal najpreprostejši skript flasherja, sem na zaslonu osciloskopa dobil kvadratni val 47 kHz (pri taktu procesorja 80 MHz).
Vizualno programiranje za Sonoff BasicVizualno programiranje za Sonoff Basic
Mislim, da je to dober rezultat, vsaj ta hitrost je skoraj desetkrat večja od Lua и Espruino.

Končni del

Če povzamem, bom rekel, da nam uporaba skriptov omogoča ne samo programiranje logike delovanja ločene naprave, temveč omogoča tudi povezavo več naprav v en sam mehanizem, kjer nekatere naprave vplivajo na vedenje drugih.
Opažam tudi, da izbrani način shranjevanja skriptov (neposredno v samih napravah in ne na strežniku) poenostavlja preklop že delujočih naprav na drug strežnik, na primer na domači Raspberry, tukaj Navodila.

To je vse, vesela bom nasvetov in konstruktivne kritike.

Vir: www.habr.com

Dodaj komentar