Plugin: Message Center

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • r.marske
    Dumb Home'r
    • 12.04.2021
    • 20

    #1

    Plugin: Message Center

    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.

    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: systemmeldung.jpg
Ansichten: 537
Größe: 53,3 KB
ID: 372931
    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 […]


    Viel Spass mit dem Plugin.


    Liebe Grüße
    Ronald
  • Prof.Mobilux
    Supermoderator
    • 25.08.2015
    • 4741

    #2
    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?
    🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


    LoxBerry - Beyond the Limits

    Kommentar


    • Gagi
      Gagi kommentierte
      Kommentar bearbeiten
      Ü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 ;-)

    • r.marske
      r.marske kommentierte
      Kommentar bearbeiten
      Das ist ne standard HTTP API, die Meldungen kommen eh verzögert weswegen das nicht so tragisch ist die kontinuierlich abzufragen.

      siehe: https://github.com/LoxYourLife/messa...n/index.js#L41

      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.
  • Curiosity
    Dumb Home'r
    • 18.06.2018
    • 10

    #3
    Zitat von Prof.Mobilux
    […] 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.

    Kommentar

    • Prof.Mobilux
      Supermoderator
      • 25.08.2015
      • 4741

      #4
      Ja, das wäre dann wieder ein nerviges BlinkiBlinki-Icon weniger, wo Loxone uns verweigert selbst zu entscheiden, was wir sehen wollen und was nicht.
      🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


      LoxBerry - Beyond the Limits

      Kommentar

      • r.marske
        Dumb Home'r
        • 12.04.2021
        • 20

        #5
        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.

        Liebe Grüße

        Kommentar

        • Prof.Mobilux
          Supermoderator
          • 25.08.2015
          • 4741

          #6
          Zitat von r.marske
          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.

          🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


          LoxBerry - Beyond the Limits

          Kommentar


          • r.marske
            r.marske kommentierte
            Kommentar bearbeiten
            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.

            Da müsste das dann doch über das Plugin laufen.
        • orli
          Lox Guru
          • 13.11.2016
          • 2554

          #7
          Zitat von Prof.Mobilux
          Mich nerven die Dinger ungemein ("Großer Temperaturunterschied zwischen.... blah blah blah"), aber das geht wohl nicht, oder?
          Michael, gerade diese Meldungen kann man seit einer der letzen Versionen direkt im IRR deaktivieren:

          Klicke auf die Grafik für eine vergrößerte Ansicht  Name: 2023-01-01_12-05-19.png Ansichten: 0 Größe: 57,4 KB ID: 373124

          Sehr cooles Plugin, direkt mal installiert.

          Kommentar


          • Prof.Mobilux
            Prof.Mobilux kommentierte
            Kommentar bearbeiten
            "Einer der letzten Versionen" kommt mir garantiert nicht auf den MS 😉
        • r.marske
          Dumb Home'r
          • 12.04.2021
          • 20

          #8
          Version 0.0.2 ist released, man kann jetzt die Meldungen automatisch lesen und Bestätigen
          feat: Add possibility to automatically read and confirm messages (e448d59) fix: Fix issue with mqtt reconnect (006fd22) correct MQTT topic (edcaec9) Fix upgrade issues (33cf60f)

          Kommentar

          • Prof.Mobilux
            Supermoderator
            • 25.08.2015
            • 4741

            #9
            Hallo Ronald,

            Danke Dir!

            Wie mache ich das in der Praxis? Ich checke "MessageCenter_message_entryUuid" auf Änderungen (s. B. so: https://loxwiki.atlassian.net/wiki/s...ertes+erkennen) und schicke die empfangene Uuid dann an den Endpoint
            Code:
            http://[loxberry-ip]/admin/express/plugins/message_center/message/mark-as-read/[enteryUuid]
            zurück?​
            Zuletzt geändert von Prof.Mobilux; 01.01.2023, 19:24.
            🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


            LoxBerry - Beyond the Limits

            Kommentar

            • r.marske
              Dumb Home'r
              • 12.04.2021
              • 20

              #10
              Hey Michael,

              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

              Einstellungen:
              I1 = 0, text: Alles Okay - keine Meldung
              I1 = 1, text: Info: <v2>
              I1 = 2, text: Warnung: <v2>
              I1 = 3, text: Fehler: <v2>

              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.

              Ich hoffe das hilft dir.

              LG
              Ronald

              Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Untitled.jpg
Ansichten: 479
Größe: 165,0 KB
ID: 373199

              Kommentar

              • Prof.Mobilux
                Supermoderator
                • 25.08.2015
                • 4741

                #11
                Passt - Danke! Irgendetwas haut mit dem Plugin noch nicht hin. Ich bekomme folgende Meldung beim Aufruf der Oberfläche:

                Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 336
Größe: 23,5 KB
ID: 373214

                Express Server läuft. Bei der Installation kamen aber auch Fehlermeldungen (die LoxBerry Error-Seite aus dem Apache). Log hab ich angehängt.​
                🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


                LoxBerry - Beyond the Limits

                Kommentar


                • r.marske
                  r.marske kommentierte
                  Kommentar bearbeiten
                  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"

                  Während ich auf der Suche des Fehlers war, schrieb einer in meiner Community und berichtete vom Selben Fehler -> Es scheint, als wenn die Express Server Version zu gering ist das Plugin braucht mindestens 1.0.0, besser noch 1.0.3 oder wenn du LB 3 laufen hast 2.0.0
                  Loxberry 2: https://github.com/LoxYourLife/loxbe...s/1.0.2-rc.zip
                  Loxberry 3: https://github.com/LoxYourLife/loxbe...tags/2.0.0.zip

                  Das hatte ich im Wiki noch nicht angepasst - definitiv mein Fehler.
                  Zuletzt geändert von r.marske; 02.01.2023, 06:22.

                • Prof.Mobilux
                  Prof.Mobilux kommentierte
                  Kommentar bearbeiten
                  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?

                • r.marske
                  r.marske kommentierte
                  Kommentar bearbeiten
                  Die Meldung habe ich lokal schon angepasst, muss das nur noch ins Git puschen und die version neu generieren.

                  Den Wiki Eintrag für Express hab ich auch schon angepasst.
              • Prof.Mobilux
                Supermoderator
                • 25.08.2015
                • 4741

                #12
                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.
                🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


                LoxBerry - Beyond the Limits

                Kommentar


                • r.marske
                  r.marske kommentierte
                  Kommentar bearbeiten
                  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.

                • Christian Fenzl
                  Christian Fenzl kommentierte
                  Kommentar bearbeiten
                  Macht du Publish oder mit Retain-Flag? Mit Retain kämen die Nachrichten auch rein, wenn die Subscription später dazu kommt.

                • r.marske
                  r.marske kommentierte
                  Kommentar bearbeiten
                  Danke für den Tipp, aktuell mach ich nur publish. Ich teste das gleich mal.
              Lädt...