multiple Broadcast Meldungen

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Benutzeravatar
udo1toni
Beiträge: 13983
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: multiple Broadcast Meldungen

Beitrag von udo1toni »

Warum Deine Rule nicht so will, wie Du, kann ich Dir auch nicht beantworten. Vermutlich ist das Problem dabei, dass counter zu irgendeinem Zeitpunkt wieder auf 0 gesetzt wird.

Aber ein anderer Ansatz:

Code: Alles auswählen

rule "RenaultZEService Zoe send broadcast if under certain limit"
when
    System started or
    Item RenaultZEServices_Zoe_RemainingRange changed
then
    if(RenaultZEServices_Zoe_Charging.state.toString != "Not charging") {                                                           // falscher Zustand, also Abbruch
        logInfo("RemainingRange","Charging Status ist {}. Deshalb Abbruch!",RenaultZEServices_Zoe_Charging.state)
        return;                                                                                                                     // das Semikolongehört da hin!
    }
    var Number nNewState = 0                                                                                                        // Variable für aktuelle Reichweite
    if(RenaultZEServices_Zoe_RemainingRange.state instanceof Number)                                                                // Falls gültige Zahl im Status
        nNewState = RenaultZEServices_Zoe_RemainingRange.state as Number                                                            // Variable setzen

    var Number nOldState = 100                                                                                                      // Variable für alte Reichweite
    if(previousState instanceof Number)                                                                                             // Falls gültige Zahl
        nOldState = previousState as Number                                                                                         // Variable setzen

    var Number nLevel = 0                                                                                                           // Variable für Level
    if(RenaultZEServices_Zoe_ChargeLevel.state instanceof Number)                                                                   // Falls gültige Zahl
        nLevel = RenaultZEServices_Zoe_ChargeLevel.state as Number                                                                  // Variable setzen

    if(nOldState >= 100 && nNewState < 100) {                                                                                       // Falls Reichweite unter 100 gesunken
        sendBroadcastNotification("Achtung! Restreichweite: " + nNewState.toString +"km Ladestatus: " + nLevel.toString + "%"  )
        logInfo("RemainingRange", "Remaining Range unter 100 km")
    }
    if(nOldState >= 50 && nNewState < 50) {                                                                                         // Falls Reichweite unter 100 gesunken
        sendBroadcastNotification("Kritisch! Restreichweite: " + nNewState.toString +"km Ladestatus: " + nLevel.toString + "%"  )
        logInfo("RemainingRange", "Remaining Range unter 50 km")
    }
end
Man kommt ohne zusätzlichen Counter aus, indem man previousState nutzt. Des ist eine implizite Variable, die bei dem Trigger changed zur Verfügung steht (unabhängig von Persistence!)
Da die Rule auch auf System started triggern soll, muss das berücksichtigt werden. Es könnte z.B. sein, dass die Items noch gar nicht initialisiert sind. previousState ist bei der ersten Wertänderung NULL, hier käme es also sicher zu einem Problem. Mit vorbelegten Variablen wird das Problem umgangen.
Sollten previousState und RemainingRange beide nicht initialisiert sein, werden zwei Notifications geschickt. MAn kann das verhindern, aber vielleicht ist das Verhalten sogar gut? Das dürfte ohnehin nur beim Systemstart der Fall sein (nicht beim Reload der Rule-Datei, obwohl sie dann ebenfalls triggert).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

shuo
Beiträge: 181
Registriert: 1. Sep 2018 18:24
Answers: 0

Re: multiple Broadcast Meldungen

Beitrag von shuo »

Herzlichen Dank für die Rückmeldung. Dein Ansatz klingt logisch und würde ihn gleich mal anwenden.

Vielen Dank!

shuo
Beiträge: 181
Registriert: 1. Sep 2018 18:24
Answers: 0

Re: multiple Broadcast Meldungen

Beitrag von shuo »

Hallo Udo.

