Code: Alles auswählen
$temperature = ($temperature &0x4000) ? $temperature - 0x8000 : $temperature;
ist aber so lange her dass ich es vergessen hatte.

Und ich glaube ich habe verstanden wie das Vorzeichen in HM reinkommt:
Das eigentliche Vorzeichen in Bit15 wird ja gelöscht und dieses Bit je nach Gerät für das lowBatt Flag genutzt.
Also "borgt" man sich das Vorzeichen aus Bit14 unter Ausnutzung der Eigenschaft einer Zweierkomplement Zahl, das für die unteren/kleinen negativen Zahlen die hohen Bits alle 1 sind.
https://de.wikipedia.org/wiki/Zweierkomplement
Das geht solange gut bis Bit14 in einer negative Zahl nicht mehr 1 wäre, dann würde das Vorzeichen für HM oder FHEM kaputt gehen.
Da dies erst bei
-16385 / 1011111111111111 passiert was mit 10-Skalierung -1638,5 °C entsprechen würde, ist alles im grünen Bereich da diese Temp. nicht vorkommen kann.