Programim vizual për Sonoff Basic

Programim vizual për Sonoff Basic
Një artikull se si të krijoni një kontrollues logjik të programueshëm nga një pajisje e lirë kineze. Një pajisje e tillë do ta gjejë përdorimin e saj si në automatizimin e shtëpisë ashtu edhe si klasa praktike në shkencat kompjuterike shkollore.
Për referencë, si parazgjedhje, programi Sonoff Basic funksionon me një aplikacion celular përmes një shërbimi kinez cloud; pas modifikimit të propozuar, i gjithë ndërveprimi i mëtejshëm me këtë pajisje do të jetë i mundur në shfletues.

Seksioni I. Lidhja e Sonoff me shërbimin MGT24

Hapi 1: Krijoni një panel kontrolli

Regjistrohu në sit mgt24 (nëse nuk jeni regjistruar tashmë) dhe identifikohuni duke përdorur llogarinë tuaj.
IdentifikohuProgramim vizual për Sonoff Basic

Për të krijuar një panel kontrolli për një pajisje të re, klikoni në butonin "+".
Shembull i krijimit të një paneliProgramim vizual për Sonoff Basic

Pasi të krijohet paneli, ai do të shfaqet në listën tuaj të paneleve.

Në skedën "Setup" të panelit të krijuar, gjeni fushat "ID-ja e pajisjes" dhe "Çelësi i autorizimit"; në të ardhmen, ky informacion do të kërkohet kur konfiguroni pajisjen Sonoff.
Shembull i skedësProgramim vizual për Sonoff Basic

Hapi 2. Ndizni pajisjen

Duke përdorur shërbimin XTCOM_UTIL shkarkoni firmware-in PLC Sonoff Basic në pajisje, për këtë do t'ju duhet një konvertues USB-TTL. Këtu udhëzim и Video udhëzim.

Hapi 3. Konfigurimi i pajisjes

Aplikoni energjinë në pajisje, pasi LED të ndizet, shtypni butonin dhe mbajeni të shtypur derisa LED të fillojë të pulsojë periodikisht në mënyrë të barabartë.
Në këtë moment, do të shfaqet një rrjet i ri wi-fi i quajtur "PLC Sonoff Basic", lidhni kompjuterin tuaj me këtë rrjet.
Shpjegimi i treguesit LED

Treguesi LED
Statusi i pajisjes

ndezje periodike e dyfishtë
nuk ka lidhje me ruterin

shkëlqen vazhdimisht
lidhje e vendosur me ruterin

ndezje periodike uniforme
modaliteti i pikës së hyrjes wi-fi

i shuar
Nuk ka furnizim me energji elektrike

Hapni një shfletues interneti dhe futni tekstin "192.168.4.1" në shiritin e adresave, shkoni te faqja e cilësimeve të rrjetit të pajisjes.

Plotësoni fushat si më poshtë:

  • "Emri i rrjetit" dhe "Fjalëkalimi" (për të lidhur pajisjen me ruterin tuaj wi-fi në shtëpi).
  • "ID e pajisjes" dhe "Çelësi i autorizimit" (për të autorizuar pajisjen në shërbimin MGT24).

Shembull i vendosjes së parametrave të rrjetit të pajisjesProgramim vizual për Sonoff Basic

Ruani cilësimet dhe rindizni pajisjen.
Këtu Video udhëzim.

Hapi 4. Lidhja e sensorëve (opsionale)

Firmware-i aktual mbështet deri në katër sensorë të temperaturës ds18b20. Këtu Video udhëzim për instalimin e sensorëve. Me sa duket, ky hap do të jetë më i vështiri, pasi do të kërkojë krahë të drejtë dhe një saldator.

Seksioni II. Programim vizual

Hapi 1: Krijoni Skriptet

Përdoret si një mjedis programimi Bllokimisht, mjedisi është i lehtë për t'u mësuar, kështu që nuk keni nevojë të jeni programues për të krijuar skripta të thjeshta.

Shtova blloqe të specializuara për shkrimin dhe leximin e parametrave të pajisjes. Çdo parametër aksesohet me emër. Për parametrat e pajisjeve në distancë, përdoren emrat e përbërë: "parameter@device".
Lista rënëse e opsioneveProgramim vizual për Sonoff Basic

Shembull i skenarit për ndezjen dhe fikjen ciklike të ngarkesës (1Hz):
Programim vizual për Sonoff Basic

Një shembull i një skripti që sinkronizon funksionimin e dy pajisjeve të veçanta. Gjegjësisht, releja e pajisjes së synuar përsërit funksionimin e stafetës së pajisjes në distancë.
Programim vizual për Sonoff Basic

Skenari për termostatin (pa histerezë):
Programim vizual për Sonoff Basic

Për të krijuar skripta më komplekse, mund të përdorni variabla, sythe, funksione (me argumente) dhe konstruksione të tjera. Unë nuk do t'i përshkruaj të gjitha këto në detaje këtu; tashmë ka shumë në rrjet. material edukativ për Blockly.

Hapi 2: Rendi i Skripteve

