Vizuální programování pro Sonoff Basic

Vizuální programování pro Sonoff Basic
Článek o tom, jak vytvořit programovatelný logický řadič z levného čínského zařízení. Takové zařízení najde své využití jak v domácí automatizaci, tak jako praktické hodiny školní informatiky.
Pro informaci, program Sonoff Basic standardně spolupracuje s mobilní aplikací prostřednictvím čínské cloudové služby, po navržené úpravě bude veškerá další interakce s tímto zařízením možná v prohlížeči.

Část I. Připojení Sonoff ke službě MGT24

Krok 1: Vytvořte ovládací panel

Zaregistrujte se na webu mgt24 (pokud ještě nejste zaregistrováni) a přihlaste se pomocí svého účtu.
Přihlaste se do systémuVizuální programování pro Sonoff Basic

Chcete-li vytvořit ovládací panel pro nové zařízení, klikněte na tlačítko „+“.
Příklad vytvoření paneluVizuální programování pro Sonoff Basic

Jakmile je panel vytvořen, objeví se ve vašem seznamu panelů.

Na kartě „Nastavení“ vytvořeného panelu najděte pole „ID zařízení“ a „Authorizační klíč“; v budoucnu budou tyto informace vyžadovány při nastavování zařízení Sonoff.
Příklad kartyVizuální programování pro Sonoff Basic

Krok 2. Obnovte zařízení

Pomocí utility XTCOM_UTIL stáhněte si firmware PLC Sonoff Basic k zařízení, k tomu budete potřebovat převodník USB-TTL. Tady instrukce и video instrukce.

Krok 3. Nastavení zařízení

Zapněte napájení zařízení, po rozsvícení LED stiskněte tlačítko a držte jej stisknuté, dokud LED nezačne periodicky rovnoměrně blikat.
V tuto chvíli se objeví nová wi-fi síť s názvem „PLC Sonoff Basic“, připojte k této síti svůj počítač.
Vysvětlení indikace LED

LED indikace
Stav zařízení

periodické dvojité blikání
žádné připojení k routeru

svítí nepřetržitě
navázáno spojení s routerem

pravidelné rovnoměrné blikání
režim wi-fi přístupového bodu

uhašen
Žádné napájení

Otevřete internetový prohlížeč a do adresního řádku zadejte text „192.168.4.1“, přejděte na stránku nastavení sítě zařízení.

Vyplňte pole následovně:

  • „Název sítě“ a „Heslo“ (pro připojení zařízení k vašemu domácímu wi-fi routeru).
  • „ID zařízení“ a „autorizační klíč“ (pro autorizaci zařízení ve službě MGT24).

Příklad nastavení síťových parametrů zařízeníVizuální programování pro Sonoff Basic

Uložte nastavení a restartujte zařízení.
Zde video instrukce.

Krok 4. Připojení senzorů (volitelné)

Aktuální firmware podporuje až čtyři teplotní senzory ds18b20. Tady video instrukce pro instalaci senzorů. Tento krok bude zřejmě nejnáročnější, protože bude vyžadovat rovná ramena a páječku.

Oddíl II. Vizuální programování

Krok 1: Vytvořte skripty

Používá se jako programovací prostředí Blokově, prostředí se snadno učí, takže k vytváření jednoduchých skriptů nemusíte být programátor.

Přidal jsem specializované bloky pro zápis a čtení parametrů zařízení. Ke každému parametru se přistupuje pomocí názvu. Pro parametry vzdálených zařízení se používají složené názvy: „parameter@device“.
Rozbalovací seznam možnostíVizuální programování pro Sonoff Basic

Příklad scénáře pro cyklické zapínání a vypínání zátěže (1Hz):
Vizuální programování pro Sonoff Basic

Příklad skriptu synchronizujícího provoz dvou samostatných zařízení. Konkrétně relé cílového zařízení opakuje činnost relé vzdáleného zařízení.
Vizuální programování pro Sonoff Basic

Scénář pro termostat (bez hystereze):
Vizuální programování pro Sonoff Basic

Chcete-li vytvořit složitější skripty, můžete použít proměnné, smyčky, funkce (s argumenty) a další konstrukce. Nebudu to tady všechno podrobně popisovat, na netu je toho už docela dost. vzdělávací materiál o Blockly.

