Vizualizált programozás a Sonoff Basic számára

Vizualizált programozás a Sonoff Basic számára
Cikk arról, hogyan alakíthatunk egy olcsó kínai eszközt programozható logikai vezérlővé. Az ilyen eszközök alkalmazhatóak otthoni automatizálásban és iskolai informatika gyakorlati órák során.
A tájékoztatás kedvéért, alapértelmezés szerint a Sonoff Basic program mobilalkalmazáson keresztül működik egy kínai felhőszolgáltatással, az ajánlott átalakítás után minden további interakció ezzel az eszközzel böngészőn keresztül válik lehetővé.

I. rész. A Sonoff csatlakoztatása az MGT24 szolgáltatáshoz

1. lépés. Vezérlőpanel létrehozása

Regisztráljon a következő weboldalon mgt24 (ha még nem regisztrált) és lépjen be a fiókjába.
BejelentkezésVizualizált programozás a Sonoff Basic számára

Új eszközhöz vezérlőpanel létrehozásához kattintson a „+” gombra.
Példa a panel létrehozásáraVizualizált programozás a Sonoff Basic számára

Miután a panel létrejött, megjelenik a paneleinek listájában.

A létrehozott panel „Telepítés” fülén találja az „Eszköz ID” és „Hitelesítési kulcs” mezőket, ezek az információk szükségesek a Sonoff eszköz beállításához.
A fül példájaVizualizált programozás a Sonoff Basic számára

2. lépés. Az eszköz újraprogramozása

Az XTCOM_UTIL segítségével töltse fel a firmware-t Sonoff Basic PLC az eszközre, ehhez szüksége lesz egy USB-TTL átalakítóra. Itt utasítás és videó útmutató.

3. lépés. Az eszköz beállítása

Kapcsolja be az eszközt, miután a LED világítani kezd, nyomja meg a gombot, és tartsa lenyomva, amíg a LED periodikusan egyenletesen villogni nem kezd.
Ekkor megjelenik egy új wi-fi hálózat, amelynek neve „PLC Sonoff Basic”, csatlakoztassa a számítógépét ehhez a hálózathoz.
A LED jelzőfény dekódolása

LED jelzőfény
Az eszköz állapota

időszakos dupla villogás
nincs kapcsolat a routerrel

folyamatos fény
kapcsolat a routerrel

időszakos egyenletes villogás
wi-fi hozzáférési pont üzemmód

lekapcsolva
nincs áram

Nyisson meg egy böngészőt, és gépelje be a címsorba a következő szöveget: „192.168.4.1”, lépjen a készülék hálózati paramétereinek beállító oldalára.

Töltse ki a mezőket a következőképpen:

  • „Hálózat neve” és „Jelszó” (az eszköz otthoni wi-fi routerhez való csatlakoztatásához).
  • „Eszköz ID” és „Hitelesítési kulcs” (az eszköz hitelesítéséhez az MGT24 szolgáltatásnál).

A készülék hálózati paramétereinek beállításának példájaVizualizált programozás a Sonoff Basic számára

Mentse el a beállításokat, és indítsa újra az eszközt.
Itt videó útmutató.

4. lépés. Szenzorok csatlakoztatása (opcionális)

A jelenlegi firmware legfeljebb négy ds18b20 hőmérséklet-szenzort támogat. Itt videó útmutató tájékoztatás található a szenzorok telepítéséről. Nyilvánvaló, hogy ez a lépés lesz a legnehezebb, mivel közvetlen kézügyességet és forrasztópáka használatát igényli.

II. rész. Vizuális programozás

1. lépés. Forgatókönyvek létrehozása

A programozási környezet Blockly, a környezet könnyen elsajátítható, így egyszerű forgatókönyvek létrehozásához nem szükséges programozónak lenni.

Specializált blokkokat adtam hozzá az eszköz paramétereinek írásához és olvasásához. Bármely paraméter elérése a nevének megfelelően történik. A távoli eszközök paramétereinél összetett neveket használunk: „paraméter@eszköz”.
Paraméterek legördülő listájaVizualizált programozás a Sonoff Basic számára

Példa egy ciklikus terhelés be- és kikapcsolására (1Hz):
Vizualizált programozás a Sonoff Basic számára

Példa két különböző eszköz munkájának szinkronizálására. A céleszköz reléje megismétli a távoli eszköz reléjének munkáját.
Vizualizált programozás a Sonoff Basic számára

Forgatókönyv termosztátra (histerézis nélkül):
Vizualizált programozás a Sonoff Basic számára

Bonyolultabb forgatókönyvek létrehozásához változókat, ciklusokat, funkciókat (argumentumokkal) és egyéb konstrukciókat lehet használni. Ezt a részletet nem szeretném itt részletezni, az interneten már van elég sok oktató anyag a Blockly-ról.

