From 612c66c222377c3c3b77459c703df0f6cee0a8a5 Mon Sep 17 00:00:00 2001 From: borisneubert Date: Sun, 30 May 2010 09:31:48 +0000 Subject: [PATCH] bugfix: make BS known to CUL to avoid lost messages if both FHZ1300 and CUL are connected, adjust matching rule git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@641 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- CHANGED | 2 ++ FHEM/00_CUL.pm | 21 +++++++++++---------- FHEM/00_FHZ.pm | 2 +- FHEM/09_BS.pm | 16 +++++++++------- contrib/dblog/93_DbLog.pm | 9 +++++++++ 5 files changed, 32 insertions(+), 18 deletions(-) diff --git a/CHANGED b/CHANGED index ef838c2e5..be74a6537 100644 --- a/CHANGED +++ b/CHANGED @@ -11,6 +11,8 @@ - feature: Dimmer function of X10 module changed to match FS20 - feature: allow only meaningful readings (fill level > -5%) in USF1000 - feature: device attr links in commandref.html + - bugfix: make BS known to CUL to avoid lost messages if both FHZ1300 and CUL + are connected, adjust matching rule - 2010-03-13 (4.9) - bugfix: changed the fhem prompt from FHZ> to fhem> diff --git a/FHEM/00_CUL.pm b/FHEM/00_CUL.pm index 06927bb16..b7c41ccf1 100755 --- a/FHEM/00_CUL.pm +++ b/FHEM/00_CUL.pm @@ -55,19 +55,20 @@ CUL_Initialize($) $hash->{ReadFn} = "CUL_Read"; $hash->{WriteFn} = "CUL_Write"; $hash->{Clients} = - ":FS20:FHT:KS300:CUL_EM:CUL_WS:USF1000:HMS:CUL_FHTTK:CUL_RFR:FHT8V". + ":FS20:FHT:KS300:CUL_EM:CUL_WS:USF1000:BS:HMS:CUL_FHTTK:CUL_RFR:FHT8V". ":CUL_HOERMANN:"; my %mc = ( "1:USF1000" => "^81..(04|0c)..0101a001a5ceaa00....", - "2:FS20" => "^81..(04|0c)..0101a001", - "3:FHT" => "^81..(04|09|0d)..(0909a001|83098301|c409c401)..", - "4:KS300" => "^810d04..4027a001", - "5:CUL_WS" => "^K.....", - "6:CUL_EM" => "^E0.................\$", - "7:HMS" => "^810e04....(1|5|9).a001", - "8:CUL_FHTTK" => "^T........", - "9:CUL_RFR" => "^[0-9A-F]{4}U.", - "A:CUL_HOERMANN"=> "^R..........", + "2:BS" => "^81..(04|0c)..0101a001a5cf", + "3:FS20" => "^81..(04|0c)..0101a001", + "4:FHT" => "^81..(04|09|0d)..(0909a001|83098301|c409c401)..", + "5:KS300" => "^810d04..4027a001", + "6:CUL_WS" => "^K.....", + "7:CUL_EM" => "^E0.................\$", + "8:HMS" => "^810e04....(1|5|9).a001", + "9:CUL_FHTTK" => "^T........", + "A:CUL_RFR" => "^[0-9A-F]{4}U.", + "B:CUL_HOERMANN"=> "^R..........", ); $hash->{MatchList} = \%mc; $hash->{ReadyFn} = "CUL_Ready"; diff --git a/FHEM/00_FHZ.pm b/FHEM/00_FHZ.pm index a5ca365ef..18b22e2a9 100755 --- a/FHEM/00_FHZ.pm +++ b/FHEM/00_FHZ.pm @@ -60,7 +60,7 @@ FHZ_Initialize($) $hash->{Clients} = ":FHZ:FS20:FHT:HMS:KS300:USF1000:BS:"; my %mc = ( "1:USF1000" => "^81..(04|0c)..0101a001a5ceaa00....", - "2:BS" => "^81..(04|0c)..0101a001a5cf......", + "2:BS" => "^81..(04|0c)..0101a001a5cf", "3:FS20" => "^81..(04|0c)..0101a001", "4:FHT" => "^81..(04|09|0d)..(0909a001|83098301|c409c401)..", "5:HMS" => "^810e04....(1|5|9).a001", diff --git a/FHEM/09_BS.pm b/FHEM/09_BS.pm index 06d182818..98b279315 100644 --- a/FHEM/09_BS.pm +++ b/FHEM/09_BS.pm @@ -10,15 +10,13 @@ package main; use strict; use warnings; -my $PI= 3.141592653589793238; - ############################# sub BS_Initialize($) { my ($hash) = @_; - $hash->{Match} = "^81..(04|0c)..0101a001a5cf......"; + $hash->{Match} = "^81..(04|0c)..0101a001a5cf"; $hash->{DefFn} = "BS_Define"; $hash->{UndefFn} = "BS_Undef"; $hash->{ParseFn} = "BS_Parse"; @@ -27,7 +25,6 @@ BS_Initialize($) } - ############################# sub BS_Define($$) @@ -35,8 +32,8 @@ BS_Define($$) my ($hash, $def) = @_; my @a = split("[ \t][ \t]*", $def); - my $u= "wrong syntax: define BS [RExt]"; - return $u if((int(@a)< 3) || (int(@a)>4)); + my $u= "wrong syntax: define BS [[RExt] luxOffset]"; + return $u if((int(@a)< 3) || (int(@a)>5)); my $name = $a[0]; my $sensor = $a[2]; @@ -46,9 +43,12 @@ BS_Define($$) $sensor= "0$sensor"; my $RExt = 50000; # default is 50kOhm - $RExt= $a[3] if(int(@a)==4); + $RExt= $a[3] if(int(@a)>=4); + my $luxOffset= 0; # default is no offset + $luxOffset= $a[4] if(int(@a)>=5); $hash->{SENSOR}= "$sensor"; $hash->{RExt}= $RExt; + $hash->{luxOffset}= $luxOffset; my $dev= "a5cf $sensor"; $hash->{DEF}= $dev; @@ -97,12 +97,14 @@ BS_Parse($$) my $value= hex(substr($msg, 25, 3)) & 0x3ff; my $RExt= $def->{RExt}; + my $luxOffset= $def->{luxOffset}; my $brightness= $value/10.24; # Vout in percent of reference voltage 1.1V # brightness in lux= 100lux*(VOut/RExt/1.8muA)^2; my $VOut= $value*1.1/1024.0; my $temp= $VOut/$RExt/1.8E-6; my $lux= 100.0*$temp*$temp; + $lux+= $luxOffset; # add lux offset my $state= sprintf("brightness: %.2f lux: %.0f flags: %d", $brightness, $lux, $flags); diff --git a/contrib/dblog/93_DbLog.pm b/contrib/dblog/93_DbLog.pm index 711f1960a..e3855cc63 100755 --- a/contrib/dblog/93_DbLog.pm +++ b/contrib/dblog/93_DbLog.pm @@ -205,6 +205,15 @@ DbLog_ParseEvent($$) if($reading eq "humidity") { $unit= "%"; } } + # BS + elsif($type eq "BS") { + if($event =~ m(brightness:.*)) { + @parts= split(/ /,$event); + $reading= "lux"; + $value= $parts[4]*1.; + $unit= "lux"; + } + } @result= ($reading,$value,$unit); return @result;