Épületautomatizálási adatok továbbítása Splunk Enterprise felé

“Az ember fejlődésének és boldogságának kulcsa a rendszerek és a szervezettség iránti törekvésében rejlik” – Nicola Tesla

Mi is ez a Splunk Enterprise és hogy kerül ide

A Splunk egy olyan szoftverplatform, amely segít a szervezeteknek a gépi adatok valós idejű keresésében, monitorozásában és elemzésében. Az egyik legnagyobb előnye, hogy bármilyen formátumú adatot képes feldolgozni, legyen az struktúrált, félig struktúrált vagy nem struktúrált. Az adatforrások széles skálájából származhatnak, például szerverek naplófájljai, hálózati eszközök, alkalmazások vagy akár az IoT eszközök.

A Splunk alapvetően két fő részből áll:

  • az adatgyűjtő és az elemző részből. Az adatgyűjtő rész felelős az adatok begyűjtéséért és indexeléséért, vagyis a beérkező adatokat rendszerezi és tárolja úgy, hogy azok később könnyen kereshetők és elemezhetők legyenek.
  • Az elemző rész pedig lehetővé teszi a felhasználók számára, hogy különböző kereséseket futtassanak, jelentéseket készítsenek és vizualizációkat hozzanak létre ezekből az adatokból akár előre definiált akár ad-hoc módon.

A Splunk egyik kiemelkedő jellemzője a Splunk Query Language (SPL), amely egy speciális keresőnyelv az adatok lekérdezésére és manipulálására. Az SPL segítségével a felhasználók bonyolult kereséseket és elemzéseket végezhetnek el, anélkül hogy mélyebb programozási ismeretekre lenne szükségük. A Splunk emellett számos kiegészítő modult és alkalmazást is kínál, amelyek tovább bővítik a rendszer képességeit.

Az okosotthonok és épületautomatizálás területén a Splunk számos előnyt kínál. Az okosotthonokban és épületautomatizálásban a Splunk használata különösen hasznos lehet a rendszergazdák, biztonsági szakemberek és adatkutatók számára. Például, ha valaki szeretné tudni, hogy miért csökken a rendszer hálózati teljesítménye, a Splunk segítségével gyorsan megtalálhatja a releváns naplófájlokat és azonosíthatja a problémát. Biztonsági szakemberek számára a Splunk segíthet azonosítani a gyanús tevékenységeket, például az illetéktelen hozzáférési kísérleteket vagy a szenzorok anomáliáit. Az adatkutatók pedig a Splunk adatvizualizációs képességeit használhatják, hogy mélyebb betekintést nyerjenek az otthon vagy épület működésébe, és új összefüggéseket tárjanak fel.

A Splunk nagy előnye, hogy skálázható, azaz képes kezelni a kis mennyiségű adatot, de ugyanakkor hatékonyan működik nagyon nagy mennyiségű adat esetén is. Ezért kisebb lakásoktól kezdve nagyobb épületekig mindenki hasznosíthatja (létezik nem kereskedelmi, üzleti célra használható ingyenes verzió is 500 MB-os napi korlátig). Az egyszerű webes felületének köszönhetően a műszaki vénával rendelkező felhasználók könnyen megtanulhatják és alkalmazhatják a rendszer különböző funkcióit. Mászaki vénával nem rendlekzők számára pedig készíthetők műszaki vénával nem rendelkzők számára előre elkészített dashboard-ok.

A Splunk az okosotthonok és épületautomatizálás számára egy rendkívül sokoldalú és hatékony eszköz, amely lehetővé teszi, hogy a felhasználók jobban megértsék és kihasználják a rendszereik által generált adatokat. Azáltal, hogy valós időben nyújt betekintést az adatokba, segíthet a problémák gyors azonosításában és megoldásában, valamint az otthonok és épületek működésének optimalizálásában. Ezen túlmenően, a Splunk segítségével könnyebbé válik a rendszerek folyamatos monitorozása és a különböző automatizálási folyamatok finomhangolása, ami növeli a hatékonyságot és a biztonságot egyaránt.