2. lépés. Forgatókönyvek végrehajtási sorrendje

A forgatókönyv folyamatosan működik, és amint elérte a végét, újraindul. Ebben a folyamatban két blokk van, amely ideiglenesen le tudja állítani a forgatókönyv működését: a „delay” és a „pause”.
A „delay” blokk milliszekundumos vagy mikrosekundumos késleltetésekhez használható. Ez a blokk szigorúan betartja az időintervallumot, blokkolva ezzel az egész eszköz működését.
A „pause” blokk másodperces (vagy kevesebb) késleltetésekhez használható, és nem blokkolja a többi folyamat végrehajtását az eszközben.
Ha a forgatókönyv végtelen ciklust tartalmaz, amelyben nincs „pause”, az értelmező magától indít egy kis szünetet.
Ha a kiosztott memória stack kimerül, az értelmező leállítja az ilyen erőforrást igénylő forgatókönyv végrehajtását (legyetek óvatosak a rekurzív funkciókkal).

3. lépés. Forgatókönyvek hibakeresése

A már a készülékbe betöltött szkriptek hibakereséséhez lépésről lépésre történő nyomkövetést indíthat. Ez rendkívül hasznos lehet, amikor a szkript viselkedése nem olyan, mint amilyennek a szerző elképzelte. Ebben az esetben a nyomkövetés lehetővé teszi a szerző számára, hogy gyorsan megtalálja a hiba forrását és kijavítsa a szkriptben a problémát.

A faktoriális számítás szkriptje hibakeresési módban:
Vizualizált programozás a Sonoff Basic számára

A hibakereső eszköz nagyon egyszerű és három fő gombból áll: „indítás”, „egyetlen lépés előre” és „megállítás” (ne felejtsük el a hibakeresési módba való „belépést” és „kilépést” sem). A lépésről lépésre történő nyomkövetés mellett bármely blokkra beállíthatunk egy töréspontot (az adott blokkra kattintva).
A monitorra a jelenlegi paraméterértékek (érzékelők, relék) kiírásához használja a „print” blokkot.
Itt bevezető videó a hibakeresőről.

Rész az érdeklődőknek. Mi rejlik a motorháztető alatt?

Ahhoz, hogy a szkriptek működjenek a célkészüléken, 38 utasításból álló bájt-kódértelmezőt és assembler-t fejlesztettek ki. A blockly forráskódjába beépítettek egy speciális kódgenerátort, amely a vizuális blokkokat assembler utasításokká alakítja. Ezt követően ez az assembler program bájt-kóddá alakul, és végrehajtásra átkerül a készülékbe.
Ennek a virtuális gépnek az architektúrája meglehetősen egyszerű, és nem érdemes különösebben leírni; az interneten sok cikket talál, amelyek az egyszerű virtuális gépek tervezéséről szólnak.
A virtuális gépem számára általában 1000 bájtot osztok ki a veremhez, ez bőségesen elegendő. Természetesen a mély rekurziók bármilyen veremet kimeríthetnek, de valószínűleg nem található számottevő gyakorlati alkalmazásuk.

A végső bájt-kód meglehetősen tömör. Például az ugyanannak a faktoriálisnak a bájt-kódja mindössze 49 bájtot tesz ki. Íme a vizuális megjelenítési formája:
Vizualizált programozás a Sonoff Basic számára

Ez pedig az assembler programja:

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

Ha az assembler formátum nem jár gyakorlati előnyökkel, akkor a „javascript” fül éppen ellenkezőleg, ismerős látványt nyújt a vizuális blokkok helyett:

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

window.alert(factorial(10));

Ami a teljesítményt illeti. A legegyszerűbb villogó szkript futtatásakor a oszcilloszkóp képernyőjén 47 kHz-es meandert kaptam (80 MHz-es órajellel).
Vizualizált programozás a Sonoff Basic számáraVizualizált programozás a Sonoff Basic számára
Jónak tartom az eredményt, legalábbis ez a sebesség majdnem tízszer gyorsabb, mint a Lua és Espruino.

Záró rész

Összegzésül azt mondom, hogy a szkriptek használata lehetővé teszi számunkra, hogy ne csak egyetlen eszköz működésének logikáját programozzuk, hanem lehetőséget ad arra is, hogy több eszközt összekapcsoljunk egy egységes mechanizmusba, ahol az egyik eszköz befolyásolja a másik működését.
Megjegyzem továbbá, hogy a szkriptek tárolásának kiválasztott módja (közvetlenül magukban az eszközökben, nem a szerveren) megkönnyíti a már működő eszközök átkapcsolását egy másik szerverre, például a házi Raspberry-re, itt. utasítás.

Ezzel vége, örömmel várom a tanácsokat és a konstruktív kritikát.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster