Visual programming alang sa Sonoff Basic

Visual programming alang sa Sonoff Basic
Usa ka artikulo kung giunsa paghimo ang usa ka programmable logic controller gikan sa usa ka barato nga aparato sa China. Ang ingon nga aparato makit-an ang paggamit niini sa automation sa balay ug ingon praktikal nga mga klase sa siyensya sa kompyuter sa eskuylahan.
Alang sa pakisayran, pinaagi sa default ang Sonoff Basic nga programa nagtrabaho sa usa ka mobile application pinaagi sa Chinese cloud service; pagkahuman sa gisugyot nga pagbag-o, ang tanan nga dugang nga interaksyon sa kini nga aparato mahimong posible sa browser.

Seksyon I. Pagkonektar sa Sonoff sa serbisyo sa MGT24

Lakang 1: Paghimo og control panel

Pagrehistro sa site mgt24 (kung wala pa nakarehistro) ug pag-log in gamit ang imong account.
SulodVisual programming alang sa Sonoff Basic

Aron makahimo usa ka control panel alang sa usa ka bag-ong aparato, i-klik ang "+" nga buton.
Pananglitan sa paghimo og panelVisual programming alang sa Sonoff Basic

Kung nahimo na ang panel, makita kini sa imong lista sa mga panel.

Sa tab nga "Setup" sa gibuhat nga panel, pangitaa ang "Device ID" ug "Authorization Key" nga mga natad; sa umaabot, kini nga impormasyon gikinahanglan sa pag-set up sa Sonoff device.
Pananglitan sa tabVisual programming alang sa Sonoff Basic

Lakang 2. I-reflash ang device

Paggamit sa utility XTCOM_UTIL download sa firmware PLC Sonoff Basic sa device, para niini magkinahanglan ka ug USB-TTL converter. Dinhi manwal ΠΈ Instruksyon sa video.

Lakang 3. Pag-setup sa device

Ibutang ang gahum sa aparato, pagkahuman sa suga sa LED, pindota ang buton ug pugngi kini hangtod nga ang LED magsugod sa pagkidlap matag karon ug unya.
Niining higayona, usa ka bag-ong network sa wi-fi nga gitawag nga "PLC Sonoff Basic" ang makita, ikonektar ang imong kompyuter sa kini nga network.
Pagpatin-aw sa indikasyon sa LED

LED timailhan
Kahimtang sa Device

periodic double flashing
walay koneksyon sa router

nagsidlak nga padayon
koneksyon nga gitukod sa router

regular nga uniporme nga pagkidlap
Wi-fi access point mode

napalong
Walay suplay sa kuryente

Ablihi ang usa ka browser sa Internet ug isulod ang teksto nga "192.168.4.1" sa address bar, adto sa panid sa mga setting sa network sa aparato.

Pun-a ang mga uma sama sa mosunod:

  • "Ngalan sa network" ug "Password" (aron i-link ang aparato sa imong home wi-fi router).
  • "Device ID" ug "Awtorisasyon yawe" (aron pagtugot sa aparato sa serbisyo sa MGT24).

Pananglitan sa pag-set sa mga parameter sa network sa deviceVisual programming alang sa Sonoff Basic

I-save ang mga setting ug i-reboot ang device.
kini mao ang Instruksyon sa video.

Lakang 4. Pagkonektar sa mga sensor (opsyonal)

Ang kasamtangan nga firmware nagsuporta hangtod sa upat ka ds18b20 nga mga sensor sa temperatura. Dinhi Instruksyon sa video alang sa pag-instalar sa mga sensor. Dayag, kini nga lakang mao ang labing lisud, tungod kay kini magkinahanglan og tul-id nga mga bukton ug usa ka soldering iron.

Seksyon II. Visual nga programming

Lakang 1: Paghimo og mga Script

Gigamit ingon usa ka palibot sa programming Uban ang Iro, ang palibot sayon ​​nga makat-unan, mao nga dili ka kinahanglan nga usa ka programmer aron makahimo og yano nga mga script.

Nagdugang ko og espesyal nga mga bloke para sa pagsulat ug pagbasa sa mga parameter sa device. Ang bisan unsang parameter ma-access pinaagi sa ngalan. Para sa mga parameter sa layo nga mga himan, ang mga ngalan sa compound gigamit: "parameter@device".
Dropdown nga lista sa mga kapilianVisual programming alang sa Sonoff Basic

Pananglitan nga senaryo para sa cyclic switching on ug off sa load (1Hz):
Visual programming alang sa Sonoff Basic

Usa ka pananglitan sa usa ka script nga nag-synchronize sa operasyon sa duha ka managlahing device. Sa ato pa, ang relay sa target nga aparato gisubli ang operasyon sa relay sa hilit nga aparato.
Visual programming alang sa Sonoff Basic

Scenario para sa thermostat (walay hysteresis):
Visual programming alang sa Sonoff Basic

Aron makahimo og mas komplikado nga mga script, mahimo nimong gamiton ang mga variable, loops, functions (uban ang mga argumento) ug uban pang mga pagtukod. Dili nako ihulagway kining tanan sa detalye dinhi; daghan na kaayo sa net. materyal nga pang-edukasyon bahin sa Blockly.

Lakang 2: Order of Scripts