Összességében a Splunk nem csak az IT világában, hanem az okosotthonok és épületautomatizálás területén is kiváló megoldást kínál, amely segíthet a felhasználóknak a mindennapi működés optimalizálásában és a hosszú távú siker elérésében mivel az adatokat nem csak rövid, vagy közép távon képes tárolni, hanem akár több évre visszamenőleg is, és azokon  akár ad-hoc elemzéseket is végrehajtani…

Bár elsőre úgy tűnhet, hogy klasszikus kifejezéssel élve “ágyúval verébre” ez az Enterprise környezetbe való eszköz, hisz hasonló funkcionalitást a legtöbb okosotthon és épület automatizáló rendszer is nyújt, de a Splunk erősségei közé tartozik a valós idejű adatgyűjtés, keresés és az elemzés akár évekre visszamenőleg is. Az SPL (Splunk Query Language) segítségével bonyolult lekérdezéseket és elemzéseket végezhetnek, anélkül hogy mély programozási ismeretekre lenne szükségük. Ezzel szemben az okosotthon vezérlő központok általában előre konfigurált adatelemzési képességekkel rendelkeznek, amelyek az adott rendszerhez és eszközökhöz igazodnak az adatokon egy új elemzés kialakítása után visszamenőleg nehézkes,vagy akár nem is lehetséges az elemzés, ugyanis ezek a központok gyakran kevésbé rugalmasak az ad-hoc elemzések terén, mivel a funkcionalitásuk inkább az előre meghatározott automatizációs folyamatokra és eszközökre fókuszál. A Splunk nagyobb rugalmasságot és mélyebb adatelemzési képességeket kínál, az okosotthon vezérlő központok inkább az egyszerűségre és a specifikus feladatokra vannak optimalizálva.

Konkrét megvalósítás 3 vezérlőközpont esetében

Az adatfelhordási lehetőségek és megoldások bemutatását 3 különböző okosotthon-, épületautomatizálási vezérlőközpont esetében is megmutatom.  A bemutatás célja nem a terjedelem bővítése, hanem annak érzékeltetése, hogy a módszer minél szeléskörűbb bemutatása. 3 központot fogok alkalmazni a technikai lépések érzékeltetésére:

  • Home Assitant
  • ComfortClick
  • Loxone

a választás szubjektív (az indok 1*ű, ezek álltak rendelkezésemre saját forrásból), de a leírt logika alapján bármi beköthető ami támogatja a HTTP(S) protokolon keresztül JSON adatok beküldését Authentikációs header alkalmazásával…

Splunk rendszer előkészítése

Ahhoz, hogy a Splunk rendszer adatokat legyen képes fogadni HTTPS protokolon keresztül JSON formátumban (ld. előző cikk) természetesen ezen az oldalon is szükséges néhány konfiguráció elvégzése:

  • tároló index (tekinthető az adatokat tartalmazó adatbázisnak) létrehozása
  • adatfogadás engedélyezése

index létrehozás

A setting => indexes menüpont alatt találáható az index kezelési funkció

Itt létre kell hozni azt a cél indexet amiben majd az adatokat tárolni akarjuk (New Index => kulcs paraméterek megadása):

ezzel létre is jöt az adatok tárolására szolgáló objektum. Következő lépésben létre kell hozni a kapcsolatot fogadó ún. HTTP Event Collector-t (HEC)

HTTP Event Collector létrehozása

HTTP Event Collector-t a Settings => Data Inputs => HTTP Event Collector menüpont alatt tehetjük majd meg 2 lépésben. Ez a collector biztosítja a lehetőséget, hogy külső forrásból HTTS (jelen példában egyszerűség kedvéért HTTP) protkolon keresztül JSON adatokat legyünk képesek fogadni.

Azonban előtte globálisan engedélyezni kell a HEC kapcsolat használatát Global Settings => All tokens => Enable => Save:

