Sonoff Basic vizuālā programmēšana

Sonoff Basic vizuālā programmēšana
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ē mgt24 (ja vēl nav reģistrēts) un piesakieties, izmantojot savu kontu.
PieslēgtiesSonoff Basic vizuālā programmēšana

Lai izveidotu vadības paneli jaunai ierīcei, noklikšķiniet uz pogas “+”.
Paneļa izveides piemērsSonoff Basic vizuālā programmēšana

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ērsSonoff Basic vizuālā programmēšana

2. darbība. Atkārtoti uzzibešojiet ierīci

Lietojumprogrammas izmantošana XTCOM_UTIL lejupielādējiet programmaparatūru PLC Sonoff Basic uz ierīci, šim nolūkam jums būs nepieciešams USB-TTL pārveidotājs. Šeit norādījums и Video instrukcija.

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ērsSonoff Basic vizuālā programmēšana

Saglabājiet iestatījumus un restartējiet ierīci.
Šeit Video instrukcija.

4. darbība. Sensoru pievienošana (pēc izvēles)

Pašreizējā programmaparatūra atbalsta līdz četriem ds18b20 temperatūras sensoriem. Šeit Video instrukcija sensoru uzstādīšanai. Acīmredzot šis solis būs visgrūtākais, jo tam būs vajadzīgas taisnas rokas un lodāmurs.

II sadaļa. Vizuālā programmēšana

1. darbība. Izveidojiet skriptus

Izmanto kā programmēšanas vidi Bloķēti, vide ir viegli apgūstama, tāpēc, lai izveidotu vienkāršus skriptus, nav jābūt programmētājam.

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 sarakstsSonoff Basic vizuālā programmēšana

Scenārija piemērs slodzes cikliskai ieslēgšanai un izslēgšanai (1 Hz):
Sonoff Basic vizuālā programmēšana

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.
Sonoff Basic vizuālā programmēšana

Scenārijs termostatam (bez histerēzes):
Sonoff Basic vizuālā programmēšana

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. izglītojošs materiāls par Blockly.

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ā:
Sonoff Basic vizuālā programmēšana

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 pārskata video par atkļūdotāja izmantošanu.

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:
Sonoff Basic vizuālā programmēšana

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).
Sonoff Basic vizuālā programmēšanaSonoff Basic vizuālā programmēšana
Es domāju, ka tas ir labs rezultāts, vismaz šis ātrums ir gandrīz desmit reizes lielāks nekā Lua и Espruino.

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 norādījums.

Tas arī viss, priecāšos dzirdēt padomus un konstruktīvu kritiku.

Avots: www.habr.com

Pievieno komentāru