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 irányítópult

HWg-NR1 Node-RED folyam (Flow)

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.

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

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.

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:

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).

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

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

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ó.

Ú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;


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);


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);


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);

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.

Ú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:

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.