Raksts par to, kÄ izveidot programmÄjamu loÄ£isko kontrolieri no lÄtas Ä·Ä«nieÅ”u ierÄ«ces. Å Äda ierÄ«ce tiks izmantota gan mÄjas automatizÄcijÄ, gan kÄ praktiskÄs nodarbÄ«bas skolas datorzinÄtnÄs.
UzziÅai, pÄc noklusÄjuma programma Sonoff Basic darbojas ar mobilo lietojumprogrammu, izmantojot Ķīnas mÄkoÅpakalpojumu; pÄc ierosinÄtÄs modifikÄcijas visa turpmÄkÄ mijiedarbÄ«ba ar Å”o ierÄ«ci bÅ«s iespÄjama pÄrlÅ«kprogrammÄ.
I sadaļa. Sonoff pievienoŔana pakalpojumam MGT24
1. darbība. Izveidojiet vadības paneli
ReÄ£istrÄjieties vietnÄ
PieslÄgties
Lai izveidotu vadÄ«bas paneli jaunai ierÄ«cei, noklikŔķiniet uz pogas ā+ā.
Paneļa izveides piemÄrs
Kad panelis ir izveidots, tas parÄdÄ«sies jÅ«su paneļu sarakstÄ.
IzveidotÄ paneļa cilnÄ āIestatÄ«Å”anaā atrodiet laukus āIerÄ«ces IDā un āAutorizÄcijas atslÄgaā; turpmÄk Ŕī informÄcija bÅ«s nepiecieÅ”ama, uzstÄdot Sonoff ierÄ«ci.
Cilnes piemÄrs
2. darbÄ«ba. AtkÄrtoti uzzibeÅ”ojiet ierÄ«ci
Lietojumprogrammas izmantoŔana
3. darbība. Ierīces iestatīŔana
IeslÄdziet ierÄ«ci, pÄc tam, kad iedegas LED, nospiediet pogu un turiet to nospiestu, lÄ«dz gaismas diode sÄk periodiski vienmÄrÄ«gi mirgot.
Å ajÄ brÄ«dÄ« parÄdÄ«sies jauns Wi-Fi tÄ«kls ar nosaukumu āPLC Sonoff Basicā, savienojiet datoru ar Å”o tÄ«klu.
LED indikÄcijas skaidrojums
LED indikÄcija
Ierīces statuss
periodiska dubultÄ mirgoÅ”ana
nav savienojuma ar marÅ”rutÄtÄju
spÄ«d nepÄrtraukti
izveidots savienojums ar marÅ”rutÄtÄju
periodiska vienota mirgoŔana
Wi-Fi piekļuves punkta režīms
dzÄsts
Nav baroŔanas avota
Atveriet interneta pÄrlÅ«kprogrammu un adreses joslÄ ievadiet tekstu ā192.168.4.1ā, dodieties uz ierÄ«ces tÄ«kla iestatÄ«jumu lapu.
Aizpildiet laukus Å”Ädi:
- āTÄ«kla nosaukumsā un āParoleā (lai saistÄ«tu ierÄ«ci ar mÄjas Wi-Fi marÅ”rutÄtÄju).
- āIerÄ«ces IDā un āAutorizÄcijas atslÄgaā (lai autorizÄtu ierÄ«ci MGT24 pakalpojumÄ).
IerÄ«ces tÄ«kla parametru iestatÄ«Å”anas piemÄrs
SaglabÄjiet iestatÄ«jumus un restartÄjiet ierÄ«ci.
Å eit
4. darbÄ«ba. Sensoru pievienoÅ”ana (pÄc izvÄles)
PaÅ”reizÄjÄ programmaparatÅ«ra atbalsta lÄ«dz Äetriem ds18b20 temperatÅ«ras sensoriem. Å eit
II sadaļa. VizuÄlÄ programmÄÅ”ana
1. darbība. Izveidojiet skriptus
Izmanto kÄ programmÄÅ”anas vidi
Es pievienoju specializÄtus blokus ierÄ«ces parametru rakstÄ«Å”anai un lasÄ«Å”anai. Jebkuram parametram var piekļūt pÄc nosaukuma. AttÄlinÄto ierÄ«Äu parametriem tiek izmantoti salikti nosaukumi: āparameter@deviceā.
Nolaižamais opciju saraksts
ScenÄrija piemÄrs slodzes cikliskai ieslÄgÅ”anai un izslÄgÅ”anai (1 Hz):
Skripta piemÄrs, kas sinhronizÄ divu atseviŔķu ierÄ«Äu darbÄ«bu. Proti, mÄrÄ·a ierÄ«ces relejs atkÄrto attÄlÄs ierÄ«ces releja darbÄ«bu.
ScenÄrijs termostatam (bez histerÄzes):
Lai izveidotu sarežģītÄkus skriptus, varat izmantot mainÄ«gos, cilpas, funkcijas (ar argumentiem) un citas konstrukcijas. Å eit es to visu sÄ«kÄk neaprakstÄ«Å”u; tÄ«klÄ jau ir diezgan daudz.
2. darbība: skriptu secība
Skripts darbojas nepÄrtraukti, un, tiklÄ«dz tas sasniedz beigas, tas sÄkas no jauna. Å ajÄ gadÄ«jumÄ ir divi bloki, kas var Ä«slaicÄ«gi apturÄt skriptu: āaizkavÄtā un āpauzeā.
"Aizkaves" bloks tiek izmantots milisekundes vai mikrosekundes aizkavei. Å is bloks stingri uztur laika intervÄlu, bloÄ·Äjot visas ierÄ«ces darbÄ«bu.
āPauzesā bloks tiek izmantots otrajai (vai mazÄkai) aizkavei, un tas nebloÄ·Ä citu procesu izpildi ierÄ«cÄ.
Ja paÅ”Ä skriptÄ ir bezgalÄ«ga cilpa, kuras pamattekstÄ nav āpauzesā, tulks patstÄvÄ«gi ierosina Ä«su pauzi.
Ja pieŔķirtÄ atmiÅas kaudze ir izsmelta, tulks pÄrtrauks izpildÄ«t tik jaudas izsalkuÅ”u skriptu (esiet piesardzÄ«gs ar rekursÄ«vÄm funkcijÄm).
3. darbība: skriptu atkļūdoŔana
Lai atkļūdotu skriptu, kas jau ir ielÄdÄts ierÄ«cÄ, varat soli pa solim palaist programmas izsekoÅ”anu. Tas var bÅ«t ļoti noderÄ«gi, ja skripta darbÄ«ba atŔķiras no autora iecerÄtÄ. Å ajÄ gadÄ«jumÄ izsekoÅ”ana ļauj autoram Ätri atrast problÄmas avotu un izlabot kļūdu skriptÄ.
ScenÄrijs faktoriÄla aprÄÄ·inÄÅ”anai atkļūdoÅ”anas režīmÄ:
AtkļūdoÅ”anas rÄ«ks ir ļoti vienkÄrÅ”s un sastÄv no trim galvenajÄm pogÄm: "sÄkt", "vienu soli uz priekÅ”u" un "apturÄt" (neaizmirsÄ«sim arÄ« par atkļūdoÅ”anas režīmu "ieiet" un "iziet"). Papildus soli pa solim izsekoÅ”anas varat iestatÄ«t pÄrtraukuma punktu jebkuram blokam (noklikŔķinot uz bloka).
Lai monitorÄ parÄdÄ«tu paÅ”reizÄjÄs parametru (sensoru, releju) vÄrtÄ«bas, izmantojiet bloku ādrukÄÅ”anaā.
Å eit
Sadaļa ziÅkÄrÄ«gajiem. Kas ir zem pÄrsega?
Lai skripti darbotos mÄrÄ·a ierÄ«cÄ, tika izstrÄdÄts baitu koda tulks un montÄtÄjs ar 38 instrukcijÄm. Blockly pirmkodÄ ir iebÅ«vÄts specializÄts koda Ä£enerators, kas vizuÄlos blokus pÄrvÄrÅ” montÄžas instrukcijÄs. PÄc tam Ŕī montÄžas programma tiek pÄrveidota par baitkodu un pÄrsÅ«tÄ«ta uz ierÄ«ci izpildei.
Å Ä«s virtuÄlÄs maŔīnas arhitektÅ«ra ir diezgan vienkÄrÅ”a, un nav Ä«paÅ”as jÄgas to aprakstÄ«t, internetÄ jÅ«s atradÄ«siet daudz rakstu par vienkÄrÅ”Äko virtuÄlo maŔīnu projektÄÅ”anu.
Es parasti pieŔķiru 1000 baitus savas virtuÄlÄs maŔīnas stekam, kas ir pietiekami, lai rezerves. Protams, dziļas rekursijas var izsmelt jebkuru kaudzi, taÄu maz ticams, ka tÄm bÅ«s praktiska izmantoÅ”ana.
IegÅ«tais baitkods ir diezgan kompakts. PiemÄram, baitu kods viena un tÄ paÅ”a faktoriÄla aprÄÄ·inÄÅ”anai ir tikai 49 baiti. Å Ä« ir tÄ vizuÄlÄ forma:
Un Ŕī ir viÅa montÄžas programma:
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
Ja attÄlojuma montÄžas formai nav praktiskas vÄrtÄ«bas, cilne ājavascritā, gluži pretÄji, pieŔķir pazÄ«stamÄku izskatu nekÄ vizuÄlie bloki:
function factorial(num) {
if (num > 1) {
return num + factorial(num - 1);
}
return 1;
}
window.alert(factorial(10));
AttiecÄ«bÄ uz veiktspÄju. Palaižot visvienkÄrÅ”Äko mirgotÄja skriptu, es saÅÄmu 47 kHz kvadrÄtveida vilni osciloskopa ekrÄnÄ (ar procesora takts frekvenci 80 MHz).
Es domÄju, ka tas ir labs rezultÄts, vismaz Å”is Ätrums ir gandrÄ«z desmit reizes lielÄks nekÄ
PÄdÄjÄ daļa
RezumÄjot, teikÅ”u, ka skriptu izmantoÅ”ana ļauj ne tikai programmÄt atseviŔķas ierÄ«ces darbÄ«bas loÄ£iku, bet arÄ« ļauj savienot vairÄkas ierÄ«ces vienÄ mehÄnismÄ, kur dažas ierÄ«ces ietekmÄ citu uzvedÄ«bu.
Es arÄ« atzÄ«mÄju, ka izvÄlÄtÄ skriptu glabÄÅ”anas metode (tieÅ”i paÅ”Äs ierÄ«cÄs, nevis serverÄ«) vienkÄrÅ”o jau strÄdÄjoÅ”u ierÄ«Äu pÄrslÄgÅ”anu uz citu serveri, piemÄram, uz mÄjas Raspberry, Å”eit
Tas arÄ« viss, priecÄÅ”os dzirdÄt padomus un konstruktÄ«vu kritiku.
Avots: www.habr.com