Lépések a HEC definiálásához Settings => Data Inputs => HTTP Event Collector => New Token funkció alatt:

Review => Submit és már el is készültünk

A későbbiekben a következő adatokra lesz szükségünk az integrációkhoz:

Splunk szerver IP címe vagy DNS neve: nálam a tesztekhez 192.168.3.xx2

HEC fogadó port-ja: 8088

Token értéke: 0b7cca35-….-….-ac0b-bea13e76b476

tokenhez tartozó index neve: home_comfortclick

és ezzel hozzá is láthatunk a vezérlő oldali integrációkhoz…

Beküldés módja CURL paranccsal szemléltetve:

 

curl https://192.168.3.xx2/services/collector/event -H "Authorization: Splunk 33cb07fc-...-...-9003-5029d09a1f8c" -d '{"event": "Hello, world!", "sourcetype": "manual"}'

Ebben a parancsban látszik, hogy az authentikáció a HEC-nél definiált token alapon működik, és POST methódust használ a JSON adatok beküldésére…

Home Assistant

Home Assistant esetében könnyű dolgunk van több okból is.

  • Mindenki által széles körben ismert rendszer, nem szükséges bemutatni
  • Gyárilag előkészítve a Splunk környezetbe való beküldésre (ez is mutatja, hogy van mit keresnie a Splunk környezetnek az épület automatizálási témakörben)

HA-ban gyárilag tartalmaz ún. Splunk connector-t. Használatához csak a configuration.yaml file-ban a fenti adatokat kell megadnunk kiegészítve azzal, hogy mely entitásokat szeretnénk beküldeni:

splunk:
  token: 0b7cca35-....-....-....-bea13e76b476
  host: 192.168.3.xx2
  port: 8088
  filter:
    include_entities:
      - sensor.shellyplug_s_42c719_power
      - sensor.shellyplug_s_87e9d2_power
      - sensor.shellyplug_s_88242f_power
      - sensor.shellyplug_s_4360fd_power

Ebben a példában 4 Shellyx Plug “power” adatait küldöm be a Splunk környezetbe

Bővebben: https://www.home-assistant.io/integrations/splunk

Comfort Click

A Comfort Click széles körben kevésbé ismert rendszer, azonban ez a környezet is egy fejlett épületautomatizálási rendszer, amely az otthonok és épületek kényelmének, biztonságának és energiahatékonyságának növelésére és széleskörű együttműködésre lett tervezve.

A rendszer támogatja a KNX, Z-Wave, Modbus, BACnet protokollokat, valamint integrálható Amazon Alexa, Google Assistant, Samsung Smart TV, LG Smart TV, DSC, Paradox, Satel biztonsági rendszerekkel, IP kamerákkal, Global Caché, IRTrans, Kodi, Sonos, Philips Hue eszközökkel és IP intercomokkal.

Nagy előnye, hogy a ComfortClock felhasználói felülete könnyen testreszabható és WYSIWYG (What You See Is What You Get) alapokon teljesen átalakítható, ami azt jelenti, hogy a felhasználók valós időben láthatják a módosításokat, ahogy azokat végrehajtják.

A rendszer másik nagy előnye, hogy könnyen skálázható, így kis lakásokban és nagyobb épületekben egyaránt hatékonyan alkalmazható.

A konfigurálás az ún. bOS konfigurátoron keresztül szabható testre és konfigurálható. Felületén bejelentkezve új virtuális device-t kell felvenni (Device jobb klick => Add => Device => Add) és azt további objektumokkal kiegészíteni

 

A további lépések összefoglalva a következők:

  • HTTP device definiálása, majd ezen belül további 4 objektum felvétele
    • Command objektum a POST methódus kezelésére
    • Két string objektum felvétele a hard code-olás elkerülésére
    • Automatizmus felvétele a változások kezelésére
HTTP device definiálása

A device definiálása után a következőképp kell az objektumhoz tartozó paramétereket beállítani

