ioBroker Javascript – Script Engine adapter

Az ioBrokerben a Script Engine adapter több lehetőséget kínál egyéni vezérlési szerkezetek létrehozására. Egyszerüen összekapcsolhatjuk vele a különböző gyártók smart-home eszközeit.

Az ioBroker Script Engine adapter hatalmas szabadságot és lehetőséget biztosít az otthoni automatizálás terén.

AWOW Mini PC - Windows 11 Pro

AWOW Mini PC – Windows 11 Pro

Intel Celeron N4120, 8GB DDR4/NVMe M.2 256GB SSD, 4K@60Hz, Dual HDMI, kiterjesztett SSD 2TB, 2.4G/5G Dual WiFi, Gigabit Ethernet, 4x USB, BT 5.0

hirdetés

Script Engine adapter telepítése

Hogy saját scripteket hozzhassunk létre az ioBrokerben, telepítenünk kell a „Script Engine” JavaScript adaptert. Lépjünk az „Adapters” fülre, a keresőbe írjuk be a „Script Engine” keresőszót, majd telepítsünk egy példányt a javascript adapterből.

telepítsünk egy példányt a javascript adapterből

A telepítés után a „Script Engine” adapter beállítások lapjára kerülünk. Itt hagyhatjuk az alapbeállításokat. Ezzel az ioBroker Script Enginer adaptere használatra kész.

Script Engine adapter használata

Lépjünk a „Scripts” oldalra.

A „Scripts” szerkesztő oldala három részből áll. Az első a mappanézet, második a kódszerkesztő panel, és a harmadik a napló megjelenítésére használt konzol.

A "Scripts" panel három részből áll

Az 1. panel a könyvtárfa, itt lesznek a saját scriptjeink, jól elkülönített mappákba rendezhetjük őket. A mappanézet fejlécében találunk egy horizontális menüt, melynek az első eleme egy legördülő menü.

A horizontális menü első eleme egy legördülő menü.

A legördülő listában található „Expert mode” a szakértői módot kapcsolja be, amely lehetőséget biztosít többek között hibakeresésre. Továbbá importálhatjuk scriptjeinket, de exportálhatunk scripteket külső forrásból is.

A mappanézet horizontális menüjében a „+” jellel ellátott mappa ikon segítségével új mappát hozhatunk létre.

A "+" jellel ellátott mappa ikon segítségével új mappát hozhatunk létre

A menüben található „+” jelre kattintva egy új scriptet adhatunk hozzá.

A programozásban kevésbé jártas felhasználók használhatják a „Rules” vagy a „Blocky” szerkesztőt. A „Javascript” vagy „Typescript” szerkesztő szabadabb, professzionálisabb lehetőséget biztosít.

ioBroker Script Engine szerkesztő választás

A ceruza ikonra kattintva átnevezhetjük a mappáinkat vagy scriptjeinket.

A 2. panel a kódszerkesztő, itt szerkeszthetjük a scriptjeinket. A továbbiakban a Javascript szerkesztőt fogjuk használni.

A kódszerkesztőben egyszerre több scriptet is szerkeszthetünk, ezek között a lapfülek segítségével váltogathatunk. A lapfülek melletti sötétkék gombra kattintva elrejthetjük a mappanézet panelt, ezáltal nagyobb szerkesztőfelületet kapunk.

A szerkesztő panel is rendelkezik egy vertikális menüvel.

A szerkesztő panel is rendelkezik egy vertikális menüvel

Vegyük sorra a menüpontokat. Balról az első „lokáció” ikonra kattintva kijelöli a mappanézetben az aktuálisan szerkesztett fájlt. A második ikon újraindítja a script futtatását. A harmadik a „Play/Pause” ikonnal elindíthatjuk/megállíthatjuk a script futását.

Az Óra ikon a CRON időzítő panelt hívja elő, ezzel könnyedén időzítéseket adhatunk a scripthez.

Az Óra ikon a CRON időzítő panelt hívja elő.

