[Megoldva] MQTT message megjelenites bongeszoben

 ( sza2king | 2018. október 13., szombat - 10:53 )

Hali,

Kicsit kifejtve a cimet:

Van egy szenzorhalozatom, a szenzorok MQTT uzeneteket termelnek, egy Raspberry Pi-on fut az MQTT broker. A szenzoroktol erkezo adatok egik vegallomasa egy weboldal lenne, ahol szeretnem real-time (? talan nem a legjobb kifejezes, szoval szeretnem a legujabb adatokat azonnal megjeleniteni amint elerhetoek).

Az elkepzelesem az, hogy egy (Apache) webszerverhez futnanak be a publikalt uzenetek, majd a szerver valami (push notification-t mondanek, bar lehet, hogy ez sem helyes) modon ertesitene a browsert, hogy van uj adat, jelenitse meg (frissitse).

Az a megoldas nem jarhato, hogy a bongeszo direkt modon iratkozik fel az adott topic-okra, mert nem feltetlen vannak egy halozaton.

Tehat a kerdes, hogy hogyan lehetne a web szerverrel "fogadni" a publikalt uzeneteket es "letolni" a bongeszobe (tehat event-kent jelenne meg, nem pollingolva lenne).

A web-es reszehez szinte egyaltalan nem ertek, szoval az lenne a legjobb, ha valaki megmondana, hogy milyen modulok kellenek az Apache-hez, hogyan kell konfiguralni, hogy mukodjon meg egy, az en kornyezetemre szemelyre szabott html / js / php / akarmi mukodo mintakodot adna, hogy csak bemasoljam a megfelelo helyekre, nyomjak egy Apache restart-ot, es oruljek, hogy mukodik ;-)

Azert a fenti off-the-shelf megoldasnak keves eselyet latom...

A gond ott kezdodik (nyilvan azon tul, hogy nem vagyok jaratos ebben), hogy el se tudom donteni, hogy mi lenne az optimalis es korszeru megoldas. Amik szemebejottek eddig: AJAX, WebSockets, Comet, NodeJS, Node-RED, JS, PHP. Az is lehet, hogy van sokkal jobb megoldas, mint amiket en eddig kigugliztam, csak nem talatam ra.

Olyan example-t pl. mar talatam, ami PHP-ben van megirva es (kozolon inditva) feliratkozik topic-okra, amikor jon valami kiirja a konzolban. De azt pl. nem tudom, hogyan tudnam ezt beleintegralni egy weboldalba (mar ott megakadok, hogy van benne egy loop, tehat nem egyszer lefut, hanem folyamatosan porog, sosem ter vissza, egy callback irogatja ki a dolgolkat).

Ami "push notification"-t illeti, talan a WebSockets johet szoba, de lehet, hogy mar van mas szebb / egyszerubb / jobb megoldas.

Felmerult a NodeJS is, ami ha jol gondolom eggyel magasabb szintrol kozeliti meg a dolgot, de nem tudom, alkalmas-e arra mit en szeretnek.

Szoval igen, alaveto epitokovek hianyoznak a tudasombol, ezzel tisztaban vagyok - ezert is kerdezem itt, ahol eleg sokan foglalkoztok hasonloval.

Bocsi, ha tul hosszu lett a topic.

Koszi,

Udv,

/sza2

Vegul NodeJS lett, WebSocket, MQTT.js (+ valoszinuleg React a megjeleniteshez).

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

En node.js-szel csinaltam websockettel, azzal eleg egyszeru volt mqtt-hez kapcsolodni, es egyebkent is callback alapu, szoval passzolt a logikajaba.

Mivel nem ertek hozza, kicsit kifejtosebben nem lenne rossz.

Jelenleg NodeJS + MQTT.js mukodik, ha elinditom a szkriptemet szepen jonnek az uzenetek a topic-bol amire feliratokoztam.

/sza2

--
Digital? Every idiot can count to one - Bob Widlar

Nodejs-ben írsz egy "szerver" alkalmazást ami az mqtt üzeneteket websocket üzenetekké alakítja.
Írsz egy klienst Reactben ami meg a böngészőn fut és feliratkozik a websocketre.
Ehhez kell egy nodejs server és egy webserver.
--
Gábriel Ákos

https://hup.hu/node/161231#comment-2276081

/sza2

--
Digital? Every idiot can count to one - Bob Widlar

Az általad felsoroltakhoz (AJAX, WebSockets, Comet, NodeJS,…) én sem értek. Ezért választottam a Home Assistant használatát. Vannak hülyeségei, de az elején biztosan egyszerűbb, mint nulláról nekiugrani a NodeJS-nek. Aztán megtaláltam a Home Assistantra építő AppDaemont a Dashboarddal egyetemben (https://appdaemon.readthedocs.io/en/latest/DASHBOARD_CREATION.html). Ez már sokkal szimpatikusabb, ráadásul az AppDaemon python-ban programozható, amiben ugyan nem vagyok profi, de mindenképpen többet tudok róla, mint a JavaScriptről. Így ezzel a hármassal (HA, AppDaemon, Dashboard) most elég jól elvagyok.

En sem ertettem :)
Legalabb megtanultam valami ujat.

Na én a Pythonnal vagyok így.

Az is megvolt, kb ugyanakkor es ugyanazert.
Aztan megtetszett :)