Nachdem das Auto jetzt "endlich" mal wieder die Schwellen erreicht hat, dass ernüchternde Ergebnis. Auch mit Deinem Code werden die Meldungen mehrfach verschickt.
benachrichtigungen.PNG

Um 13.38 Uhr freute ich mich, dass nichts mehr gekommen ist, jedoch habe ich dann um 15:02/03 Uhr gleich wieder ein paar Meldungen erhalten. Kannst Du Dir das erklären?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
sihui
Beiträge: 1827
Registriert: 11. Apr 2018 19:03
Answers: 21

Re: multiple Broadcast Meldungen

Beitrag von sihui »

shuo hat geschrieben: 25. Sep 2020 16:35 Nachdem das Auto jetzt "endlich" mal wieder die Schwellen erreicht hat, dass ernüchternde Ergebnis.
> Off topic
ZOE wenn ich das richtig gelesen habe. Unser ist auch unterwegs, 52kWh Akku ...
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.

Benutzeravatar
udo1toni
Beiträge: 13983
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: multiple Broadcast Meldungen

Beitrag von udo1toni »

shuo hat geschrieben: 25. Sep 2020 16:35 Hallo Udo.

Nachdem das Auto jetzt "endlich" mal wieder die Schwellen erreicht hat, dass ernüchternde Ergebnis. Auch mit Deinem Code werden die Meldungen mehrfach verschickt.

benachrichtigungen.PNG


Um 13.38 Uhr freute ich mich, dass nichts mehr gekommen ist, jedoch habe ich dann um 15:02/03 Uhr gleich wieder ein paar Meldungen erhalten. Kannst Du Dir das erklären?
Ich nehme mal an, dass RenaultZEServices_Zoe_RemainingRange zwischendurch keinen gültigen Wert liefert.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

shuo
Beiträge: 181
Registriert: 1. Sep 2018 18:24
Answers: 0

Re: multiple Broadcast Meldungen

Beitrag von shuo »

Das könnte natürlich sein. Die Werte kommen direkt vom Renault - Server. Falls es ein ungülter Wert sein sollte, wie könnte ich das mit einbauen?
Hättest Du einen Vorschlag?

Benutzeravatar
udo1toni
Beiträge: 13983
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: multiple Broadcast Meldungen

Beitrag von udo1toni »

Im Zweifel musst Du dann ein Proxy Item dazwischenschalten. Bei Wertänderung überträgt eine Rule den Wert vom Originalitem zum Proxy Item, allerdings unter der Bedingung, dass ein gültiger Wert vorliegt. Das muss die Rule natürlich checken.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

shuo
Beiträge: 181
Registriert: 1. Sep 2018 18:24
Answers: 0

Re: multiple Broadcast Meldungen

Beitrag von shuo »

Hi Udo, soweit klar.
allerdings unter der Bedingung, dass ein gültiger Wert vorliegt.
Wie soll ich das überprüfen? Sowas wie:

Code: Alles auswählen

rule "proxy"
when
    System started or
    Item RenaultZEServices_Zoe_RemainingRange changed
then
   if(RenaultZEServices_Zoe_RemainingRange.state Instanceof Number) ( proxyValue.sendCommand(RenaultZEServices_Zoe_RemainingRange))

proxyValue würde ich dann der eigentlichen Rule übergeben?

Benutzeravatar
udo1toni
Beiträge: 13983
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: multiple Broadcast Meldungen

Beitrag von udo1toni »

Ja, aber: 1. Was willst Du da mit System started? Sobald das Item einen gültigen Wert liefert, triggert die Rule eh.
2. instanceof wird klein geschrieben.
3. Du musst kein sendComnand verwenden, sondern postUpdate.
4. Du musst den state senden, nicht das Item.
5. Die Klammern um das sendCommand sind unnötig.

:)

Gesendet von meinem SM-G973F mit Tapatalk


openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

shuo
Beiträge: 181
Registriert: 1. Sep 2018 18:24
Answers: 0

Re: multiple Broadcast Meldungen

Beitrag von shuo »

da waren sie wieder die copy-paste Fehler. Danke Udo!

Antworten