A csillagok ikon a napi asztrológiai események idejéről ad tájékoztatást.

A következő a „Task” ikon, melynek segítségével az ioBroker objektumok adatpontjaiból illeszthetünk be a kódunkba.

az ioBroker objektumok adatpontjaiból illeszthetünk be a kódunkba.

Az utolsó két ikon a hibakeresésben segít.

Raspberry Pi 4 Model B 4GB

Raspberry Pi 4 Model B  4 GB, ARM Cortex-A72 4x, 1,50 GHz, 4 GB RAM, WiFi-ac, Bluetooth 5, LAN, 4x USB, 2x Micro-HDMI

Hirdetés

Raspberry Pi 4 Model B  4 GB

Lássunk pár példát a Javascript adapter használatára

Írjuk meg az első scriptünket, legyen ez a Hello ioBroker!

console.log("Hello ioBroker!  Hello Javascript!");
Hello ioBroker script

A „console.log()” függvény segítségével írhatunk a naplóba, ami megjelenik a konzolon. A „Logs” oldalon is láthatjuk ezeket az üzeneteket. Hibakeresésnél például jól jöhet ez a funkció.

A következő példában a „getState()” függvény segítségével lekérdezzük a nappali világítás állapotát majd ennek megfelelően a „setState()” függvény bekapcsolja vagy kikapcsolja a lámpát a nappaliban.

var wohnzimmerlicht ='mqtt.0.Wohnzimmerlicht'/*Wohnzimmerlicht*/;
var wohnzimmerlicht_state = String(getState(wohnzimmerlicht).val);

if(wohnzimmerlicht_state == "true")
{
  setState(wohnzimmerlicht, "false");
}
else
{
    setState(wohnzimmerlicht, "true");
}

A fenti kód nem túl hasznos, mert csak a script futtatásakor működik. Módosítsuk a kódot, hogy ha valami esemény történik, például gombnyomás, akkor kapcsolódjon a lámpa.

Az „on()” függvény segítségével figyeljük a „schalter” változóban tárolt adatpont változásait. ha állapotváltozás történik, lefut a függvény és kapcsol a lámpa. Ezzel automatizáltuk a script müködásét.

var wohnzimmerlicht ='mqtt.0.Wohnzimmerlicht'/*Wohnzimmerlicht*/;
var schalter = 'mqtt.0.App.Schalter'/*Schalter*/

on({id: schalter}, function (obj)
{
  var wohnzimmerlicht_state = String(getState(wohnzimmerlicht).val);
  
  if(wohnzimmerlicht_state == "true")
  {
    setState(wohnzimmerlicht, "false");
  }
  else
  {
    setState(wohnzimmerlicht, "true");
  }
});

Shelly Pro 4PM

Shelly Pro 4PM

Shelly Pro 4PM

Professzionális Wi-Fi relé 4 érintkezővel otthoni automatizáláshoz, Támogatott az Amazon Alexa, Google Home aszisztensek és az MQTT.

Hirdetés

A következő egyszerű példa a CRON időzítőt használja, hogy két percenként ellenőrizze a lakás hőmérsékletét. Ha a hőmérséklet 15 fok alá csökken, riasztást küld a Pushsafer szolgáltatás segítségével a megadott mobiltelefonra. Ehez a pushsafer adapter szükséges.

var warning_once = false;

schedule(' */2 * * * *', function()
{
  var temp = Number(getState('mqtt.0.WohnzimmerTemp'/*WohnzimmerTemp*/).val);
  var text = 'A lakás hőmérséklete ' + temp;

  if(temp < 15)
  {
    if(warning_once == false)
    {
      sendTo("pushsafer", {
        message:   text,
        title:     'Alacsony hőmérséklet figyelmeztetés',
        device:    'xxxxx',
        sound:     '5',
        icon:      '1',
        vibration: '1',
        priority:  '2',
      });
      warning_once = true;
    }
  }
  else
  {
    warning_once = false;
  }
})