Sonoff Basic-erako programazio bisuala

Sonoff Basic-erako programazio bisuala
Txinako gailu merke batetik kontrolagailu logiko programagarri bat nola sortzeari buruzko artikulu bat. Horrelako gailu batek bere erabilera aurkituko du bai domotikan bai eskola-informatikako klase praktiko gisa.
Erreferentzia gisa, lehenespenez Sonoff Basic programak aplikazio mugikor batekin funtzionatzen du txinatar hodeiko zerbitzu baten bidez; Proposatutako aldaketaren ondoren, gailu honekin beste interakzio guztiak posible izango dira arakatzailean.

I. atala. Sonoff MGT24 zerbitzura konektatzea

1. urratsa: Sortu kontrol panel bat

Eman izena gunean mgt24 (dagoeneko erregistratuta ez badago) eta hasi saioa zure kontua erabiliz.
Saioa hasiSonoff Basic-erako programazio bisuala

Gailu berri baterako kontrol panel bat sortzeko, egin klik "+" botoian.
Panel bat sortzeko adibideaSonoff Basic-erako programazio bisuala

Panela sortu ondoren, zure panelen zerrendan agertuko da.

Sortutako paneleko "Konfigurazioa" fitxan, bilatu "Gailuaren IDa" eta "Baimen-gakoa" eremuak; etorkizunean, informazio hori beharrezkoa izango da Sonoff gailua konfiguratzerakoan.
Fitxa adibideaSonoff Basic-erako programazio bisuala

2. urratsa. Berriz gailua

Utilitatea erabiliz XTCOM_UTIL deskargatu firmwarea PLC Sonoff Basic gailura, horretarako USB-TTL bihurgailu bat beharko duzu. Hemen Instrukzio ΠΈ Bideoaren instrukzioa.

3. urratsa. Gailuaren konfigurazioa

Aplikatu gailuari, LEDa piztu ondoren, sakatu botoia eta eutsi sakatuta LEDa aldian-aldian distiratzen hasten den arte.
Momentu honetan, "PLC Sonoff Basic" izeneko wi-fi sare berri bat agertuko da, konektatu zure ordenagailua sare honetara.
LED adierazlearen azalpena

LED-adierazpena
Gailuaren egoera

aldizkako keinu bikoitza
bideratzailearekin konexiorik ez

etengabe distira egiten du
bideratzailearekin ezarrita dagoen konexioa

aldizkako keinu uniformea
Wi-Fi sarbide puntu modua

itzali
Ez dago elikadura hornidurarik

Ireki Interneteko arakatzailea eta idatzi "192.168.4.1" testua helbide-barran, joan gailuaren sareko ezarpenen orrira.

Bete eremuak honela:

  • "Sarearen izena" eta "Pasahitza" (gailua zure etxeko wi-fi bideratzailearekin lotzeko).
  • β€œGailuaren IDa” eta β€œBaimen-gakoa” (MGT24 zerbitzuan gailua baimentzeko).

Gailuaren sare-parametroak ezartzeko adibideaSonoff Basic-erako programazio bisuala

Gorde ezarpenak eta berrabiarazi gailua.
Hemen Bideoaren instrukzioa.

4. urratsa. Sentsoreak konektatzea (aukerakoa)

Egungo firmwareak lau ds18b20 tenperatura sentsore onartzen ditu. Hemen Bideoaren instrukzioa sentsoreak instalatzeko. Antza denez, urrats hau izango da zailena, beso zuzenak eta soldadura bat beharko baititu.

II. atala. Programazio bisuala

1. urratsa: gidoiak sortu

Programazio ingurune gisa erabiltzen da Bloke, ingurunea ikasteko erraza da, beraz, ez duzu programatzaile izan behar script soilak sortzeko.

Gailuaren parametroak idazteko eta irakurtzeko bloke espezializatuak gehitu ditut. Edozein parametro izenaren bidez sartzen da. Urruneko gailuen parametroetarako, izen konposatuak erabiltzen dira: β€œparametro@gailua”.
Aukeren goitibeherako zerrendaSonoff Basic-erako programazio bisuala

Karga pizteko eta itzaltzeko ziklikorako eszenatoki adibidea (1Hz):
Sonoff Basic-erako programazio bisuala

Bi gailu ezberdinen funtzionamendua sinkronizatzen duen script baten adibidea. Hots, xede gailuaren erreleak urruneko gailuaren errelearen funtzionamendua errepikatzen du.
Sonoff Basic-erako programazio bisuala

Termostatoaren agertokia (histeresirik gabe):
Sonoff Basic-erako programazio bisuala

Script konplexuagoak sortzeko, aldagaiak, begiztak, funtzioak (argumentuekin) eta beste eraikuntza batzuk erabil ditzakezu. Ez dut hemen hau guztia zehatz-mehatz deskribatuko; sarean dagoeneko asko dago. Blockly-ri buruzko hezkuntza-materiala.

