Sonoff Basic vizualinis programavimas

Sonoff Basic vizualinis programavimas
Straipsnis apie tai, kaip iš pigaus kiniško įrenginio sukurti programuojamą loginį valdiklį. Toks įrenginys bus naudojamas tiek namų automatizavime, tiek kaip praktinės informatikos pamokos mokykloje.
Pagal numatytuosius nustatymus „Sonoff Basic“ programa veikia su mobiliąja programa per Kinijos debesies paslaugą; po siūlomo pakeitimo visa tolesnė sąveika su šiuo įrenginiu bus įmanoma naršyklėje.

I skyrius. Sonoff prijungimas prie MGT24 paslaugos

1 veiksmas: sukurkite valdymo skydelį

Registruokitės svetainėje mgt24 (jei dar neužsiregistravote) ir prisijunkite naudodami savo paskyrą.
Prisijunkite prie sistemosSonoff Basic vizualinis programavimas

Norėdami sukurti valdymo skydelį naujam įrenginiui, spustelėkite mygtuką „+“.
Skydelio kūrimo pavyzdysSonoff Basic vizualinis programavimas

Kai skydelis bus sukurtas, jis bus rodomas skydelių sąraše.

Sukurto skydelio skirtuke „Sąranka“ raskite laukus „Įrenginio ID“ ir „Autorizacijos raktas“, ateityje šios informacijos reikės nustatant „Sonoff“ įrenginį.
Skirtuko pavyzdysSonoff Basic vizualinis programavimas

2 veiksmas. Iš naujo paleiskite įrenginį

Naudodami naudingumą XTCOM_UTIL atsisiųskite programinę-aparatinę įrangą PLC Sonoff Basic prie įrenginio, tam jums reikės USB-TTL keitiklio. Čia mokymas и Vaizdo instrukcija.

3 veiksmas. Įrenginio sąranka

Įjunkite įrenginį, kai užsidegs šviesos diodas, paspauskite mygtuką ir laikykite nuspaustą, kol šviesos diodas pradės periodiškai tolygiai mirksėti.
Šiuo metu atsiras naujas „Wi-Fi“ tinklas pavadinimu „PLC Sonoff Basic“, prijunkite kompiuterį prie šio tinklo.
LED indikacijos paaiškinimas

LED indikacija
Įrenginio būsena

periodiškas dvigubas mirksėjimas
nėra ryšio su maršrutizatoriumi

nuolat šviečia
užmegztas ryšys su maršrutizatoriumi

periodiškas vienodas mirksėjimas
„Wi-Fi“ prieigos taško režimas

užgeso
Nėra maitinimo

Atidarykite interneto naršyklę ir adreso juostoje įveskite tekstą „192.168.4.1“, eikite į įrenginio tinklo nustatymų puslapį.

Laukus užpildykite taip:

  • „Tinklo pavadinimas“ ir „Slaptažodis“ (įrenginiui susieti su namų „Wi-Fi“ maršruto parinktuvu).
  • „Įrenginio ID“ ir „Autorizacijos raktas“ (įrenginiui autorizuoti naudojant MGT24 paslaugą).

Įrenginio tinklo parametrų nustatymo pavyzdysSonoff Basic vizualinis programavimas

Išsaugokite nustatymus ir iš naujo paleiskite įrenginį.
Čia Vaizdo instrukcija.

4 veiksmas. Jutiklių prijungimas (pasirinktinai)

Dabartinė programinė įranga palaiko iki keturių ds18b20 temperatūros jutiklių. Čia Vaizdo instrukcija jutiklių montavimui. Matyt, šis žingsnis bus pats sunkiausias, nes reikės tiesių rankų ir lituoklio.

II skyrius. Vaizdinis programavimas

1 veiksmas: sukurkite scenarijus

Naudojama kaip programavimo aplinka Blogai, aplinką lengva išmokti, todėl nereikia būti programuotoju, kad sukurtumėte paprastus scenarijus.

Pridėjau specializuotus blokus įrenginio parametrų rašymui ir skaitymui. Bet kuris parametras pasiekiamas pagal pavadinimą. Nuotolinių įrenginių parametrams naudojami sudėtiniai pavadinimai: „parameter@device“.
Išskleidžiamasis parinkčių sąrašasSonoff Basic vizualinis programavimas

Ciklinio apkrovos įjungimo ir išjungimo scenarijaus pavyzdys (1 Hz):
Sonoff Basic vizualinis programavimas

Scenarijaus, sinchronizuojančio dviejų atskirų įrenginių veikimą, pavyzdys. Būtent, tikslinio įrenginio relė pakartoja nuotolinio įrenginio relės veikimą.
Sonoff Basic vizualinis programavimas

Termostato scenarijus (be histerezės):
Sonoff Basic vizualinis programavimas

Norėdami sukurti sudėtingesnius scenarijus, galite naudoti kintamuosius, kilpas, funkcijas (su argumentais) ir kitas konstrukcijas. Viso to čia išsamiai neaprašysiu, tinkle jau yra nemažai. mokomoji medžiaga apie Blockly.

