diff --git a/tasmota/xsns_58_dht12.ino b/tasmota/xsns_58_dht12.ino index 4bab87bb3..966794ce5 100644 --- a/tasmota/xsns_58_dht12.ino +++ b/tasmota/xsns_58_dht12.ino @@ -57,7 +57,7 @@ bool Dht12Read(void) uint8_t checksum = Wire.read(); Dht12.humidity = ConvertHumidity( (float) humidity + (float) humidityTenth/(float) 10.0 ); - Dht12.temperature = ConvertTemp( (float) temp + (float) tempTenth/(float) 10.0 ); + Dht12.temperature = ConvertTemp( ((float)temp + (float)(tempTenth & 0x7F) / (float) 10.0) * (tempTenth & 0x80) ? -1.0 : 1.0 ); if (isnan(Dht12.temperature) || isnan(Dht12.humidity)) { return false; }