From 0d3f17d3f80a26449f16ea8d1e3a3a8175d00bc3 Mon Sep 17 00:00:00 2001 From: klauswitt Date: Wed, 20 May 2015 21:56:48 +0000 Subject: [PATCH] 51_I2C_BMP180.pm: DbLog_splitFn implemented 52_I2C_SHT21.pm: DbLog_splitFn implemented git-svn-id: https://svn.fhem.de/fhem/trunk@8611 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/51_I2C_BMP180.pm | 16 ++++++++++++++++ fhem/FHEM/52_I2C_SHT21.pm | 18 +++++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/fhem/FHEM/51_I2C_BMP180.pm b/fhem/FHEM/51_I2C_BMP180.pm index 9d53daad4..a0648627e 100644 --- a/fhem/FHEM/51_I2C_BMP180.pm +++ b/fhem/FHEM/51_I2C_BMP180.pm @@ -54,6 +54,7 @@ sub I2C_BMP180_readUncompensatedTemperature($); sub I2C_BMP180_readUncompensatedPressure($$); sub I2C_BMP180_calcTrueTemperature($$); sub I2C_BMP180_calcTruePressure($$$); +sub I2C_BMP180_DbLog_splitFn($); my $libcheck_hasHiPi = 1; @@ -86,6 +87,7 @@ sub I2C_BMP180_Initialize($) { 'roundPressureDecimal:0,1,2 roundTemperatureDecimal:0,1,2 ' . $readingFnAttributes; $hash->{AttrList} .= " useHiPiLib:0,1 " if( $libcheck_hasHiPi ); + $hash->{DbLog_splitFn} = "I2C_BMP180_DbLog_splitFn"; } =head2 I2C_BMP180_Define @@ -516,6 +518,20 @@ sub I2C_BMP180_calcTruePressure($$$) { return $p; } +sub I2C_BMP180_DbLog_splitFn($) { + my ($event) = @_; + Log3 undef, 5, "in DbLog_splitFn empfangen: $event"; + my ($reading, $value, $unit) = ""; + + my @parts = split(/ /,$event); + $reading = shift @parts; + $reading =~ tr/://d; + $value = $parts[0]; + $unit = "\xB0C" if(lc($reading) =~ m/temp/); + $unit = "hPa" if(lc($reading) =~ m/pres/); + return ($reading, $value, $unit); +} + 1; =pod diff --git a/fhem/FHEM/52_I2C_SHT21.pm b/fhem/FHEM/52_I2C_SHT21.pm index 8ef0a746d..4c94b58ac 100644 --- a/fhem/FHEM/52_I2C_SHT21.pm +++ b/fhem/FHEM/52_I2C_SHT21.pm @@ -23,7 +23,7 @@ sub I2C_SHT21_Attr(@); sub I2C_SHT21_Poll($); sub I2C_SHT21_Set($@); sub I2C_SHT21_Undef($$); - +sub I2C_SHT21_DbLog_splitFn($); my %sets = ( 'readValues' => 1, @@ -38,10 +38,10 @@ sub I2C_SHT21_Initialize($) { $hash->{SetFn} = 'I2C_SHT21_Set'; $hash->{UndefFn} = 'I2C_SHT21_Undef'; $hash->{I2CRecFn} = 'I2C_SHT21_I2CRec'; - $hash->{AttrList} = 'IODev do_not_notify:0,1 showtime:0,1 poll_interval:1,2,5,10,20,30 ' . - 'roundHumidityDecimal:0,1,2 roundTemperatureDecimal:0,1,2 ' . + 'roundHumidityDecimal:0,1,2 roundTemperatureDecimal:0,1,2 ' . $readingFnAttributes; + $hash->{DbLog_splitFn} = "I2C_SHT21_DbLog_splitFn"; } sub I2C_SHT21_Define($$) { @@ -267,6 +267,18 @@ sub I2C_SHT21_readHumidity($) { return; # $retVal; } +sub I2C_SHT21_DbLog_splitFn($) { + my ($event) = @_; + Log3 undef, 5, "in DbLog_splitFn empfangen: $event"; + my ($reading, $value, $unit) = ""; + my @parts = split(/ /,$event); + $reading = shift @parts; + $reading =~ tr/://d; + $value = $parts[0]; + $unit = "\xB0C" if(lc($reading) =~ m/temp/); + $unit = "%" if(lc($reading) =~ m/humi/); + return ($reading, $value, $unit); +} 1;