Visuele programmering vir Sonoff Basic

Visuele programmering vir Sonoff Basic
'n Artikel oor hoe om 'n programmeerbare logiese beheerder van 'n goedkoop Chinese toestel te skep. So 'n toestel sal sy toepassing vind in beide tuisoutomatisering en as praktiese oefeninge in skoolrekenaarwetenskap.
Ter verwysing, by verstek werk die Sonoff Basic-program met 'n mobiele toepassing deur 'n Chinese wolkdiens, na die voorgestelde verandering sal alle verdere interaksie met hierdie toestel in die blaaier moontlik word.

Afdeling I Koppel Sonoff aan MGT24-diens

Stap 1. Skep 'n beheerpaneel

Registreer op die webwerf mgt24 (indien nie reeds geregistreer nie) en meld aan met jou rekening.
Teken in op die stelselVisuele programmering vir Sonoff Basic

Om 'n beheerpaneel vir 'n nuwe toestel te skep, klik op die "+" knoppie.
Paneelskepping voorbeeldVisuele programmering vir Sonoff Basic

Sodra 'n paneel geskep is, sal dit in die lys van jou panele verskyn.

In die "Installasie"-oortjie van die paneel wat geskep is, vind die velde "Toestel-ID" en "Magtigingsleutel", in die toekoms sal hierdie inligting benodig word wanneer die Sonoff-toestel gekonfigureer word.
Tab VoorbeeldVisuele programmering vir Sonoff Basic

Stap 2. Flits die toestel

Die gebruik van die nut XTCOM_UTIL laai firmware af Sonoff Basic PLC in die toestel, hiervoor benodig jy 'n USB-TTL-omskakelaar. Hier opdrag и Video-instruksie.

Stap 3. Toestelopstelling

Skakel die toestel aan, nadat die LED gelig het, druk die knoppie en hou dit in totdat die LED periodiek eweredig begin flikker.
Op hierdie stadium sal 'n nuwe wi-fi-netwerk genaamd "PLC Sonoff Basic" verskyn, koppel jou rekenaar aan hierdie netwerk.
Ontsyfering van die LED-aanduiding

LED aanduiding
Toestelstatus

intermitterende dubbele flits
geen verbinding met router nie

voortdurend skyn
verbinding met die router tot stand gebring

intermitterende flikker
hotspot wifi-modus

geblus
Geen kragtoevoer

Maak 'n internetblaaier oop en voer die teks "192.168.4.1" in die adresbalk in, gaan na die toestel se netwerkinstellingsbladsy.