Ang script padayon nga nagdagan, ug sa diha nga kini moabut sa iyang katapusan, kini magsugod pag-usab. Sa kini nga kaso, adunay duha ka mga bloke nga mahimong temporaryo nga mohunong sa script, "paglangan" ug "paghunong".
Ang "paglangan" block gigamit alang sa millisecond o microsecond nga mga paglangan. Kini nga block hugot nga nagmintinar sa agwat sa oras, nga nagbabag sa operasyon sa tibuok device.
Ang block nga "pause" gigamit alang sa ikaduha (o dili kaayo) mga paglangan, ug dili kini makababag sa pagpatuman sa ubang mga proseso sa aparato.
Kung ang script mismo naglangkob sa usa ka walay katapusan nga loop, ang lawas niini walay "pause", ang tighubad independente nga nagsugod sa usa ka mubo nga paghunong.
Kung ang gigahin nga memory stack nahurot na, ang tighubad mohunong sa pagpatuman sa ingon nga gigutom nga script sa gahum (pag-amping sa mga recursive function).

Lakang 3: Pag-debug sa mga Script

Aron ma-debug ang usa ka script nga na-load na sa aparato, mahimo nimong ipadagan ang usa ka pagsubay sa programa nga lakang sa lakang. Mahimo kini nga labi ka mapuslanon kung ang pamatasan sa script nahimo nga lahi sa kung unsa ang gituyo sa tagsulat. Sa kini nga kaso, ang pagsubay nagtugot sa tagsulat nga dali nga makit-an ang gigikanan sa problema ug matul-id ang sayup sa script.

Sitwasyon para sa pagkalkulo sa factorial sa debug mode:
Visual programming alang sa Sonoff Basic

Ang himan sa pag-debug kay yano ra ug gilangkuban sa tulo ka mga nag-unang buton: "pagsugod", "usa ka lakang sa unahan" ug "paghunong" (dili usab nato kalimtan ang "pagsulod" ug "paggawas" nga debug mode). Agi og dugang sa sunod-sunod nga pagsubay, mahimo nimong ibutang ang usa ka breakpoint sa bisan unsang block (pinaagi sa pag-klik sa block).
Aron ipakita ang kasamtangan nga mga bili sa mga parameter (sensor, relay) sa monitor, gamita ang "print" block.
kini mao ang overview nga video mahitungod sa paggamit sa debugger.

Seksyon para sa mga kuryuso. Unsa ang naa sa ilawom sa tabon?

Aron magtrabaho ang mga script sa target nga aparato, usa ka bytecode interpreter ug usa ka assembler nga adunay 38 nga mga panudlo ang gihimo. Ang source code ni Blockly adunay espesyal nga code generator nga gitukod niini nga nag-convert sa visual blocks ngadto sa assembly instructions. Pagkahuman, kini nga programa sa assembler nakabig sa bytecode ug gibalhin sa aparato aron ipatuman.
Ang arkitektura niini nga virtual nga makina yano ra ug wala’y piho nga punto sa paghubit niini; sa Internet makit-an nimo ang daghang mga artikulo bahin sa pagdesinyo sa labing yano nga mga makina nga virtual.
Ako kasagarang mogahin ug 1000 ka bytes para sa stack sa akong virtual machine, nga igo na nga maluwas. Siyempre, ang lawom nga mga recursion makahurot sa bisan unsang stack, apan kini dili tingali adunay bisan unsang praktikal nga gamit.

Ang resulta nga bytecode medyo compact. Ingon nga pananglitan, ang bytecode alang sa pagkalkula sa parehas nga factorial kay 49 bytes lamang. Kini ang biswal nga porma niini:
Visual programming alang sa Sonoff Basic

Ug kini mao ang iyang assembler nga 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

Kung ang porma sa representasyon sa asembliya walay praktikal nga bili, nan ang tab nga "javascrit", sa sukwahi, naghatag usa ka labi ka pamilyar nga hitsura kaysa mga visual block:

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

window.alert(factorial(10));

Mahitungod sa performance. Sa dihang gipadagan nako ang pinakasimple nga flasher script, nakuha nako ang 47 kHz square wave sa oscilloscope screen (sa processor clock speed nga 80 MHz).
Visual programming alang sa Sonoff BasicVisual programming alang sa Sonoff Basic
Sa akong hunahuna kini usa ka maayong resulta, labing menos kini nga katulin hapit napulo ka beses nga mas paspas kaysa sa pagkuha sa ΠΈ Espruino.

Ang katapusang bahin

Sa pag-summarize, isulti ko nga ang paggamit sa mga script nagtugot kanato dili lamang sa pagprograma sa lohika sa operasyon sa usa ka bulag nga aparato, apan mahimo usab nga makonektar ang daghang mga aparato sa usa ka mekanismo, diin ang pipila nga mga aparato nag-impluwensya sa pamatasan sa uban.
Namatikdan usab nako nga ang gipili nga pamaagi sa pagtipig sa mga script (direkta sa mga aparato mismo, ug dili sa server) gipasimple ang pagbalhin sa mga nagtrabaho na nga aparato sa lain nga server, pananglitan sa usa ka Raspberry sa balay, dinhi manwal.

Mao lang, malipay ko nga makadungog sa mga tambag ug makaayo nga pagsaway.

Source: www.habr.com

Idugang sa usa ka comment