( enpassant | 2017. 04. 25., k – 09:23 )

> Miért bonyolódna? Teszi a dolgát, pont úgy, mintha ezt a vezérlő programot egy központi szabályzóban írnád le... sőt, a központ vezérlő programja lesz igazán bonyolult, pedig bőven elég a megfelelő szintre tenni a megfelelő döntéshozatalt.

Az a sejtésem, hogy a lényeget még mindig nem érted, ezért egy utolsó kísérletet teszek.

A szelepvezérlőnek pontosan elég annyi feladat, hogy ha nyitnia kell, akkor nyit, ha zárnia kell, akkor zár, illetve még státusz (health) információkat közöl magáról.
Nézzük, ha iderakod a vezérlő programját, akkor mi lesz itt plusz funkció, ami a message broker (továbbiakban MB) esetén a "központi vezérlőben" nincs:
- a szenzorok kérdezgetése,
- figyelni a timeoutra,
- számolni szenzoronként az egymás utáni timeoutokat,
- amennyiben egy számot meghalad, akkor felhasználó figyelmeztetése,
- esetleges párhuzamosítás (soros esetén az idők összeadódnak, itt főleg a timeoutok dobhatják meg nagyon),
- erős függőség van az egyes eszközök között.

Felhasználó figyelmeztetése esetén az aggályok:
- mi a francnak kéne, hogy egy szelepvezérlőnek ez legyen a feladata?
- ha van 10 szelepvezérlőnk, akkor hibás szenzoronként kapunk tíz figyelmeztetést

Ráadásul ezeket a feladatokat minden egyes vezérlődben meg kell írnod, ha egyből pl. véletlen kihagyod a timeout kezelést, akkor a vezérlőd ott fog várni az idők végezetéig.

Ami az MB "központi vezérlőjében" van és semmi más:
- beérkező szenzor adatok és hőmérséklet szabályozó adatok összegzése,
- időnként, a beérkezett adatok alapján szelepvezérlő üzenetek publikálása.

Ami még különbség, MB-s esetben egy szenzor több adata alapján dönt, a szelepvezérlős esetben egy szenzor egy adatából dönt, ha több adata alapján akarnánk dönteni, akkor még tovább bonyolódik a programja.

Szerinted melyik az egyszerűbb?

Egy darab hibakezelő programocska feladatai:
- Beérkező státusz (health) adatok összegzése.
- Ha egy eszköz vagy microservice X ideig nem ad életjelt, akkor hiba üzenet publikálása.

Az így kiadott hibaüzeneteket pl. egy web-es programocska megjelenítheti, egy másik emailt küldhet, de ugyanúgy fel lehet használni akár a ház szabályozásánál, pl. extrém hibánál egy lámpa villogtatása vagy hangjelzés. Ezek mind egymástól teljesen független kis programocskák, semmilyen függőségben nem állnak egymással.

Ha több vezérlő eszköznek kell együttműködnie, akkor további problémák vannak:
- hova kerüljön a "vezérlő" program,
- hogyan működjenek együtt,
- itt is erős függőségben lesznek.

Pl. egy szobában több szelepvezérlő; fűtés és szellőztetés együttműködése; világítás, mozgásérzékelők, multimédia, árnyékolás, ... együttműködése.