A HWg STE2 család távoli környezetfelügyeleti eszközökből áll, amelyek LAN- és WiFi-interfésszel vannak felszerelve. A felhasználók változó számú külső szenzort vagy detektort csatlakoztathatnak. Ez a Node-RED platformpélda egy vagy több STE2 eszközről olvassa a szenzorértékeket, és az értékeket vagy grafikonokat egy weboldalon vagy a csatlakoztatott kijelzőn jeleníti meg.

Mi a Node-RED?

A Node-RED egy alacsony kódigényű (low-code) vizuális programozási fejlesztőeszköz, amely folyamatalapú, és hardverrendszerek, API-k és online szolgáltatások összekötésére szolgál.

Böngészőalapú folyamatszerkesztőt biztosít JavaScript-függvények létrehozásához, és lehetővé teszi az alkalmazások egyes elemeinek mentését vagy megosztását. A Node-RED futtatókörnyezete a Node.js-re épül, a folyamatokat JSON formátumban tárolja. Futtatható helyben, Raspberry Pi-n, Androidon, felhőben és számos más platformon (további információ: https://nodered.org).

A HWg-NR1 Node-RED projekt

  • Az adatokat LAN-on keresztül kéri le;
  • A kommunikációhoz HTTP-t és XML API-t használ;
  • Node-RED-et használ;
  • Az adatokat webes irányítópulton (dashboard) jeleníti meg;
  • Az irányítópult 4 felhasználó által kiválasztott szenzort vagy digitális bemenetet tud megjeleníteni;
  • További szenzorokat vagy digitális bemeneteket kézzel adhat az irányítópulthoz;
  • A projekt kompatibilis a PC-vel, a Raspberry Pi-vel és a felhő platformokkal.
HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

HWg-NR1 irányítópult

HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

HWg-NR1 Node-RED folyam (Flow)

HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

Egyszerű telepítés

A HWg-NR1 példa használatához először le kell töltenie és telepítenie kell a Node-RED modult. További információért lásd: https://nodered.org/docs/getting-started/.

Miután a Node-RED fut a böngészőben, kattintson a jobb felső sarokban lévő hamburger menüre, lépjen az „import” menüpontra, és illessze be a HWg-NR1 példa JSON-ját (ne felejtse el a fájl kiterjesztését .txt-ről .json-ra cserélni), amely itt található: https://www.hw-group.com/files/support/10808-hwg-nr1-node-red-ste2-r2-integration-example-lan/lanprojectsrc.txt majd kattintson az „Import” gombra.

HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

Ekkor meg kell jelenniük az új csomópontoknak (node-oknak).

HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

A projekt telepítése (deploy) előtt a CONFIG node-ban be kell állítania néhány paramétert. Keresse meg a node-ot, és kattintson rá duplán, hogy a képernyő jobb oldalán megjelenjen a több opciót tartalmazó felület.

HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

Cserélje ki a flow.ip_address értékét az eszköz IP-címére.

A következő 4 opció (g1_id, g2_id stb.) a felület 4 csoportjának felel meg. Mindegyik érték annak a szenzornak az azonosítója, amely az adott csoportban megjelenik. Módosítsa ennek a 4 opciónak az értékét, majd kattintson a „Done” gombra a jobb felső sarokban.

Kattintson a jobb felső sarokban a „Deploy” gombra, majd nyomja meg a Ctrl + Shift + D billentyűkombinációt az irányítópultra lépéshez. Valami ilyesmit kell látnia:

HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

Részletes bemutatás

A folyam 2 szakaszra oszlik: GET XML és GROUPS (amely tovább oszlik: Group 1, Group 2, Group 3 és Group 4).

HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

1. szakasz: Get XML

Ez a rész lekéri az XML-fájlt, JSON-objektummá alakítja, és átadja a négy csoportszakasznak.

HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

Az Inject node

3 másodpercenként elindítja a folyamatot (ebben az összefüggésben a folyam összekapcsolt node-ok sorozata).

A Change node („CONFIG”)

Elmenti az IP-címet és azokat a szenzorazonosítókat, amelyeknek az egyes csoportokban szerepeliük kell. Az adatok a „flow” hatókörbe (ebben az esetben a lap) kerülnek mentésre, vagyis ezen a folyamon belül bárhol (a lap bármely node-jából) elérhetők. Ezeket az adatokat a felhasználó adja meg.

Template node

A Template node létrehozza az XML-fájl lekéréséhez szükséges URL-t, és elmenti a msg.url-be, amelyet az Http Request node el tud érni.

Http Request node

Lekéri az XML-t az eszközről. Az URL-t automatikusan a msg.url tulajdonságból veszi.

XML Parse node

Az XML-karakterláncot JSON-objektummá alakítja.

Function node („format data”)

Létrehoz egy tömböt (msg.sensors) a szenzorokból és digitális bemenetekből. Minden szenzor/digitális bemenet egy JavaScript-objektum, amelynek tulajdonságai közé tartozik a név, az azonosító és az állapot.

Catch node

Elkapja a hibákat az Http Request és az XML Parse node-okból. Akkor használják, ha az eszköz le van választva.

Change node

A msg.sensors tulajdonságot üres tömbre állítja, aminek eredményeként az irányítópulton az „INVALID ID” név jelenik meg.

Link Out node

Kiküldi a msg objektumot a csoportoknak. A Link node-ok egyfajta alagútként működnek. A msg objektumot a Link Out node küldi ki, és a Link In node fogadja. A folyam olvashatóbbá tételére szolgál.

2. szakasz: Groups

HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

Link In node

Megkapja a msg objektumot a Link Out node-tól.

Function node („func 1”)

Kikeresi a megfelelő szenzor/digitális bemenet adatait (a CONFIG node-ban megadott azonosító alapján), és ellenőrzi, hogy az érték ésszerű-e.

Ha az érték -100 felett van, másolat készül, amelyet a flow.g1_dat-ba ment, a vonatkozó információkat pedig egyedi szenzor/di tulajdonságokká (pl. sensor.name) elemzi.

Ha az érték -100 alatt van (ami lecsatlakozott szenzort jelez), a bemenetet (msg.sensors) figyelmen kívül hagyja, és az adatokat a flow.g1_dat-ból tölti be, amíg a szenzor újra meg nem található, vagy az azonosító meg nem változik a CONFIG node-ban.

A node-nak 3 kimenete van: msg, sensor és di.

Msg kimenet és UI Control node („hide/show groups”)

A node felel a szenzor- vagy a di-csoport (G1_sen vagy G1_di) elrejtéséért/megjelenítéséért.

Sensor kimenet

Link node-pár segítségével csatlakozik az egyes UI-elemekhez (ezek az elemek csak akkor láthatók, ha a csoportazonosító megfelel egy szenzornak).

Text node („name”, „id” stb.)

Szöveget jelenít meg az irányítópulton. Ebben a példában a szenzor nevét, azonosítóját és állapotát.

Function node („Range”)

Elemzi a hozzá csatlakoztatott Gauge node min, max, value és name tulajdonságait.

Smooth node

Kiszámítja az elmúlt 60 érték matematikai átlagát (ez módosítható). Ez biztosítja az alkalmazás megbízhatóságát.

Gauge node

A műszer (gauge) az irányítópulton megjeleníti a szenzor aktuális értékét.

Function node („func”)

Ha az azonosító megváltozott (ezt a „func 1” ellenőrzi), alaphelyzetbe állítja a következő Chart node-ot úgy, hogy üres tömböt küld értékként.

Chart node

Az irányítópulton diagramot jelenít meg az értékről. Az időtartam 1 hét, de a diagram beállítási menüjében módosítható (hosszú időtartamok nem ajánlottak a RAM túlterhelésének kockázata miatt).

Di kimenet és Text node

Szöveget jelenít meg az irányítópulton. Ebben a példában a digitális bemenet nevét, azonosítóját és értékét (0 vagy 1), valamint a riasztási állapotot (0 vagy 1).

Megjegyzések és nyilatkozatok

A műszerek (gauge) min. és max. értéke

A felület műszereinek értékei a Safe Range értékekből számítódnak 10-es kiterjesztéssel, vagyis ha az alsó Safe Range 30, akkor a műszer min. értéke 20 lesz. Ez az egyes csoportok függvényeiben módosítható.

HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

Új csoport hozzáadása az irányítópulthoz

Új csoport hozzáadása az irányítópulthoz kihívást jelenthet és időigényes, de megvalósítható.

1) Másolja be az egyik csoportot;

HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)
HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

2) A rend kedvéért módosítsa a számot a megjegyzésben és a függvényben (pl. func 5);

3) Az oldalsávban lépjen az irányítópult lapra, majd a LAN Sensors lapra, és hozzon létre 2 új csoportot. Kattintson az „edit” gombra, és nevezze át őket G5_sen és G5_di névre (vagy a megfelelő számra);

HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)
HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

4) A „func n” node-ban cserélje ki az összes alábbi számot a megfelelőre (ha ötödik csoportot hoz létre, az összes számot 5-re kell cserélni);

HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)
HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

5) Most jön a fárasztó rész. Menjen végig az új csoport összes UI-node-ján, és módosítsa az irányítópult-csoportot a most létrehozott kettő egyikére (ne feledje, hogy van egy csoport a szenzoroknak – G5_sen – és egy a digitális bemeneteknek – G5_di);

HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

6) Gratulálunk, éppen létrehozott egy új csoportot az irányítópulthoz.

A csoportok átméretezése

A csoportok szélessége a szerkesztőfelületükön egyenként módosítható, hogy kisebb/nagyobb kijelzőhöz igazodjon.

Több adatpont a grafikonon

Ha azt szeretné, hogy a grafikonok adatpont-sűrűsége más legyen, módosíthatja a Smooth node action value (művelet értéke) beállítását. Az alapértelmezett érték 60 -> 3 percenként kerül új adatpont a grafikonra. Ha ezt módosítani szeretné, ne feledje, hogy ez a RAM túlterheléséhez vezethet, és az alkalmazás összeomlását okozhatja.

HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

Újabb eszköz hozzáadása

1) Adjon hozzá egy új tulajdonságot a Change node-ban („CONFIG”) a Flow hatókörhöz, nevezze el „ip_address_2”-nek, és állítsa az értékét a kívánt IP-címre;

2) Jelölje ki az összes node-ot a Template node és a Function node („format data”) között (a kettőt is beleértve), és másolja ki őket;

3) Törölje a Function node („format data”) kapcsolatát, és illessze be a kijelölést e két node közé (a link node-ot át kell helyeznie);

4) Az új Template node-ban cserélje a „flow.ip_address” értéket „flow.ip_address_2”-re;

5) Az új Function node-ban („format data”) törölje a „msg.sensors = []” sort;

6) Törölje az új Change node-ot („set msg.sensors”);

7) Az új Catch node-ban győződjön meg róla, hogy a két új Function és XML Parse node ki van választva, és kösse a Link Out node-hoz;

8) Kösse a régi Function node-ot („format data”) az új Template node-hoz, az új Function node-ot („format data”) pedig a Link node-hoz;

9) A folyamnak most valahogy így kell kinéznie:

HWg-NR1: Node-RED és STE2 R2 integrációs példa (LAN)

Letölthető fájlok

Kérdése van?

Technikai kérdésekben és a megoldás kiválasztásában szívesen segítünk.