2 veiksmas: scenarijų tvarka

Scenarijus veikia nuolat, o kai tik pasiekia pabaigą, jis pradedamas iš naujo. Šiuo atveju yra du blokai, kurie gali laikinai pristabdyti scenarijų: „delsti“ ir „pauzė“.
„Delay“ blokas naudojamas milisekundžių arba mikrosekundžių vėlavimui. Šis blokas griežtai palaiko laiko intervalą, blokuodamas viso įrenginio veikimą.
„Pauzės“ blokas naudojamas antrajai (ar mažiau) uždelsimui ir jis neblokuoja kitų įrenginio procesų vykdymo.
Jei pačiame scenarijuje yra begalinis ciklas, kurio turinyje nėra „pauzės“, interpretatorius savarankiškai inicijuoja trumpą pauzę.
Jei skirta atminties krūva išeikvojama, vertėjas nustos vykdyti tokį energijos reikalaujantį scenarijų (būkite atsargūs su rekursinėmis funkcijomis).

3 veiksmas: scenarijų derinimas

Norėdami derinti scenarijų, kuris jau buvo įkeltas į įrenginį, galite žingsnis po žingsnio paleisti programos sekimą. Tai gali būti labai naudinga, kai scenarijaus elgesys skiriasi nuo to, ko norėjo autorius. Šiuo atveju sekimas leidžia autoriui greitai rasti problemos šaltinį ir ištaisyti scenarijaus klaidą.

Faktoriaus skaičiavimo derinimo režimu scenarijus:
Sonoff Basic vizualinis programavimas

Derinimo įrankis yra labai paprastas ir susideda iš trijų pagrindinių mygtukų: "pradėti", "vienu žingsniu į priekį" ir "stop" (taip pat nepamirškime apie derinimo režimą "įvesti" ir "išeiti"). Be nuoseklaus sekimo, bet kuriame bloke galite nustatyti pertraukos tašką (spustelėdami bloką).
Norėdami monitoriuje rodyti esamas parametrų (daviklių, relių) reikšmes, naudokite bloką „spausdinti“.
Čia apžvalginis vaizdo įrašas apie derinimo priemonės naudojimą.

Skyrius smalsiems. Kas yra po gaubtu?

Kad scenarijai veiktų tiksliniame įrenginyje, buvo sukurtas baitų kodo interpretatorius ir surinkėjas su 38 instrukcijomis. „Blockly“ šaltinio kode yra įmontuotas specializuotas kodo generatorius, kuris vaizdinius blokus paverčia surinkimo instrukcijomis. Vėliau ši surinkėjo programa konvertuojama į baitinį kodą ir perkeliama į įrenginį vykdyti.
Šios virtualios mašinos architektūra yra gana paprasta ir nėra prasmės ją apibūdinti, internete rasite daug straipsnių apie paprasčiausių virtualių mašinų projektavimą.
Paprastai savo virtualios mašinos kaminui skiriu 1000 baitų, kurių užtenka. Žinoma, gilios rekursijos gali išnaudoti bet kokį krūvą, tačiau vargu ar jie turės jokios praktinės naudos.

Gautas baito kodas yra gana kompaktiškas. Pavyzdžiui, to paties faktorialo skaičiavimo baitų kodas yra tik 49 baitai. Tai yra jo vizualinė forma:
Sonoff Basic vizualinis programavimas

Ir tai yra jo surinkėjo 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

Jei surinkimo forma neturi jokios praktinės vertės, tada skirtukas „javascrit“, priešingai, suteikia labiau pažįstamą išvaizdą nei vaizdiniai blokai:

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

window.alert(factorial(10));

Kalbant apie našumą. Kai paleidau paprasčiausią blykstės scenarijų, osciloskopo ekrane gavau 47 kHz kvadratinę bangą (procesoriaus taktiniu dažniu 80 MHz).
Sonoff Basic vizualinis programavimasSonoff Basic vizualinis programavimas
Manau, kad tai geras rezultatas, bent jau šis greitis yra beveik dešimt kartų didesnis nei LUA и Espruino.

Baigiamoji dalis

Apibendrinant pasakysiu, kad scenarijų naudojimas leidžia ne tik programuoti atskiro įrenginio veikimo logiką, bet ir leidžia sujungti kelis įrenginius į vieną mechanizmą, kai vieni įrenginiai įtakoja kitų elgesį.
Taip pat atkreipiu dėmesį, kad pasirinktas scenarijų saugojimo būdas (tiesiogiai pačiuose įrenginiuose, o ne serveryje) supaprastina jau veikiančių įrenginių perjungimą į kitą serverį, pavyzdžiui, į namų Raspberry, čia mokymas.

Tai viskas, man bus malonu išgirsti patarimus ir konstruktyvią kritiką.

Šaltinis: www.habr.com

Добавить комментарий