Vul die velde soos volg in:

  • "Netwerknaam" en "Wagwoord" (vir die koppeling van die toestel aan 'n tuis-wi-fi-roeteerder).
  • "Toestel-ID" en "Magtigingsleutel" (om die toestel op die MGT24-diens te magtig).

Voorbeeld vir die opstel van die masjien se netwerkinstellingsVisuele programmering vir Sonoff Basic

Stoor jou instellings en herlaai jou toestel.
Hier Video-instruksie.

Stap 4 Koppel sensors (opsioneel)

Die huidige firmware ondersteun tot vier ds18b20 temperatuursensors. Hier Video-instruksie vir installasie van sensors. Blykbaar sal hierdie stap die moeilikste wees, aangesien dit reguit arms en 'n soldeerbout van jou sal verg.

Afdeling II. visuele programmering

Stap 1. Skripte

Word gebruik as 'n programmeringsomgewing Blockly, die omgewing is maklik om te leer, so jy hoef nie 'n programmeerder te wees om eenvoudige skrifte te skep nie.

Ek het gespesialiseerde blokke bygevoeg vir die skryf en lees van toestelparameters. Enige parameter word deur die naam verkry. Vir parameters van afgeleë toestelle word saamgestelde name gebruik: "parameter@device".
Aftreklys van opsiesVisuele programmering vir Sonoff Basic

'n Voorbeeld van 'n scenario om die vrag aan en af ​​te laat fiets (1Hz):
Visuele programmering vir Sonoff Basic

'n Voorbeeld van 'n skrip wat die werking van twee afsonderlike toestelle sinchroniseer. Die aflos van die teikentoestel herhaal naamlik die werking van die aflos van die afgeleë toestel.
Visuele programmering vir Sonoff Basic

Scenario vir termostaat (sonder histerese):
Visuele programmering vir Sonoff Basic

Om meer komplekse skrifte te skep, kan jy veranderlikes, lusse, funksies (met argumente) en ander konstrukte gebruik. Ek sal nie dit alles in detail hier beskryf nie, daar is reeds baie op die netwerk. leermateriaal oor Blockly.

Stap 2. Volgorde van uitvoering van skrifte

Die skrif loop voortdurend, en sodra dit sy einde bereik, begin dit weer. In hierdie geval is daar twee blokke wat die skrif tydelik kan opskort, "vertraag" en "pouse".
Die "vertraging" blok word gebruik vir millisekonde of mikrosekonde vertragings. Hierdie blok handhaaf die tydsinterval streng, wat die werking van die hele toestel blokkeer.
Die "pouse"-blok word vir sekondes (dalk minder) vertragings gebruik, en dit blokkeer nie die uitvoering van ander prosesse in die toestel nie.
As die skrif 'n oneindige lus in homself bevat, in die liggaam waarvan daar geen "pouse" is nie, begin die tolk 'n klein pouse op sy eie.
As die toegewese geheuestapel uitgeput is, sal die tolk die uitvoering van so 'n vraatsugtige skrif stop (wees versigtig met rekursiewe funksies).

Stap 3 Ontfouting van skrifte

Om 'n skrip wat reeds in die toestel gelaai is, te ontfout, kan jy die program stap vir stap begin opspoor. Dit kan uiters nuttig wees wanneer die gedrag van die skrif nie is wat die skrywer bedoel het nie. In hierdie geval stel opsporing die skrywer in staat om vinnig die bron van die probleem te vind en die fout in die skrif reg te stel.

Faktoriale berekeningskrip in ontfoutingsmodus:
Visuele programmering vir Sonoff Basic

Die ontfoutingsinstrument is baie eenvoudig en bestaan ​​uit drie hoofknoppies: "begin", "een stap vorentoe" en "stop" (moenie van "enter" en "exit" ontfoutmodus vergeet nie). Benewens stap-vir-stap naspeuring, kan jy 'n breekpunt op enige blok stel (deur op die blok met die muis te klik).
Gebruik die "druk" blok om die huidige waardes van parameters (sensors, relais) op die monitor te vertoon.
Hier oorsig video oor die gebruik van die ontfouter.

Afdeling vir die nuuskieriges. En wat is onder die enjinkap?

Om die skrifte op die teikentoestel te laat werk, is 'n greepkode-tolk en 'n samesteller vir 38 instruksies ontwikkel. 'n Gespesialiseerde kodegenerator is in die blokvormige bronkode ingebou, wat visuele blokke in samestellerinstruksies omskakel. In die toekoms word hierdie samestellerprogram in greepkode omgeskakel en na die toestel oorgedra vir uitvoering.
Die argitektuur van hierdie virtuele masjien is redelik eenvoudig en dit maak min sin om dit te beskryf, jy sal baie artikels op die net vind oor die ontwerp van die eenvoudigste virtuele masjiene.
Onder die stapel van my virtuele masjien ken ek gewoonlik 1000 grepe toe, dit is genoeg met 'n marge. Natuurlik kan diep rekursies enige stapel uitput, maar dit is onwaarskynlik dat dit van praktiese nut sal wees.

Die gevolglike greepkode is redelik kompak. As 'n voorbeeld, die greepkode vir die berekening van dieselfde faktoriaal is slegs 49 grepe. Dit is sy visuele aanbiedingsvorm:
Visuele programmering vir Sonoff Basic

En dit is sy samestellingsprogram:

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

As die samestellervorm van aanbieding geen praktiese waarde het nie, gee die "javascript"-oortjie, inteendeel, 'n meer bekende voorkoms as visuele blokke:

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

window.alert(factorial(10));

Wat prestasie betref. Toe ek die eenvoudigste flitserskrif op die ossilloskoopskerm laat loop, het ek 'n 47kHz meander gekry (teen 'n verwerkerklokspoed van 80MHz).
Visuele programmering vir Sonoff BasicVisuele programmering vir Sonoff Basic
Ek beskou dit as 'n goeie resultaat, ten minste is hierdie spoed amper tien keer vinniger as neem и espruino.

Finale deel

Opsomming, ek sal sê dat die gebruik van skrifte ons nie net toelaat om die logika van die werking van 'n enkele toestel te programmeer nie, maar dit ook moontlik maak om verskeie toestelle in 'n enkele meganisme te koppel, waar een toestel die gedrag van ander beïnvloed.
Ek neem ook kennis dat die gekose manier om skrifte te stoor (direk in die toestelle self, en nie op die bediener nie) die oorskakeling van reeds werkende toestelle na 'n ander bediener vereenvoudig, byvoorbeeld na 'n tuis Framboos, hier opdrag.

Dit is al, ek sal bly wees om advies en opbouende kritiek te hoor.

Bron: will.com

Voeg 'n opmerking