Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie 4Byte-Werte verarbeiten?

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

    [Codebeispiel] Wie 4Byte-Werte verarbeiten?

    Hallo miteinander,

    bei der Auswertung der Werte meiner Wärmepumpe kämpfe ich im Moment mit der Umrechung eines 4Byte-Wertes. Bspw. wird die Laufzeit des Kältekreises als 4Byte-Wert geliefert. In der ETS sieht das so aus:

    Code:
    Datenpunkttyp: 4Byte
    Datenpunktwert: 1416360
    Rohwert: 49 AC E5 40
    Dieser Wert muss für die tatsächliche Laufzeit noch durch 3600 dividiert werden, das ist aber erstmal gar nicht das Problem. Wenn ich diesen 4Byte-Wert in openHAB auslese und mir direkt ins Log schreiben lasse, dann ist dieser viel zu klein:

    Code:
    2015-09-27 21:42:21.416 [INFO ] [org.openhab.model.script.FILE ] - RW_Heat_pump_Hours_run_refrigerantcircuit: 2191.36
    Wenn ich den Wert von 2191.36 durch 3600 dividiere, dann kommen da 0,6h heraus und das kann definitiv nicht stimmen. ;-)

    Konkret sieht meine Rule wie folgt aus:

    Code:
    //Betriebsstunden Kältekreis
    rule "RW_Heat_pump_Hours_run_refrigerantcircuit"
    when
        System started or
        Item RW_Heat_pump_Hours_run_refrigerantcircuit changed
    then
        var Number counter = (RW_Heat_pump_Hours_run_refrigerantcircuit.state as DecimalType).floatValue()
        logInfo("FILE", "RW_Heat_pump_Hours_run_refrigerantcircuit: " + RW_Heat_pump_Hours_run_refrigerantcircuit.state)
        counter = counter / 3600
        RW_Heat_pump_Hours_run_refrigerantcircuit__HR.postUpdate(counter)
    end
    Mit anderen Umrechnungen (2Byte-Werte) klappt das nach diesem Schema wunderbar. Was mach ich noch falsch, dass die 4Byte-Werte nicht korrekt ausgelesen werden?
    Kind regards,
    Yves

    #2
    Hast Du bei der Definition des Items den DPT mit angegeben? Meistens hängt es bei falschen Werten daran, dass der DPT falsch zugeordnet ist...

    Kommentar


      #3
      Hi

      Zitat von udo1toni Beitrag anzeigen
      Hast Du bei der Definition des Items den DPT mit angegeben? Meistens hängt es bei falschen Werten daran, dass der DPT falsch zugeordnet ist...
      Ah, das ist vermutlich der entscheidende Hinweis. Habe nun die Items wie folgt definiert:

      Code:
      Number RW_Heat_pump_Hours_run_refrigerantcircuit "Wärmepumpe Betriebsstunden Kältekreis [%.1f]" { knx="<12.001:2/5/008" }
      Number RW_Heat_pump_Hours_run_refrigerantcircuit__HR "Wärmepumpe Betriebsstunden Kältekreis [%.1f]" (HeatPump)
      Das erste Item wird vom Bus gelesen und das zweite dann via Rule mit dem Human-Readable-Wert befüllt, welcher in der Visu referenziert wird. Das sieht schon viel besser aus jetzt!
      Kind regards,
      Yves

      Kommentar

      Lädt...
      X