Ankündigung

Einklappen
Keine Ankündigung bisher.

MQTT Number einfachste Berechnung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    MQTT Number einfachste Berechnung

    Hallo zusammen,

    leider half ein ausführliche google und Forumsuche nicht weiter. Daher die Anfrage direkt.

    Ich möchte über einen Pulsegeber den Stromzähler "ablesen", hierzu sendet dieser mir die erkannten impulse welche ich einfach immer addieren möchte und später daraus die KWH berechnen und noch meinen aktuellen Zählerstand (als Basis) eingeben möchte.
    Aber ich scheitere bereits an der ersten einfachsten Berechnung:

    Items:
    Code:
    Number MQTT_Strom_HT_Total "MQTT Total [%.2f Wh]" (Strom) {mqtt="<[meinbroker:/ESP_Easy/Strom-HT/Total:state:default]"}
    Number MQTT_Strom_HT_Count "MQTT Pulse [%.2f Wh]" (Strom) {mqtt="<[meinbroker:/ESP_Easy/Strom-HT/Count:state:default]"}
    Number Stromzaehler "Stromzähler" (Strom)
    Rule
    Code:
    rule "Stromzaehler"
    when
    Item MQTT_Strom_HT_Count changed
    then
    Stromzaehler.postUpdate((Stromzaehler.state as Number) + (MQTT_Strom_HT_Count.state as Number))
    end
    Fehler im Log
    Code:
    2018-08-05 19:48:38.721 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Stromzaehler': java.lang.Number
    Was mache ich falsch, beide Items sind doch vom Typ Number?

    Vielen vielen Dank
    Zuletzt geändert von marcel0509; 05.08.2018, 19:07.

    #2
    Bist Du sicher, dass beide Items auch eine gültige Zahl enthalten? Du kannst das in der Rule einfach überprüfen:
    Code:
    rule "Stromzaehler"
    when
        Item MQTT_Strom_HT_Count changed
    then
        if (!(Stromzaehler.state instanceof Number)) Stromzaehler.postUpdate(0)
        if (MQTT_Strom_HT_Count.state instanceof Number)
           Stromzaehler.postUpdate((Stromzaehler.state as Number) + (MQTT_Strom_HT_Count.state as Number))
    end
    Diese Rule prüft zuerst, ob Stromzaehler.state vom Typ Number ist (was Anfangs nicht der Fall ist). Ist dies nicht der Fall, setzt es 0 als gültige Zahl ein.
    Danach prüft es, ob MQTT_Strom_HT_Count.state vom Typ Number ist. Ist dies der Fall, wird die nachfolgende Berechnung funktionieren.

    Kommentar


      #3
      Super vielen Dank, es funktioniert auf Anhieb. Ich denke es lag daran dass das Item Stromzaehler noch keinen Wert hatte. Wie du geschrieben hast.

      Jetzt mache ich mich mal an die eigentliche Berechnung und dann an das Grafische!

      Dank dir

      Kommentar

      Lädt...
      X