Č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
Přihlaste se do systému
Chcete-li vytvořit ovládací panel pro nové zařízení, klikněte na tlačítko „+“.
Příklad vytvoření panelu
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 karty
Krok 2. Obnovte zařízení
Pomocí utility
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í
Uložte nastavení a restartujte zařízení.
Zde
Krok 4. Připojení senzorů (volitelné)
Aktuální firmware podporuje až čtyři teplotní senzory ds18b20. Tady
Oddíl II. Vizuální programování
Krok 1: Vytvořte skripty
Používá se jako programovací prostředí
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í
Příklad scénáře pro cyklické zapínání a vypínání zátěže (1Hz):
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í.
Scénář pro termostat (bez hystereze):
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.
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í:
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
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:
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).
Myslím, že je to dobrý výsledek, alespoň tato rychlost je téměř desetkrát rychlejší než
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
To je vše, budu rád za rady a konstruktivní kritiku.
Zdroj: www.habr.com