Vizual programming pre Sonoff Basic

Vizual programming pre Sonoff Basic
Článok o tom, ako z lacného čínskeho zariadenia vytvoriť programovateľný logický kontrolér. Toto zariadenie nájde svoje uplatnenie ako v domácich automatizáciách, tak aj ako praktická činnosť v školskom informatickom vzdelávaní.
Na informáciu, program Sonoff Basic predvolene funguje s mobilnou aplikáciou prostredníctvom čínskeho cloudového servisu, po navrhovanej úprave bude možné ďalšie interakcie s týmto zariadením realizovať cez prehliadač.

Časť I. Pripojenie Sonoff k službe MGT24

Krok 1. Vytvorenie ovládacieho panela

Zaregistrujte sa na stránke mgt24 (ak ešte nie ste registrovaní) a prihláste sa do svojho účtu.
PrihlásenieVizual programming pre Sonoff Basic

Aby ste vytvorili ovládací panel pre nové zariadenie, kliknite na tlačidlo „+“.
Príklad vytvorenia panelaVizual programming pre Sonoff Basic

Po vytvorení sa panel objaví v zozname vašich panelov.

Na karte „Inštalácia“ vytvoreného panela nájdite polia „ID zariadenia“ a „Autorizácia kľúč“, táto informácia bude neskôr potrebná pri nastavení zariadenia Sonoff.
Príklad záložkyVizual programming pre Sonoff Basic

Krok 2. Preprogramovanie zariadenia

Pomocou nástroja XTCOM_UTIL nahrajte firmvér PLC Sonoff Basic do zariadenia, na to budete potrebovať USB-TTL prevodník. Tu je príručka a videonávod.

Krok 3. Nastavenie zariadenia

Pripojte zariadenie k zdroju napájania, keď sa rozsvieti dióda, stlačte a držte tlačidlo, kým dióda nezačne pravidelne blikať.
V tomto momente sa objaví nová wi-fi sieť s názvom „PLC Sonoff Basic“, pripojte svoj počítač k tejto sieti.
Dešifrovanie indikácie diódy

Indikácia diódy
Stav zariadenia

pravidelné dvojité blikanie
nie je spojenie s routerom

nepretržite svieti
spočiatku je spojenie s routerom

pravidelné rovnomerné blikanie
režim wi-fi prístupového bodu

vypnuté
žiadne napájanie

Otvorené internetový prehliadač a do adresného riadku zadajte text „192.168.4.1“, prejdite na stránku nastavení parametrov siete zariadenia.

Vyplňte polia nasledovne:

  • „Meno siete“ a „Heslo“ (na pripojenie zariadenia k domácemu wi-fi routeru).
  • „ID zariadenia“ a „Autorizácia kľúč“ (na autorizáciu zariadenia na službe MGT24).

Príklad nastavenia parametrov siete zariadeniaVizual programming pre Sonoff Basic

Uložte nastavenia a reštartujte zariadenie.
Tu videonávod.

Krok 4. Pripojenie snímačov (voliteľné)

Aktuálny firmvér podporuje až štyri snímače teploty ds18b20. Tu videonávod nájdete pokyny na montáž snímačov. Tento krok bude zrejme najnáročnejší, pretože si vyžaduje vaše zručnosti a spájkovací prístroj.

Časť II. Vizualizované programovanie

Krok 1. Tvorba skriptov

Ako programovacie prostredie sa používa Blockly, prostredie je jednoduché na osvojenie, preto na vytváranie jednoduchých skriptov nie je potrebné byť programátorom.

Pridal som špeciálne bloky pre zapisovanie a čítanie parametrov zariadenia. Prístup k akémukoľvek parametru sa vykonáva podľa názvu. Pre parametre vzdialených zariadení sa používajú zložené názvy: „parametr@zariadenie“.
Rozbaľovací zoznam parametrovVizual programming pre Sonoff Basic

Príklad skriptu pre cyklické zapínanie a vypínanie záťaže (1 Hz):
Vizual programming pre Sonoff Basic

Príklad skriptu synchronizujúceho prácu dvoch samostatných zariadení. To znamená, že relé cieľového zariadenia opakuje činnosť relé vzdialeného zariadenia.
Vizual programming pre Sonoff Basic

Skript pre termostat (bez hysterézy):
Vizual programming pre Sonoff Basic

Na vytváranie zložitejších skriptov je možné použiť premenné, cykly, funkcie (s argumentmi) a ďalšie konštrukcie. Nebudem to tu podrobne opisovať, na internete už existuje dosť výučbového materiálu o Blockly.