Skenari funksionon vazhdimisht dhe sapo arrin në fund, fillon përsëri. Në këtë rast, ekzistojnë dy blloqe që mund të ndalojnë përkohësisht skriptin, "vonesa" dhe "pauzë".
Blloku "vonesa" përdoret për vonesa milisekonda ose mikrosekondë. Ky bllok ruan rreptësisht intervalin kohor, duke bllokuar funksionimin e të gjithë pajisjes.
Blloku "pauzë" përdoret për vonesa të dyta (ose më pak) dhe nuk bllokon ekzekutimin e proceseve të tjera në pajisje.
Nëse vetë skenari përmban një lak të pafund, trupi i të cilit nuk përmban "pauzë", përkthyesi fillon në mënyrë të pavarur një pauzë të shkurtër.
Nëse grumbulli i memories së caktuar është shteruar, përkthyesi do të ndalojë së ekzekutuari një skrip të tillë të uritur (kini kujdes me funksionet rekursive).

Hapi 3: Korrigjimi i skripteve

Për të korrigjuar një skript që tashmë është ngarkuar në pajisje, mund të ekzekutoni një gjurmim të programit hap pas hapi. Kjo mund të jetë jashtëzakonisht e dobishme kur sjellja e skenarit doli të ishte e ndryshme nga ajo që synonte autori. Në këtë rast, gjurmimi i lejon autorit të gjejë shpejt burimin e problemit dhe të korrigjojë gabimin në skenar.

Skenari për llogaritjen e faktorialit në modalitetin e korrigjimit:
Programim vizual për Sonoff Basic

Mjeti i korrigjimit është shumë i thjeshtë dhe përbëhet nga tre butona kryesorë: "fillimi", "një hap përpara" dhe "ndal" (le të mos harrojmë gjithashtu modalitetin e korrigjimit "hyrje" dhe "dalje"). Përveç gjurmimit hap pas hapi, mund të vendosni një pikë ndërprerjeje në çdo bllok (duke klikuar në bllok).
Për të shfaqur vlerat aktuale të parametrave (sensorë, reletë) në monitor, përdorni bllokun "print".
Këtu video përmbledhje në lidhje me përdorimin e korrigjuesit.

Seksioni për kuriozët. Çfarë ka nën kapuç?

Në mënyrë që skriptet të funksionojnë në pajisjen e synuar, u zhvilluan një interpretues bajtkodi dhe një asembler me 38 udhëzime. Kodi burimor i Blockly ka një gjenerator të specializuar kodi të integruar që i konverton blloqet vizuale në udhëzime montimi. Më pas, ky program assembler konvertohet në bytecode dhe transferohet në pajisje për ekzekutim.
Arkitektura e kësaj makinerie virtuale është mjaft e thjeshtë dhe nuk ka asnjë pikë të veçantë për ta përshkruar atë; në internet do të gjeni shumë artikuj rreth dizajnimit të makinave virtuale më të thjeshta.
Unë zakonisht ndaj 1000 bajt për pirgun e makinës sime virtuale, të cilat janë të mjaftueshme për të kursyer. Sigurisht, rekursionet e thella mund të shterojnë çdo pirg, por nuk ka gjasa të kenë ndonjë përdorim praktik.

Bajtkodi që rezulton është mjaft kompakt. Si shembull, bajtkodi për llogaritjen e të njëjtit faktorial është vetëm 49 bajt. Kjo është forma e saj vizuale:
Programim vizual për Sonoff Basic

Dhe ky është programi i tij asembler:

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

Nëse forma e montimit të përfaqësimit nuk ka ndonjë vlerë praktike, atëherë skeda "javascrit", përkundrazi, jep një pamje më të njohur sesa blloqet vizuale:

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

window.alert(factorial(10));

Në lidhje me performancën. Kur ekzekutova skriptin më të thjeshtë flasher, mora një valë katrore 47 kHz në ekranin e oshiloskopit (me një shpejtësi të orës së procesorit prej 80 MHz).
Programim vizual për Sonoff BasicProgramim vizual për Sonoff Basic
Unë mendoj se ky është një rezultat i mirë, të paktën kjo shpejtësi është pothuajse dhjetë herë më e shpejtë se Lua и Espruino.

Pjesa përfundimtare

Për ta përmbledhur, do të them se përdorimi i skripteve na lejon jo vetëm të programojmë logjikën e funksionimit të një pajisjeje të veçantë, por gjithashtu bën të mundur lidhjen e disa pajisjeve në një mekanizëm të vetëm, ku disa pajisje ndikojnë në sjelljen e të tjerëve.
Unë gjithashtu vërej se metoda e zgjedhur e ruajtjes së skripteve (direkt në vetë pajisjet, dhe jo në server) thjeshton kalimin e pajisjeve tashmë që punojnë në një server tjetër, për shembull në një Raspberry në shtëpi, këtu udhëzim.

Kjo është e gjitha, do të jem i lumtur të dëgjoj këshilla dhe kritika konstruktive.

Burimi: www.habr.com

Shto një koment