Visuaalne programmeerimine Sonoff Basic'i jaoks

Visuaalne programmeerimine Sonoff Basic'i jaoks
Artikkel, kuidas odavast Hiina seadmest luua programmeeritav loogikakontroller. Selline seade leiab rakendust nii koduautomaatikas kui ka praktilisteks koolitundideks arvutiteaduses.
Teadmiseks, Sonoff Basic programm töötab vaikimisi mobiilirakendusega Hiina pilveteenuse kaudu, pärast soovitatud ümberehitust on kõik edasine suhtlemine selle seadmega võimalik brauseris.

Jaotis I. Sonoff ühendamine MGT24 teenusega

Samm 1. Juhtpaneeli loomine

Registreeruge saidil mgt24 (kui te pole veel registreerunud) ja logige oma kontole sisse.
Sisse logimineVisuaalne programmeerimine Sonoff Basic'i jaoks

Uue seadme juhtpaneeli loomiseks vajutage nuppu «+».
Juhtpaneeli loomise näideVisuaalne programmeerimine Sonoff Basic'i jaoks

Pärast paneeli loomist kuvatakse see teie paneelide loendis.

«Installimine» vahekaardil, loodud paneelil leidke väljad «Seadmeseen ID» ja «Autentimisvõti», tulevikus on see teave vajalik Sonoff seadme seadistamisel.
Vahekaardi näideVisuaalne programmeerimine Sonoff Basic'i jaoks

Samm 2. Seadme ümberprogrammeering

Kasutades utiliiti XTCOM_UTIL laadige pidurid PLC Sonoff Basic seadmisse, selleks on vaja USB-TTL konverterit. Siin juhend ja videojuhend.

Samm 3. Seadme seadistamine

Toitke seadmest voolu, pärast seda, kui LED süttib, vajutage nuppu ja hoidke seda all, kuni LED hakkab perioodiliselt ühtlaselt vilkuma.
Sel hetkel ilmub uus wi-fi võrk nimega «PLC Sonoff Basic», ühendage oma arvuti sellele võrgule.
LED indikaatori dekodeerimine

LED indikaator
Seisund seadmes

perioodiline kahekordne vilkumine
ühendust ei ole ruuteriga

pidevalt põleb
ühendus on loodud ruuteriga

perioodiline ühtlane vilkumine
wi-fi juurdepääsupunkti režiim

väljas
toide puudub

Avage veebibrauser ja sisestage aadressiribale tekst «192.168.4.1», minge seadme võrgu seadete lehele.

Täiendage väljad järgmiselt:

  • «Võrgu nimi» ja «Parool» (seadme ühendamiseks koduse wi-fi ruuteriga).
  • «Seadmeseen ID» ja «Autentimisvõti» (seadmise autentimiseks MGT24 teenuses).

Seadmese võrgu seadete näideVisuaalne programmeerimine Sonoff Basic'i jaoks

Salvestage seaded ja taaskäivitage seade.
Siin videojuhend.

Samm 4. Sensorite ühendamine (valikuline)

Praegune püsivara toetab kuni nelja ds18b20 temperatuursensorit. Siin videojuhend on sensorite paigaldamise kohta juhised. Tundub, et see samm on kõige keerulisem, kuna see nõuab teilt käte osavust ja jootmist.

II jaotis. Visuaalne programmeerimine

Samm 1. Skriptide loomine

Programmeermiskeskkonnana kasutatakse Blockly, keskkond on lihtsasti kasutatav, seega ei pea te lihtsate skriptide loomiseks olema programmeerija.

Olen lisanud spetsialiseeritud plokid seadme parameetrite lugemiseks ja kirjutamiseks. Kõigile parameetritele pääseb ligi nende nimede kaudu. Kaugseadmete parameetrite puhul kasutatakse komposiitnimesid: „parameeter@seade“.
Parameetrite rippmenüüVisuaalne programmeerimine Sonoff Basic'i jaoks

Näide skriptist, mis lülitab koormust sisse ja välja (1Hz):
Visuaalne programmeerimine Sonoff Basic'i jaoks

Näide skriptist, mis sünkroniseerib kahe eraldi seadme tööd. Nimelt, sihtseadme relee kordab kaugseadmest tuleva relee tööd.
Visuaalne programmeerimine Sonoff Basic'i jaoks

Skript termostaadi jaoks (ilma histereesita):
Visuaalne programmeerimine Sonoff Basic'i jaoks

Kuna keerukamate skriptide loomiseks saab kasutada muutujate, tsüklite, funktsioonide (argumendiga) ja muid konstruktsioone. Ma ei hakka siin kõike seda detailselt üles kirjutama, internetis on juba piisavalt õppematerjali Blockly kohta.