Krok 2. Poradie vykonávania skriptov

Skript funguje v kontinuálnom režime a akonáhle dosiahne svoj koniec, spustí sa znova. Existujú však dva bloky, ktoré môžu dočasne pozastaviť činnosť skriptu, „delay“ a „pause“.
Blok „delay“ sa používa na milisekundové alebo mikrosekundové oneskorenia. Tento blok presne dodržiava časový interval, čím blokuje činnosť celého zariadenia.
Blok „pause“ sa používa na druhé (ale aj menej) oneskorenia a neblokuje vykonávanie iných procesov v zariadení.
Ak skript obsahuje nekonečnú slučku, v ktorej nie je uvedená „pause“, interpret sám iniciuje krátku pauzu.
V prípade vyčerpania prideleného zásobníka pamäte interpret zastaví vykonávanie takého náročného skriptu (buďte opatrní pri rekurzívnych funkciách).

Krok 3. Ladenie skriptov

Na ladenie už nahraného scenára do zariadenia je možné spustiť sledovanie programu po krokoch. To je veľmi užitočné, keď sa správanie scenára nezhoduje s tým, čo autor zamýšľal. V takom prípade sledovanie umožňuje autorovi rýchlo nájsť zdroj problému a opraviť chybu v scenári.

Scenár výpočtu faktoriálu v ladicím režime:
Vizual programming pre Sonoff Basic

Nástroj na ladenie je veľmi jednoduchý a pozostáva z troch hlavných tlačidiel: „štart“, „krok vpred“ a „stop“ (nezabúdajme ani na „vstup“ a „výstup“ z režimu ladenia). Okrem krokového sledovania je možné nastaviť bod prerušenia na akomkoľvek bloku (kliknutím myši na blok).
Na zobrazenie aktuálnych hodnôt parametrov (snímače, relé) použite blok „print“.
Tu prezentačné video o používaní ladice.

Sekcia pre zvedavých. A čo je pod kapotou?

Aby scenáre fungovali na cieľovom zariadení, bol vyvinutý interpret bajtového kódu a assembler na 38 inštrukcií. Do zdrojového kódu blockly bol integrovaný špecializovaný generátor kódu, ktorý konvertuje vizuálne bloky na assemblerové inštrukcie. Následne sa tento assemblerový program prekonvertuje na bajtový kód a odovzdá sa zariadeniu na vykonanie.
Architektúra tejto virtuálnej mašiny je dosť jednoduchá a nemá zmysel ju osobitne opisovať, na internete nájdete veľa článkov o návrhu najjednoduchších virtuálnych strojov.
Na zásobník svojej virtuálnej mašiny obvykle vyčlením 1000 bajtov, čo je viac než dostatočné. Samozrejme, hlboké rekurzie môžu vyčerpať akýkoľvek zásobník, ale ťažko by sa našlo praktické využitie.

Konečný bajtový kód je dosť kompaktný. Ako príklad, bajtový kód pre výpočet toho istého faktoriálu má len 49 bajtov. Toto je jeho vizuálna forma reprezentácie:
Vizual programming pre Sonoff Basic

A toto je jeho assemblerový program:

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

Ak má assemblerová forma reprezentácie akúkoľvek praktickú hodnotu, záložka „javascrit“ naopak ponúka známejší vzhľad ako vizuálne bloky:

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

window.alert(factorial(10));

Čo sa týka výkonu. Pri spustení najjednoduchšieho scenára blikačky som na obrazovke oscilloskopu dostal meander 47 kHz (pri taktovacej frekvencii procesora 80 MHz).
Vizual programming pre Sonoff BasicVizual programming pre Sonoff Basic
Považujem to za slušný výsledok, aspoň táto rýchlosť je takmer desaťkrát rýchlejšia ako. Lua a Espruino.

Záverečná časť

Na záver poviem, že využívanie scenárov nám umožňuje nielen naprogramovať logiku fungovania jednotlivých zariadení, ale aj spojiť niekoľko zariadení do jedného mechanizmu, kde jedno zariadenie ovplyvňuje správanie iného.
Taktiež zdôrazním, že zvolený spôsob ukladania scenárov (priamo v samotných zariadeniach, nie na serveri) zjednodušuje prechod už fungujúcich zariadení na iný server, napríklad domáci Raspberry, tu. príručka.

To je všetko, budem rád počuť rady a konštruktívnu kritiku.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster