Vizuálne programovanie pre Sonoff Basic

Vizuálne programovanie pre Sonoff Basic
Článok o tom, ako vytvoriť programovateľný logický radič z lacného čínskeho zariadenia. Takéto zariadenie nájde svoje využitie ako v domácej automatizácii, tak aj ako praktické hodiny školskej informatiky.
Pre informáciu, program Sonoff Basic štandardne pracuje s mobilnou aplikáciou prostredníctvom čínskej cloudovej služby, po navrhovanej úprave bude všetka ďalšia interakcia s týmto zariadením možná v prehliadači.

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

Krok 1: Vytvorte ovládací panel

Zaregistrujte sa na stránke mgt24 (ak ešte nie ste zaregistrovaný) a prihláste sa pomocou svojho účtu.
Prihlásiť saVizuálne programovanie pre Sonoff Basic

Ak chcete vytvoriť ovládací panel pre nové zariadenie, kliknite na tlačidlo „+“.
Príklad vytvorenia paneluVizuálne programovanie pre Sonoff Basic

Po vytvorení sa panel zobrazí vo vašom zozname panelov.

Na vytvorenom paneli na karte „Nastavenie“ nájdite polia „ID zariadenia“ a „autorizačný kľúč“; v budúcnosti budú tieto informácie potrebné pri nastavovaní zariadenia Sonoff.
Príklad kartyVizuálne programovanie pre Sonoff Basic

Krok 2. Obnovte zariadenie

Používanie pomôcky XTCOM_UTIL stiahnite si firmvér PLC Sonoff Basic k zariadeniu, na to budete potrebovať prevodník USB-TTL. Tu inštrukcie и Video návod.

Krok 3. Nastavenie zariadenia

Zapnite napájanie zariadenia, po rozsvietení LED diódy stlačte tlačidlo a podržte ho stlačené, kým LED nezačne pravidelne rovnomerne blikať.
V tejto chvíli sa objaví nová wi-fi sieť s názvom „PLC Sonoff Basic“, pripojte k nej svoj počítač.
Vysvetlenie LED indikácie

LED indikácia
Stav zariadenia

periodické dvojité blikanie
žiadne pripojenie k routeru

svieti nepretržite
spojenie vytvorené so smerovačom

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

zhasnuté
Žiadne napájanie

Otvorte internetový prehliadač a do panela s adresou zadajte text „192.168.4.1“, prejdite na stránku nastavení siete zariadenia.

Vyplňte polia takto:

  • „Názov siete“ a „Heslo“ (na prepojenie zariadenia s domácim wi-fi routerom).
  • „ID zariadenia“ a „autorizačný kľúč“ (na autorizáciu zariadenia v službe MGT24).

Príklad nastavenia sieťových parametrov zariadeniaVizuálne programovanie pre Sonoff Basic

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

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

Aktuálny firmvér podporuje až štyri teplotné senzory ds18b20. Tu Video návod na inštaláciu snímačov. Tento krok bude zrejme najťažší, pretože si bude vyžadovať rovné ramená a spájkovačku.

Oddiel II. Vizuálne programovanie

Krok 1: Vytvorte skripty

Používa sa ako programovacie prostredie Blockly, prostredie sa dá ľahko naučiť, takže na vytváranie jednoduchých skriptov nemusíte byť programátor.

Pridal som špecializované bloky na zápis a čítanie parametrov zariadenia. K akémukoľvek parametru sa pristupuje podľa názvu. Pre parametre vzdialených zariadení sa používajú zložené názvy: „parameter@device“.
Rozbaľovací zoznam možnostíVizuálne programovanie pre Sonoff Basic

Príklad scenára pre cyklické zapínanie a vypínanie záťaže (1Hz):
Vizuálne programovanie pre Sonoff Basic

Príklad skriptu synchronizujúceho činnosť dvoch samostatných zariadení. Konkrétne, relé cieľového zariadenia opakuje činnosť relé vzdialeného zariadenia.
Vizuálne programovanie pre Sonoff Basic

Scenár pre termostat (bez hysterézie):
Vizuálne programovanie pre Sonoff Basic

Na vytvorenie zložitejších skriptov môžete použiť premenné, cykly, funkcie (s argumentmi) a iné konštrukcie. Nebudem to tu všetko podrobne opisovať, na nete je toho už dosť. vzdelávací materiál o Blockly.

Krok 2: Poradie skriptov

Skript beží nepretržite a akonáhle dosiahne svoj koniec, spustí sa znova. V tomto prípade existujú dva bloky, ktoré môžu skript dočasne pozastaviť, „oneskorenie“ a „pozastavenie“.
Blok "oneskorenie" sa používa na milisekundové alebo mikrosekundové oneskorenia. Tento blok prísne zachováva časový interval a blokuje činnosť celého zariadenia.
Blok „pauza“ sa používa na sekundové (alebo menej) oneskorenia a neblokuje vykonávanie iných procesov v zariadení.
Ak samotný skript obsahuje nekonečnú slučku, ktorej telo neobsahuje „pauzu“, tlmočník nezávisle spustí krátku pauzu.
Ak je pridelený zásobník pamäte vyčerpaný, tlmočník prestane vykonávať takýto skript náročný na energiu (pozor pri rekurzívnych funkciách).

Krok 3: Ladenie skriptov

Ak chcete odladiť skript, ktorý už bol načítaný do zariadenia, môžete spustiť sledovanie programu krok za krokom. To môže byť mimoriadne užitočné, keď sa správanie skriptu líši od toho, čo autor zamýšľal. V tomto prípade sledovanie umožňuje autorovi rýchlo nájsť zdroj problému a opraviť chybu v skripte.

Scenár pre výpočet faktoriálu v režime ladenia:
Vizuálne programovanie pre Sonoff Basic

Ladiaci nástroj je veľmi jednoduchý a pozostáva z troch hlavných tlačidiel: „štart“, „jeden krok vpred“ a „stop“ (nezabudnime ani na režim ladenia „vstúpiť“ a „ukončiť“). Okrem sledovania krok za krokom môžete na ľubovoľnom bloku nastaviť bod prerušenia (kliknutím na blok).
Na zobrazenie aktuálnych hodnôt parametrov (snímače, relé) na monitore slúži blok „tlač“.
Tu prehľadové video o používaní debuggera.

Sekcia pre zvedavcov. Čo je pod kapotou?

Aby skripty fungovali na cieľovom zariadení, bol vyvinutý interpret bytecode a assembler s 38 inštrukciami. Zdrojový kód Blockly má zabudovaný špecializovaný generátor kódu, ktorý premieňa vizuálne bloky na pokyny na zostavenie. Následne je tento asemblerový program prevedený do bajtkódu a prenesený do zariadenia na vykonanie.
Architektúra tohto virtuálneho stroja je pomerne jednoduchá a nemá zmysel ju popisovať, na internete nájdete veľa článkov o navrhovaní najjednoduchších virtuálnych strojov.
Zvyčajne alokujem 1000 XNUMX bajtov pre zásobník môjho virtuálneho počítača, čo je dosť na rezervu. Samozrejme, hlboké rekurzie môžu vyčerpať akýkoľvek zásobník, ale je nepravdepodobné, že budú mať nejaké praktické využitie.

Výsledný bajtkód je pomerne kompaktný. Napríklad bajtový kód na výpočet rovnakého faktoriálu je iba 49 bajtov. Toto je jeho vizuálna podoba:
Vizuálne programovanie 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 forma zobrazenia zostavy nemá žiadnu praktickú hodnotu, potom karta „javascrit“ naopak poskytuje 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. Keď som spustil najjednoduchší flasher skript, na obrazovke osciloskopu som dostal štvorcovú vlnu 47 kHz (pri frekvencii procesora 80 MHz).
Vizuálne programovanie pre Sonoff BasicVizuálne programovanie pre Sonoff Basic
Myslím, že je to dobrý výsledok, aspoň táto rýchlosť je takmer desaťkrát rýchlejšia ako Lua и Espruino.

Záverečná časť

Aby som to zhrnul, poviem, že použitie skriptov nám umožňuje nielen naprogramovať logiku činnosti samostatného zariadenia, ale umožňuje aj prepojenie viacerých zariadení do jedného mechanizmu, kde niektoré zariadenia ovplyvňujú správanie iných.
Tiež podotýkam, že zvolený spôsob ukladania skriptov (priamo v samotných zariadeniach a nie na serveri) zjednodušuje prepínanie už fungujúcich zariadení na iný server, napríklad na domáci Raspberry, tu inštrukcie.

To je všetko, rád si vypočujem rady a konštruktívnu kritiku.

Zdroj: hab.com

Pridať komentár