Pwogramasyon vizyèl pou Sonoff Basic

Pwogramasyon vizyèl pou Sonoff Basic
Yon atik sou fason yo kreye yon kontwolè lojik pwogramasyon soti nan yon aparèy bon mache Chinwa. Yon aparèy konsa ap jwenn itilizasyon li tou de nan automatisation lakay ak kòm klas pratik nan syans enfòmatik lekòl la.
Pou referans, pa default pwogram Sonoff Basic travay ak yon aplikasyon mobil atravè yon sèvis nwaj Chinwa apre modifikasyon yo pwopoze a, tout plis entèraksyon ak aparèy sa a pral posib nan navigatè a.

Seksyon I. Konekte Sonoff ak sèvis MGT24 la

Etap 1: Kreye yon panèl kontwòl

Enskri sou sit la mgt24 (si pa deja anrejistre) epi konekte ak kont ou.
Login nan sistèm lanPwogramasyon vizyèl pou Sonoff Basic

Pou kreye yon panèl kontwòl pou yon nouvo aparèy, klike sou bouton "+".
Egzanp pou kreye yon panèlPwogramasyon vizyèl pou Sonoff Basic

Yon fwa panèl la kreye, li pral parèt nan lis panno ou yo.

Nan tab la "Enstalasyon" nan panèl la kreye, jwenn "ID Aparèy la" ak "Kle Otorizasyon" nan lavni, enfòmasyon sa a pral obligatwa lè w ap mete aparèy la Sonoff.
Tab egzanpPwogramasyon vizyèl pou Sonoff Basic

Etap 2. Reflash aparèy la

Sèvi ak sèvis piblik la XTCOM_UTIL telechaje firmwèr la PLC Sonoff Basic nan aparèy la, pou sa w ap bezwen yon konvètisè USB-TTL. Isit la enstriksyon и Enstriksyon videyo.

Etap 3: Mete kanpe aparèy ou an

Aplike pouvwa a nan aparèy la, apre ki ap dirije limyè a leve, peze bouton an epi kenbe li bourade jiskaske dirije a kòmanse flache detanzantan respire.
Nan moman sa a, yon nouvo rezo wi-fi ki rele "PLC Sonoff Basic" ap parèt, konekte òdinatè w lan ak rezo sa a.
Eksplikasyon sou endikasyon ki ap dirije

Endikasyon ki ap dirije
Estati aparèy la

peryodik doub flache
pa gen koneksyon ak routeur

klere kontinyèlman
koneksyon etabli ak routeur la

flache inifòm peryodik
mòd pwen aksè wi-fi

etenn
Pa gen ekipman pou pouvwa

Louvri yon navigatè entènèt epi antre tèks "192.168.4.1" nan ba adrès la, ale nan paj paramèt rezo aparèy la.

Ranpli jaden yo jan sa a:

  • "Non rezo" ak "Modpas" (pou konekte aparèy la ak routeur Wi-Fi lakay ou).
  • "Idantifikasyon aparèy" ak "Kle otorizasyon" (pou otorize aparèy la sou sèvis MGT24 la).

Egzanp pou mete paramèt rezo aparèy laPwogramasyon vizyèl pou Sonoff Basic

Sove anviwònman yo epi rdemare aparèy la.
Isit la Enstriksyon videyo.

Etap 4. Konekte detèktè (si ou vle)

Firmware aktyèl la sipòte jiska kat detèktè tanperati ds18b20. Isit la Enstriksyon videyo pou enstalasyon detèktè. Aparamman, etap sa a pral pi difisil la, paske li pral mande pou bra dwat ak yon fè soude.

Seksyon II. Programmation vizyèl

Etap 1: Kreye Scripts

Itilize kòm yon anviwònman pwogramasyon bloke, anviwònman an fasil pou aprann, kidonk ou pa bezwen yon pwogramè pou kreye scripts senp.

Mwen te ajoute blòk espesyalize pou ekri ak li paramèt aparèy. Nenpòt paramèt jwenn aksè pa non. Pou paramèt aparèy aleka yo, yo itilize non konpoze: "parameter@device".
Lis deroule nan opsyonPwogramasyon vizyèl pou Sonoff Basic

Egzanp senaryo pou chanje siklik sou ak sou chaj la (1Hz):
Pwogramasyon vizyèl pou Sonoff Basic

Yon egzanp yon script senkronize operasyon an nan de aparèy separe. Savwa, relè a nan aparèy la sib repete operasyon an nan relè a nan aparèy la aleka.
Pwogramasyon vizyèl pou Sonoff Basic

Senaryo pou tèmostat (san isterèz):
Pwogramasyon vizyèl pou Sonoff Basic

Pou kreye scripts pi konplèks, ou ka itilize varyab, bouk, fonksyon (ak agiman) ak lòt konstwi. Mwen pa pral dekri tout bagay sa yo an detay isit la deja gen anpil sou nèt la. materyèl edikatif sou Blockly.

Etap 2: Lòd Scripts

Script la kouri kontinyèlman, epi le pli vit ke li rive nan fen li, li kòmanse ankò. Gen de blòk ki ka pran yon poz tanporèman script la, "reta" ak "poz".
Yo itilize blòk "reta" pou reta milisgond oswa mikrosgond. Blòk sa a estrikteman kenbe entèval tan an, bloke operasyon an nan aparèy la tout antye.
Yo itilize blòk "poz" pou dezyèm (oswa mwens) reta, epi li pa bloke ekzekisyon lòt pwosesis nan aparèy la.
Si script nan tèt li gen yon bouk enfini, kò a pa gen "poz", entèprèt la poukont li kòmanse yon ti poz.
Si pile memwa atribye ba yo fin itilize, entèprèt la ap sispann egzekite yon script ki grangou pouvwa konsa (fè atansyon ak fonksyon rekursif).

Etap 3: Debogaj Scripts

Pou debug yon script ki te deja chaje nan aparèy la, ou ka kouri yon tras pwogram etap pa etap. Sa a ka trè itil lè konpòtman an nan script la te tounen diferan de sa otè a te gen entansyon. Nan ka sa a, trase pèmèt otè a byen vit jwenn sous pwoblèm nan epi korije erè a nan script la.

Senaryo pou kalkile faktè nan mòd debug:
Pwogramasyon vizyèl pou Sonoff Basic

Zouti debug la trè senp epi li konsiste de twa bouton prensipal: "kòmanse", "yon etap pi devan" ak "sispann" (se pou nou pa bliye tou sou "antre" ak "sòti" mòd debug). Anplis de trase etap-pa-etap, ou ka mete yon breakpoint sou nenpòt blòk (pa klike sou blòk la).
Pou montre valè aktyèl yo nan paramèt (detèktè, rle) nan monitè a, sèvi ak "enprime" blòk la.
Isit la apèsi videyo sou lè l sèvi avèk debugger la.

Seksyon pou kirye yo. Ki sa ki anba kapo a?

Nan lòd pou scripts yo travay sou aparèy sib la, yo te devlope yon entèprèt bytecode ak yon asanblaj ki gen 38 enstriksyon yo. Kòd sous Blockly a gen yon dèlko kòd espesyalize ki bati nan li ki konvèti blòk vizyèl nan enstriksyon asanble. Imedyatman, pwogram asanble sa a konvèti nan bytecode epi yo transfere nan aparèy la pou ekzekisyon.
Achitekti machin vityèl sa a se byen senp epi pa gen okenn pwen patikilye nan dekri li sou entènèt la ou pral jwenn anpil atik sou konsepsyon machin yo vityèl ki pi senp.
Mwen anjeneral asiyen 1000 bytes pou pil machin vityèl mwen an, ki ase pou rezèv. Natirèlman, repiyans gwo twou san fon ka fin itilize nenpòt pil, men yo pa gen anpil chans pou yo gen nenpòt itilizasyon pratik.

Bytecode a ki kapab lakòz se byen kontra enfòmèl ant. Kòm yon egzanp, bytecode pou kalkile menm faktori a se sèlman 49 bytes. Sa a se fòm vizyèl li yo:
Pwogramasyon vizyèl pou Sonoff Basic

Epi sa a se pwogram asanblaj li a:

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

Si fòm asanble reprezantasyon an pa gen okenn valè pratik, Lè sa a, tab "javascrit" la, okontrè, bay yon gade ki pi abitye pase blòk vizyèl:

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

window.alert(factorial(10));

Konsènan pèfòmans. Lè mwen te kouri script flasher ki pi senp la, mwen te resevwa yon onn kare 47 kHz sou ekran osiloskop la (a yon vitès revèy processeur 80 MHz).
Pwogramasyon vizyèl pou Sonoff BasicPwogramasyon vizyèl pou Sonoff Basic
Mwen panse ke sa a se yon bon rezilta, omwen vitès sa a se prèske dis fwa pi vit pase lua и Espruino.

Pati final la

Pou rezime, mwen pral di ke itilizasyon script pèmèt nou pa sèlman pwograme lojik operasyon an nan yon aparèy separe, men tou, li fè li posib konekte plizyè aparèy nan yon sèl mekanis, kote kèk aparèy enfliyanse konpòtman an nan lòt moun.
Mwen sonje tou ke metòd la chwazi pou estoke scripts (dirèkteman nan aparèy yo tèt yo, epi yo pa sou sèvè a) senplifye chanje nan aparèy ki deja travay nan yon lòt sèvè, pou egzanp nan yon Franbwaz lakay, isit la. enstriksyon.

Sa a tout, mwen pral kontan tande konsèy ak kritik konstriktif.

Sous: www.habr.com

Add nouvo kòmantè