2. urratsa: gidoien ordena

Gidoia etengabe exekutatzen da, eta amaierara iritsi bezain laster, berriro hasten da. Kasu honetan, gidoia aldi baterako pausatu dezaketen bi bloke daude, "atzerapena" eta "pausatu".
"Atzerapena" blokea milisegundo edo mikrosegundoko atzerapenetarako erabiltzen da. Bloke honek denbora tartea zorrotz mantentzen du, gailu osoaren funtzionamendua blokeatzen du.
"Pausa" blokea bigarren (edo gutxiago) atzerapenetarako erabiltzen da, eta ez du blokeatzen gailuan beste prozesu batzuen exekuzioa.
Scriptak berak begizta infinitu bat badu, zeinaren gorputzak "pausea" ez badu, interpreteak modu independentean eten labur bat hasten du.
Esleitutako memoria pila agortzen bada, interpreteak botere-gose handiko script bat exekutatzeari utziko dio (kontuz funtzio errekurtsiboekin).

3. urratsa: Scriptak araztea

Dagoeneko gailuan kargatu den script bat arazketa egiteko, pausoz pauso programaren traza exekutatu dezakezu. Hau oso erabilgarria izan daiteke gidoiaren jokabidea egileak nahi zuenaren ezberdina izan ohi denean. Kasu honetan, trazatzeak egileari arazoaren iturria azkar aurkitzeko eta script-eko akatsa zuzentzeko aukera ematen dio.

Arazte moduan faktoriala kalkulatzeko eszenatokia:
Sonoff Basic-erako programazio bisuala

Arazketa tresna oso sinplea da eta hiru botoi nagusi ditu: "hasi", "pauso bat aurrera" eta "gelditu" (ez ditzagun "sartu" eta "irten" arazketa moduaz ere ahaztu). Urratsez urratseko trazatzeaz gain, edozein bloketan eten puntu bat ezar dezakezu (blokean klik eginez).
Parametroen egungo balioak (sentsoreak, erreleak) monitorean bistaratzeko, erabili "inprimatu" blokea.
Hemen ikuspegi orokorra bideoa arazketa erabiltzeari buruz.

Jakin-minentzako atala. Zer dago kaputxa azpian?

Scriptek xede gailuan funtzionatzeko, bytecode interprete bat eta 38 instrukzio dituen mihiztagailu bat garatu ziren. Blockly-ren iturburu-kodeak kode-sorgailu espezializatu bat du barnean, bloke bisualak muntatzeko argibide bihurtzen dituena. Ondoren, muntatzaile-programa hau bytecode bihurtzen da eta gailura transferitzen da exekutatzeko.
Makina birtual honen arkitektura nahiko sinplea da eta ez du ezertarako balio berau deskribatzeak; Interneten makina birtual errazenak diseinatzeko artikulu ugari aurkituko dituzu.
Normalean 1000 byte esleitzen ditut nire makina birtualaren pilarako, eta hori nahikoa da. Jakina, errekurtsio sakonek edozein pila agor dezakete, baina nekez izango dute erabilera praktikorik.

Lortutako bytecode nahiko trinkoa da. Adibide gisa, faktorial bera kalkulatzeko byte-kodea 49 byte baino ez da. Hau da bere forma bisuala:
Sonoff Basic-erako programazio bisuala

Eta hau da bere muntatzaile 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

Irudikapen-formak ez badu balio praktikorik, "javascrit" fitxak, aitzitik, ikusizko blokeek baino itxura ezagunagoa ematen du:

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

window.alert(factorial(10));

Errendimenduari dagokionez. Flasher script sinpleena exekutatu nuenean, 47 kHz-ko uhin karratu bat lortu nuen osziloskopioaren pantailan (80 MHz-ko prozesadorearen erlojuaren abiaduran).
Sonoff Basic-erako programazio bisualaSonoff Basic-erako programazio bisuala
Emaitza ona dela uste dut, abiadura hori baino ia hamar aldiz azkarragoa da behintzat Lua ΠΈ Espruino.

Azken zatia

Laburbilduz, esango dut scripten erabilerak aparteko gailu baten funtzionamenduaren logika programatzeaz gain, hainbat gailu mekanismo bakarrean konektatzea ahalbidetzen duela, non gailu batzuek besteen portaeran eragiten dutela.
Gainera, ohartzen naiz scriptak gordetzeko aukeratutako metodoak (zuzenean gailuetan bertan, eta ez zerbitzarian) dagoeneko lanean ari diren gailuak beste zerbitzari batera aldatzea errazten duela, adibidez etxeko Raspberry batera, hemen. Instrukzio.

Hori da guztia, poztuko naiz aholkuak eta kritika eraikitzaileak entzutea.

Iturria: www.habr.com

Gehitu iruzkin berria