paraméter string-ek definiálása

Két string definiálására lesz szükségünk, a token és az ún. splunk sourcetype (az a tárolt adatokban a forrástípusok megkülönböztethetőségére van segítségével lehetőség, HEC beküldésnél kötelező elemnek tekintendő). Ezt az objektum Value tab ablakrészénél lehetséges megadni

PostByHEC command definiálása

A parancs defniniálása alábbi lépéssorozat, paraméterezés mellett történik

A string-ek, vagy más objektum property-hez tartozó paraméterek a … gombra adhatók meg amennyiben azok nem alaptípusok.

Ez utóbbi paraméterezésnél látszik, hogy egy objektum képes átnyúlni másik objektum tulajdonságaihoz és a beküldött értéket jelen esetben a monitorozott UPS bejövő feszültségértéke szolgáltatja.

Send2Splunk esemény definiálása

Végül nincs más feladatunk mint a ComfortClick által biztosított IFTT ( If-Then-That ) megoldással a monitorozott érték változásakor a feszültség érték beküldése. Ezt program objektummal lehetséges megtenni.

Itt látszik, hogy Trigger-ként az UPS input voltage paraméterének OnChange eseményét használtuk (minden változáskor végrehajtódik), és a trigger érvényesüléskor a PostByHEC parancs Send függvényét hívjuk meg.

Ezzennel meg is vagyunk a másik objektum által vizsgált UPS Input voltage paraméter elküldésre került a Big Data környezetbe.

Bővebben: https://support.comfortclick.com/knowledge-bases/6-bos