Samm 2. Skriptide täitmise järjekord

Skript töötab pidevas režiimis ja niipea, kui see jõuab lõpuni, käivitatakse see uuesti. Sellega seoses on kaks plokki, mis võivad skripti ajutiselt peatada, „delay“ ja „pause“.
Plokk „delay“ kasutatakse millisekundiliste või mikrosekundiliste viivituste jaoks. See plokk järgib rangelt ajavahemikku, blokeerides kogu seadme töö.
Plokk „pause“ kasutatakse sekundiliste (võib-olla ka vähem) viivituste jaoks ning see ei blokeeri seadme teiste protsesside täitmist.
Kui skript sisaldab lõpmatut tsüklit, mille sees ei ole „pause“, käivitab tõlgendaja iseseisvalt väikese pausi.
Kui määratud mälu virn saab täis, peatab tõlgendaja sellise mälusihtlikku skripti täitmise (olge ettevaatlik rekursiivsete funktsioonidega).

Samm 3. Skriptide tõrkeotsing

Kohandatud seadmesse juba laaditud skripti silumiseks saab käivitada programmi samm-sammult jälgimise. See on äärmiselt kasulik, kui skripti käitumine ei vastanud autori ootustele. Sellisel juhul võimaldab jälgimine autoril kiiresti leida probleemi allika ja parandada skripti viga.

Faktorila arvutamise skript silumismooduliga:
Visuaalne programmeerimine Sonoff Basic'i jaoks

Silumisriist on väga lihtne ja koosneb kolmest põhiklahvistikust: "start", "üks samm edasi" ja "peatamine" (ärme unusta ka "sisse" ja "välja" silumisrežiimist). Lisaks samm-sammult jälgimisele saab igasuguses plokis (hiireklõpsuga plokile) seada ka peatamispunkti.
Praeguste parameetrite väärtuste (andurid, releed) monitorile kuvamiseks kasutage plokki "print".
Siin ülevaatevideo silumistööriista kasutamise kohta.

Sektsioon uudishimulikele. Mis on masina kapoti all?

Selleks, et skriptid töötaksid sihtseadmest, on loodud 38 instruktsiooniga bait-koodi tõlkija ja assembler. Blockly algkoodi on integreeritud spetsialiseeritud koodigeneraator, mis konverteerib visuaalsed plokid assembleri instruktsioonideks. Edasi muudetakse see assembleri programm bait-koodiks ja edastatakse seadmele töötlemiseks.
Selle virtuaalmasina arhitektuur on üsna lihtne ning selle kirjeldamine pole eriti mõttekas, internetis on palju artikleid lihtsate virtuaalmasinate projekteerimise kohta.
Oma virtuaalmasina jaoks eraldan tavaliselt 1000 baiti virna, mis on piisavalt. Loomulikult võivad sügavad rekursioonid ammendada igasuguse virna, kuid tõenäoliselt ei leia neil praktilist rakendust.

Lõplik bait-kood on üsna kompaktne. Näiteks faktorila arvutamise bait-kood koosneb vaid 49 baitist. See on selle visuaalne esituse vorm:
Visuaalne programmeerimine Sonoff Basic'i jaoks

Ja see on selle assembleri programm:

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

Kui assembleri esituse vorm ei oma praktilist väärtust, siis vahekaart "javascrit" annab vastupidiselt tuttavama välimuse kui visuaalsed plokid:

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

window.alert(factorial(10));

Mis osas tootlikkusest. Lihtsaimat vilkuvat stsenaariumi käivitades sain oskoobi ekraanil 47 kHz meander (protsessori taktsagedusel 80 MHz).
Visuaalne programmeerimine Sonoff Basic'i jaoksVisuaalne programmeerimine Sonoff Basic'i jaoks
Pean seda korralikuks tulemuseks, vähemalt on see kiirus peaaegu kümme korda kiiremini kui Lua ja Espruino.

Lõppsõna

Kokkuvõtteks ütlen, et stsenaariumide rakendamine võimaldab meil mitte ainult programmeerida üksiku seadme tööloogikat, vaid ka siduda mitu seadet ühtsesse mehhanismi, kus ühe seadme tegevus mõjutab teiste käitumist.
Samuti tahan märkida, et valitud stsenaariumide salvestamise meetod (otseselt seadmetes, mitte serveris) lihtsustab juba töötavate seadmete üleviimist teisele serverile, näiteks kodusesse Raspberry'sse, siin juhend.

Sellega on kõik, ootan hea meelega nõuandeid ja konstruktiivset kriitikat.

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster