Willkommen im Loxone Community Forum. Um alle Funktionen nutzen und sehen zu können, registriere dich bitte zuerst. Dies gilt auch für das herunterladen von Dateien.
Bitte im Titel immer zuerst den Namen des Plugins hinschreiben
Ich hab mal wieder ein neues Plugin geschrieben, welches die Systemmeldungen vom Loxone Miniserver ausliest und diese via Virtuelle Eingänge wieder zurückspielt um damit Schaltungen zu realisieren.
Ihr könnt dann entsprechend auf die verschiedenen Warnstufen reagieren und ggf. eine Lampe rot leuchten lassen oder ein TTS ausgeben lassen.
Die Möglichkeiten sind schier endlos.
Eine Systemmeldung kann folgendes sein:
* Neustart des Systems
* Ein überwachtes Gerät is offline
* Ein Sensor liefert falsche Werte.
Vergleichbar mit den Warn- und Hinweisleuchten am Cockpit eines Fahrzeuges, gibt das Loxone System über den Systemstatus wichtige Hinweise. Übersicht Der Systemstatus ist ein Kanal, über den der Miniserver gebündelt Meldungen bezüglich des aktuellen Zustands des Systems ausgeben kann. Dies können einfache und unkritische Informationen sein, oder auch Fehler, welche eine sofortige Aktion erfordern. Die […]
Cool. Wo greifst Du die Meldungen ab? Musst Du dazu das Log auslesen oder gibt's die "irgendwo" am MS?
Der Hammer für mich wäre, wenn man die Meldungen automatisch quittieren könnte : Mich nerven die Dinger ungemein ("Großer Temperaturunterschied zwischen.... blah blah blah"), aber das geht wohl nicht, oder?
Über WebSockets lässt sich das bestimmt auch quitieren. Man müsste sich mal anschauen was die App da genau macht. Aber Ronald ist bestimmt schon drann ;-)
Die Idee mit dem automatischen quittieren finde ich ehrlich gesagt ziemlich nice.
Soweit ich gesehen habe ist in der API auch ein Actions part drin, das steckt das sicher drin.
[…] Der Hammer für mich wäre, wenn man die Meldungen automatisch quittieren könnte : Mich nerven die Dinger ungemein ("Großer Temperaturunterschied zwischen.... blah blah blah")
Oja, das wäre echt klasse wenn das gehen würde. Hat mich diesen Sommer richtig genervt und jetzt wo es gerade wieder milder draußen ist, kommt die Meldung auch wieder.
Also, die Nachrichten werden per Websocket als gelesen markiert und auch quittiert. Gleiches geht auch über HTTP.
Die Frage die sich mit stellt ist wie man die Quittierung am sinnvollsten implementiert. Ich würde ungern komplexe Logik ins plugin packen.
Es gibt mehrere Aktionen:
* Als gelesen markieren (dann verschwindet die Meldung in der App und das Plugin liefert die werte auch nicht mehr an den MS)
* Bestätigen (setzt dann einfach nur "confirmed at")
Sinnvoll fände ich es dem Miniserver die Entscheidung zu überlassen, was er quittieren möchte und was nicht. Es möchte eh jeder anders implementiert haben.
Als gelesen markieren: GET http://<MS-IP>/jdev/sps/io/<message-center-id>/readEntry/<entry-id>
Bestätigen: GET http://<MS-IP>/jdev/sps/io/<message-center-id>/action/<entry-id>/1005 (1005 ist die action id, da gibts es auch mehrere)
Um das zu realisieren müsste das Plugin die message-center-id sowie die entry-id liefern und zusätzlich würde ich noch "hasConfirmAction" einbauen sofern diese vorhanden ist. ich glaube nämlich dass die nicht immer da ist.
Wenn die beiden Felder da sind, schickt der MS sich selber einfach nachrichten und die messages sind weg. Push Mitteilungen kommen aber bestimmt trotzdem.
Also, die Nachrichten werden per Websocket als gelesen markiert und auch quittiert. Gleiches geht auch über HTTP.
You made my day!
So wie Du es beschrieben hast finde ich es am Besten - also jeder entscheidet in seiner Logik selbst, ob er quitieren will oder eben nicht. Vielleicht die anderen beiden Optionen als "Default-Schalter" im Plugin, falls jemand wirklich alles abschalten will.
Gerne
Leider ist es doch nicht so einfach wie ich dachte, weil der MS nicht mehrere Werte an einen HTTP Ausgang setzten kann. Das nervt mich jetzt schon wieder.
theoretisch kannst du das so machen, aber ich würde das nicht generalisieren. In dem Fall würdest du jede Meldung quittieren und ich glaube, das willst du nicht. Das Plugin schickt leere werte, wenn eine Meldung als gelesen markiert ist, also reicht dir tendenziell ein Status Baustein aus.
Für meine Demo hab ich folgendes gemacht:
Status Baustein 1: Name "Miniserver Status"
I1: MessageCenter_message_severity
I2: MessageCenter_message_desc
Hab natürlich noch Farben und Symbole ausgewählt dazu, aber das ist nicht so wichtig. Taucht nun eine Meldung auf, dann kann ich diese im Status baustein anzeigen lassen, lese ich sie springt der Baustein zurück auf "Alles Okay".
Für das quittieren habe ich 2 weitere Status Bausteine:
Status Baustein 2: Name "Automatisch quittieren"
I1: MessageCenter_message_severity
I2: MessageCenter_message_affectedName
I3: MessageCenter_message_entryUuid
Einstellungen:
I1 == 3 && I2 == "Loxone Music Server 'Alexa Music Loxberry'" -> Statustext=<v3> Statuswert=1
Am Ausgang TXT hänge jetzt der Virtuelle Ausgang: "Read Message" der automatisch die entryUuid bekommt und abschickt Sobald es gelesen wurde ist der Statustext wieder leer - es geht zwar ein neuer Http Request raus, der macht aber nix.
Für Automatisch Bestätigen alles wie bei Automatisch quittieren + I4: MessageCenter_message_hasConfirmAction
Einstellungen:
I1 == 3 && I2 == "Loxone Music Server 'Alexa Music Loxberry'" && I4 == 1 -> Statustext=<v3> Statuswert=1
Am Ausgang Txt hängt dann "Confirm Message".
So kannst du auf die jeweiligen Meldungen individuell reagieren und ggf auch andere Aktionen auslösen.
Also das ist in der Tat sehr merkwürdig.In dem Bild ist ein Übersetzungs Fehler, es müsste eigentlich heißen "Dieses Plugin benötigt den Express Server > 1.0.1 und < 3.0.0 ....". Da scheint irgendwas bei der Abfrage der Version nicht zu funktionieren, dass du diese Meldung bekommst: https://github.com/LoxYourLife/messa...auth/index.cgi
Welche Version hast du denn installiert vom Express Server?
Im Install log funktioniert der registration call an den express server nicht was dafür spricht, dass zum Zeitpunkt der installation der express server nicht erreichbar war oder der Endpunkt einfach nicht vorhanden ist. "POST http://<loxberry-ip>/admin/express/system/plugin/message_center"
Alles klar - Ich hab den Link aus dem Wiki genommen. Dann liegt es daran - ist noch Version 0.0.3. Ich installiere heute Abend mal direkt die neue Version. Die Meldung oben müsstest du vielleicht auch noch einmal anpassen. Da müsste doch eigentlich stehen: "Dieses Plugin benötigt das Express Server Plugin...", oder?
Mit ExpressServer 1.0.2 läuft es nun. Er scheint auch die Meldungen laut Log vom Miniserver zu bekommen, aber im Broker sehe ich das Topic nicht. Broker läuft auf dem gleichen LoxBerry wie das Plugin:
Code:
2023-01-03T05:51:22: Config got changed - load new config
2023-01-03T05:51:22: Config got changed - load new config
2023-01-03T05:51:26: New system message on miniserver. sending to topic MessageCenter/message: {
2023-01-03T05:51:26: entryUuid: '1a39bc34-038a-34ae-ffff504f94a00fb9',
2023-01-03T05:51:26: affectedName: 'Übersicht',
2023-01-03T05:51:26: title: 'Onlinestatus unüberwacht',
2023-01-03T05:51:26: desc: 'Der Onlinestatus von Geräten folgender Typen wird aktuell nicht überwacht:
- Loxone Music Server
Dadurch erhalten Sie keine Benachrichtigung, wenn eines dieser Geräte nicht mehr erreichbar ist und Ihr automatisiertes Gebäude dadurch nicht mehr wie erwartet funktioniert. Die Onlinestatus-Überwachung können Sie in den Eigenschaften jedes Geräts individuell aktivieren.',
2023-01-03T05:51:26: severity: 2,
2023-01-03T05:51:26: hasConfirmAction: false
2023-01-03T05:51:26: }
Zuletzt geändert von Prof.Mobilux; 03.01.2023, 04:58.
Dennoch gibt's beim ersten senden von Daten eine Race Condition mit der Subscription für MQTT.
Neustarten im Message Center Plugin löst das Problem erstmal.
Werde mir das mal anschauen und einen delay für das erste starten einbauen.
Wir verarbeiten personenbezogene Daten über Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen, Werbung zu personalisieren und Websiteaktivitäten zu analysieren. Wir können bestimmte Informationen über unsere Nutzer mit unseren Werbe- und Analysepartnern teilen. Weitere Einzelheiten finden Sie in unserer Datenschutzrichtlinie.
Wenn Sie unten auf "Einverstanden" klicken, stimmen Sie unserer Datenschutzrichtlinie und unseren Datenverarbeitungs- und Cookie-Praktiken wie dort beschrieben zu. Sie erkennen außerdem an, dass dieses Forum möglicherweise außerhalb Ihres Landes gehostet wird und Sie der Erhebung, Speicherung und Verarbeitung Ihrer Daten in dem Land, in dem dieses Forum gehostet wird, zustimmen.
Kommentar