Krok 2: Pořadí skriptů

Skript běží nepřetržitě a jakmile dosáhne svého konce, spustí se znovu. V tomto případě existují dva bloky, které mohou skript dočasně pozastavit, „zpoždění“ a „pozastavení“.
Blok "zpoždění" se používá pro milisekundové nebo mikrosekundové zpoždění. Tento blok přísně dodržuje časový interval a blokuje provoz celého zařízení.
Blok „pauza“ se používá pro sekundové (nebo méně) zpoždění a neblokuje provádění jiných procesů v zařízení.
Pokud samotný skript obsahuje nekonečnou smyčku, jejíž tělo neobsahuje „pauzu“, interpret sám spustí krátkou pauzu.
Pokud je alokovaný zásobník paměti vyčerpán, překladač přestane spouštět takový skript náročný na energii (buďte opatrní s rekurzivními funkcemi).

Krok 3: Ladění skriptů

Chcete-li ladit skript, který již byl načten do zařízení, můžete spustit trasování programu krok za krokem. To může být velmi užitečné, když se chování skriptu ukázalo být odlišné od toho, co autor zamýšlel. V tomto případě umožňuje trasování autorovi rychle najít zdroj problému a opravit chybu ve skriptu.

Scénář pro výpočet faktoriálu v režimu ladění:
Vizuální programování pro Sonoff Basic

Ladicí nástroj je velmi jednoduchý a skládá se ze tří hlavních tlačítek: „start“, „jeden krok vpřed“ a „stop“ (nezapomeňme také na režim ladění „vstoupit“ a „ukončit“). Kromě trasování krok za krokem můžete u libovolného bloku nastavit bod přerušení (kliknutím na blok).
Pro zobrazení aktuálních hodnot parametrů (snímače, relé) na monitoru použijte blok „tisk“.
Zde přehledové video o použití debuggeru.

Sekce pro zvědavce. Co je pod kapotou?

Aby skripty fungovaly na cílovém zařízení, byl vyvinut interpret bytecode a assembler s 38 instrukcemi. Zdrojový kód Blockly má vestavěný specializovaný generátor kódu, který převádí vizuální bloky na instrukce pro sestavení. Následně je tento assemblerový program převeden na bajtkód a přenesen do zařízení ke spuštění.
Architektura tohoto virtuálního stroje je poměrně jednoduchá a nemá smysl ji popisovat, na internetu najdete mnoho článků o navrhování nejjednodušších virtuálních strojů.
Obvykle alokuji 1000 bajtů pro zásobník mého virtuálního stroje, což je dost na rezervu. Hluboké rekurze samozřejmě mohou vyčerpat jakýkoli zásobník, ale je nepravděpodobné, že budou mít nějaké praktické využití.

Výsledný bajtkód je poměrně kompaktní. Například bajtový kód pro výpočet stejného faktoriálu je pouze 49 bajtů. Toto je jeho vizuální podoba:
Vizuální programování pro 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

Pokud forma reprezentace sestavení nemá žádnou praktickou hodnotu, pak karta „javascrit“ naopak poskytuje známější vzhled než vizuální bloky:

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

window.alert(factorial(10));

Ohledně výkonu. Když jsem spustil nejjednodušší flasher skript, dostal jsem na obrazovce osciloskopu obdélníkovou vlnu 47 kHz (při taktu procesoru 80 MHz).
Vizuální programování pro Sonoff BasicVizuální programování pro Sonoff Basic
Myslím, že je to dobrý výsledek, alespoň tato rychlost je téměř desetkrát rychlejší než Lua и Espruino.

Závěrečná část

Abych to shrnul, řeknu, že použití skriptů nám umožňuje nejen naprogramovat logiku provozu samostatného zařízení, ale také umožňuje propojit více zařízení do jednoho mechanismu, kdy některá zařízení ovlivňují chování ostatních.
Dále podotýkám, že zvolený způsob ukládání skriptů (přímo v samotných zařízeních a ne na serveru) zjednodušuje přepínání již fungujících zařízení na jiný server, například na domácí Raspberry, zde instrukce.

To je vše, budu rád za rady a konstruktivní kritiku.

Zdroj: www.habr.com

Přidat komentář