52_I2C_HDC1008.pm: Fix "temperature" reading (again)
Ouch, my last change from Aug, 1st (r22515) broke update of temperature reading. Fix and simplify the temperature and humidity reading code - hopefully finally. git-svn-id: https://svn.fhem.de/fhem/trunk@22595 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||||
# Do not insert empty lines here, update check depends on it.
|
# Do not insert empty lines here, update check depends on it.
|
||||||
|
- bugfix: 52_I2C_HDC1008: fix "temperature" (broken by change from Aug, 1st)
|
||||||
- feature: 49_SSCam: new attribute ptzNoCapPrePat
|
- feature: 49_SSCam: new attribute ptzNoCapPrePat
|
||||||
- feature: 60_Watches: control buttons,new attr hideButtons, controlButtonSize
|
- feature: 60_Watches: control buttons,new attr hideButtons, controlButtonSize
|
||||||
some more changes according PBP
|
some more changes according PBP
|
||||||
|
|||||||
@@ -178,14 +178,13 @@ sub I2C_HDC1008_I2CRec ($$) {
|
|||||||
if ( $clientmsg->{direction} eq "i2cread" && defined($clientmsg->{received}) )
|
if ( $clientmsg->{direction} eq "i2cread" && defined($clientmsg->{received}) )
|
||||||
{
|
{
|
||||||
Log3 $hash, 5, "[$name] I2C_HDC1008_I2CRec received: $clientmsg->{type} $clientmsg->{received}";
|
Log3 $hash, 5, "[$name] I2C_HDC1008_I2CRec received: $clientmsg->{type} $clientmsg->{received}";
|
||||||
I2C_HDC1008_GetTemp ($hash, $clientmsg->{received}) if $clientmsg->{nbyte} == 4;
|
I2C_HDC1008_UpdateTempHum ($hash, $clientmsg->{received}) if $clientmsg->{nbyte} == 4;
|
||||||
I2C_HDC1008_GetHum ($hash, $clientmsg->{received}) if $clientmsg->{nbyte} == 4;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sub I2C_HDC1008_GetTemp ($$)
|
sub I2C_HDC1008_UpdateTempHum ($$)
|
||||||
{
|
{
|
||||||
my ($hash, $rawdata) = @_;
|
my ($hash, $rawdata) = @_;
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
@@ -196,33 +195,20 @@ sub I2C_HDC1008_GetTemp ($$)
|
|||||||
Log3 $hash, 4, "[$name] I2C_HDC1008_I2CRec invalid temperature raw value: $tempWord";
|
Log3 $hash, 4, "[$name] I2C_HDC1008_I2CRec invalid temperature raw value: $tempWord";
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $temperature = (($tempWord /65536.0)*165.0)-40.0;
|
my $temperature = (($tempWord /65536.0)*165.0)-40.0;
|
||||||
|
|
||||||
Log3 $hash, 5, "[$name] I2C_HDC1008_I2CRec calced Temperatur: $temperature";
|
|
||||||
|
|
||||||
|
|
||||||
$temperature = sprintf( '%.' . AttrVal($hash->{NAME}, 'roundTemperatureDecimal', 1) . 'f', $temperature );
|
|
||||||
}
|
|
||||||
|
|
||||||
sub I2C_HDC1008_GetHum ($$)
|
|
||||||
{
|
|
||||||
my ($hash, $rawdata) = @_;
|
|
||||||
my $name = $hash->{NAME};
|
|
||||||
|
|
||||||
my @raw = split(" ",$rawdata);
|
|
||||||
my $humWord = ($raw[2] << 8 | $raw[3]);
|
my $humWord = ($raw[2] << 8 | $raw[3]);
|
||||||
if ( ($humWord & 0x3) != 0) {
|
if ( ($humWord & 0x3) != 0) {
|
||||||
Log3 $hash, 4, "[$name] I2C_HDC1008_I2CRec invalid humidity raw value: $humWord";
|
Log3 $hash, 4, "[$name] I2C_HDC1008_I2CRec invalid humidity raw value: $humWord";
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $humidity = ($humWord /65536.0)*100.0;
|
my $humidity = ($humWord /65536.0)*100.0;
|
||||||
|
|
||||||
Log3 $hash, 5, "[$name] I2C_HDC1008_I2CRec calced humidity: $humidity";
|
Log3 $hash, 5, "[$name] I2C_HDC1008_I2CRec calced temp/hum: $temperature $humidity";
|
||||||
|
|
||||||
my $temperature = ReadingsVal($hash->{NAME} ,"temperature","0");
|
$temperature = sprintf( '%.' . AttrVal($hash->{NAME}, 'roundTemperatureDecimal', 1) . 'f', $temperature );
|
||||||
$humidity = sprintf( '%.' . AttrVal($hash->{NAME}, 'roundHumidityDecimal', 1) . 'f', $humidity );
|
$humidity = sprintf( '%.' . AttrVal($hash->{NAME}, 'roundHumidityDecimal', 1) . 'f', $humidity );
|
||||||
|
|
||||||
readingsBeginUpdate($hash);
|
readingsBeginUpdate($hash);
|
||||||
readingsBulkUpdate($hash, 'humidity', $humidity);
|
readingsBulkUpdate($hash, 'humidity', $humidity);
|
||||||
readingsBulkUpdate($hash, 'temperature', $temperature);
|
readingsBulkUpdate($hash, 'temperature', $temperature);
|
||||||
@@ -231,11 +217,7 @@ sub I2C_HDC1008_GetHum ($$)
|
|||||||
'state',
|
'state',
|
||||||
'T: ' . $temperature . ' H: ' . $humidity
|
'T: ' . $temperature . ' H: ' . $humidity
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
readingsEndUpdate($hash, 1);
|
readingsEndUpdate($hash, 1);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub I2C_HDC1008_Undef($$)
|
sub I2C_HDC1008_Undef($$)
|
||||||
|
|||||||
Reference in New Issue
Block a user