FHEM Forum

FHEM - Anwendungen => Heizungssteuerung/Raumklima => Thema gestartet von: srxp am 28 Oktober 2015, 11:43:27

Titel: Bug Negative Werte in 89_VControl.pm
Beitrag von: srxp am 28 Oktober 2015, 11:43:27
Hallo allerseits,
und zwar folgendes. Wollte heute mittels dem VControl Modul welches ich schon seit einiger Zeit am laufen habe und vollends zufrieden bin, das Niveau der Heizkennlinie  neue setzen. Also quasi einen negativen Wert (-4). Leider funktionierte das allerdings nicht und so begab ich mich auch gleich auf die Fehlersuche und wurde auch fündig.
Hab im Modul in der Funktion VControl_2ByteSConv, bei der If-Abfrage ob der Wert negativ ist, folgendes geändert:

Die Zeile
return substr($cnvstrvalue,6,2).substr($cnvstrvalue,4,2);

wurde durch diese hier ersetzt

return substr($cnvstrvalue,14,2).substr($cnvstrvalue,12,2);

Danach hatte alles funktioniert.

Und ich vermute das ist der Grund:
Es wird zwar ein paar Zeilen darüber eine umwandlung der dezimalzahl in eine 4-stellig hexzahl vollzogen (z.B. -40 in FFD8), allerdings haben negativ werte in python 16-stellen. das dreht python anscheinend automatisch um. also quasi FFFFFFFFFFFFFFD8.
deswegen wurde immer FFFF übergeben anstatt D8FF.
theoretisch könnte man vermutlich auch gleich eine umwandlung mit %16X machen und dann würde meine neu eingefügte zeile für positive sowie negative werte gelten, das hab ich aber nicht probiert da es für mich jetzt so funktioniert.

Liebe Grüße,
Stephan