( a ComfortClick rendszer kereskedelmi termék, bővebben róla itt lehet olvasni: https://www.comfortclick.com/Products/Servers )

Loxone

Végezetül a “nagy ágyú”! Azoknak akik már nézegették a kereskedelmi megoldások termékpalettáját, számukra – gondolom – nem szükséges bemutatni. Nagyon jól bemutatja a lényegét a következő marketing szakasz

“Egy épület ma már nem csak falak, vezetékek és különböző műszaki eszközök összessége, hanem egy logikusan összekapcsolt intelligens rendszer, amely teljes mértékben a  felhasználók igényei szerint működik. A Loxone épületautomatikai megoldásának lényege, hogy az olyan funkciók, mint árnyékolás, világítás, hűtés-fűtés, biztonság stb.  központilag vezérelve automatizáltan, összehangoltan működnek, és így teszik egyszerűbbé, kényelmesebbé és hatékonyabbá életünket. Legfőbb jellemzője, hogy a  mindennapi szituációkra optimalizált működéshez szinte egyáltalán nincs szükség kézi vezérlésre (távvezérlésre sem).” – Verdom Kft.

Szerintem alapvető filozófiája, hogy amit lehet azt automatizáljuk és minél kevesebb legyen a felhasználói beavatkozás, számtalan előre definiált forgatókönyvet, automatizmust tartalmaz, így blokkokból nagyon gyorsan lehet komplex megoldásokat létrehozni. E mellett ki kell emelni, hogy már rég nem igaz, miszerint a Loxone egy zárt rendszer és nem integrálható bele és a vezérlő sem integrálható más megoldásokba. Saját eszközein kívül Z-Wave, ZigBee, és számos más protkolon sok-sok gyártó számtalan terméke integrálható bele különböző kiegészítésekkel (pl. LoxBerry). Természetesen azonban saját eszközeivel működik legoptimálisabban, mivel azokkal van összehangolva alapértelmezetten.

Virtuális kimenet definiálása

Loxone esetében a kulcs az ún. virtuális kimenet, ennek segítségével lehetséges továbbítani az adatokat 3rd party rendszerek felé HTTP(S) protokolon.

A definiált virtuális kimenetcím paraméterénél kell megadni a célt http(s)://[IP vagy DNS név]:port formátumban. Lényeges, hogy itt még csak a cél host került megadásra, az ott megcímzendő endpoint máshol kerül beállításra (hasonlóan a ComfortClick-hez).

Virtuális kimenethez tartozó parancsok definiálása

Az előbb definiált kimenethez hozzá kell rendelni, hogy melyik érzékelőt milyen parancssal küldjük be a távoli rendszerbe. Ezek a parancsok a fenti ábrán mint VCQ1 és VCQ2 jelenik meg.

A két parancs konfigurációs beállítása a következő:

paraméterezésnél beállítandó a

  • service endpoint (parancs BE állapotban)
  • az alkalmazandó header (HTTP header BE parancshoz)
  • a küldendő JSON objektum (HTTP body BE parancshoz)
  • POST methódus (HTTP header BE parancshoz)
  • adatküldési gyakoriság (HTTP header BE parancshoz)
    sajnos ez utóbbi esetben nem lehetséges a jelenlegi verzióban a bejövő érték változására automatikus újraküldés, ezért ezt a workaround-ot lehet használni.

Azt hogy melyik VCQ[1-2] melyik mért – vagy egyéb módon előállt – értéket küldje be a POST methódussal a jobb oldali grafikus felületen tudjuk megadni a Loxone-nál megszokott “huzalozási” módon.

Bővebben: https://loxwiki.atlassian.net/wiki/spaces/LOXEN/overview

Loxone Demo Case: https://shop.loxone.com/enen/wp-democase.html

LoxBerry: https://wiki.loxberry.de/en/start

És lássuk végre az eredményt!

Ehhez be kell jelentkeznünk a Splunk Enterprise felületére és ott az alapértelmezett SPL Seach & Reporting App felületre zarándokolnunk (én esetemben http://192.168.3.xx2:8000/en-US/):

Itt ellenőrizhetjük a beérkező adatokat a következő SPL lekérdezésekkel ellenőrizhetjük (ugye nem kell mondanom, hogy az index=”…” rész a korábban definiált index-el behelyetesítendő):

index="home_assistant"
index="home_comfortclick"
index="home_loxone"

Eredményként valami hasonló, a nyers adatokat tartalmazó listát kell látnunk

De ezzel még gyakorlatilag ott tartunk mintha a korábban említett hatalmaas XLS táblát nézegetnénk. Amivel közelebb vagyunk a céjainkhoz, hogy

  • Ezekben az adatokban már bármilyen időskálán tudunk Ad-Hoc keresést és elemzést végrehajtani (triviális példaként mikor volt a páratartalom magasabb mint 50%), természetesen a tárolt adatokban, kombináltan is lehet keresni bármilyen időintervallumban bármilyen összefüggésben ami SPL (vagy hamarosan SPL2) nyelvben megfogalmazható.
    Az komplexen tárolt adatok származhatnak bármilyen más – nem csak épületautomatizálás – adatok, származhatnak akár operációs rendszerek biztonsági adait tartalmazó LOG-okból, vagy termelési adatok egy ipari környezetből, vagy akár WEB Shop adatok. A lehetőségek száma végtelen, és bármilyen időintervallumban ad-hoc kereshető akár utólag is ha eszünkbe jut, hogy “ja épp ezt szeretném megnézni, bár előre nem definiáltam a kérdést”…

És eredményként a nyers adatokból információt leképezve:

UPS bejövő feszültség értékei (Comfort Click)

 

Dugaszoló aljzatokban mért fogyasztás (Home Assistant)

 

Hőmérséklet és páratartalom értékek (Loxone Touch)

Halk megjegyzés a bejegyzés végére: Ami számomra e cikk írásakor is (ismét) feltűnt, sajnos az okosotthon és épület automatizálási megoldások nem igazán támogatják a dokumentálhatóságot! Ha valaki tud erre vonatkozóan hatékony és jó megoldást, kérem ne tartsa magába ossza meg tudását ahogy én is megtettem ezzel a cikkel…

A sorozat (igény esetén) folytatódhat. Jöhetne még..?

hu_HUMagyar