From efea326a902c2ee291a2bdf613c01651e9c287c9 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Sun, 26 Jul 2009 09:20:07 +0000 Subject: [PATCH] Small changes/fixes git-svn-id: https://svn.fhem.de/fhem/trunk@418 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/14_CUL_WS.pm | 26 +++++++++++++++++--------- fhem/TODO | 2 ++ fhem/docs/fhem.html | 2 +- fhem/fhem.pl | 10 ++++++---- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/fhem/FHEM/14_CUL_WS.pm b/fhem/FHEM/14_CUL_WS.pm index 6fb782e1c..10ea89fab 100755 --- a/fhem/FHEM/14_CUL_WS.pm +++ b/fhem/FHEM/14_CUL_WS.pm @@ -84,15 +84,21 @@ CUL_WS_Parse($$) my $cde = ($firstbyte&7) + 1; my $type = $tlist{$a[2]} ? $tlist{$a[2]} : "unknown"; + # There are only 8 S300 devices. In order to enable more, we try to look up + # the name in connection with the receiver's name ("CUL868.1", "CUL433.1") + # See attr IODev XX + my $def = $defptr{$hash->{NAME} . "." . $cde}; $def = $defptr{$cde} if(!$def); - return "" if($def->{IODev} && $def->{IODev}{NAME} ne $hash->{NAME}); - if(!$def) { Log 1, "CUL_WS UNDEFINED $type sensor detected, code $cde"; return "UNDEFINED CUL_WS: $cde"; } + # It's not our device + return "" if($def->{IODev} && $def->{IODev}{NAME} ne $hash->{NAME}); + + my $tm=TimeNow(); $hash = $def; @@ -127,7 +133,7 @@ CUL_WS_Parse($$) $rain = hex($a[5].$a[3].$a[4]) + $c; $val = "R: $rain"; $devtype = "Rain"; - $family = "WS300"; + $family = "WS7000"; } if($typbyte == 3 && int(@a) > 8) { # wind @@ -137,7 +143,7 @@ CUL_WS_Parse($$) my $swing = ($a[7]&6) >> 2; $val = "W: $wnd D: $dir A: $swing"; $devtype = "Wind"; - $family = "WS300"; + $family = "WS7000"; } if($typbyte == 4 && int(@a) > 10) { # temp/hum/press @@ -150,7 +156,7 @@ CUL_WS_Parse($$) } $val = "T: $tmp H: $hum P: $prs"; $devtype = "Indoor"; - $family = "WS300"; + $family = "WS7000"; } if($typbyte == 5 && int(@a) > 5) { # brightness @@ -163,12 +169,12 @@ CUL_WS_Parse($$) my $br = (hex($a[5].$a[4].$a[3])*$fakt) + $hash->{corr1}; $val = "B: $br"; $devtype = "Brightness"; - $family = "WS300"; + $family = "WS7000"; } if($typbyte == 6 && int(@a) > 0) { # Pyro: wurde nie gebaut $devtype = "Pyro"; - $family = "WS300"; + $family = "WS7000"; } if($typbyte == 7 && int(@a) > 8) { # Temp/hum @@ -177,6 +183,7 @@ CUL_WS_Parse($$) $hum = ($a[7].$a[8].".".$a[5]) + $hash->{corr2}; $val = "T: $tmp H: $hum"; $devtype = "Temp/Hum"; + $family = "WS7000"; } @@ -218,13 +225,14 @@ CUL_WS_Parse($$) } my $name = $hash->{NAME}; - Log GetLogLevel($name,4), "CUL_WS $devtype $name: $val"; if(!$val) { Log GetLogLevel($name,1), "CUL_WS Cannot decode $msg"; return ""; } + Log GetLogLevel($name,4), "CUL_WS $devtype $name: $val"; - if(defined($hum) && $hum < 0) { + + if(defined($hum) && $hum < 0) { Log 1, "BOGUS: $name reading: $val, skipping it"; return $name; } diff --git a/fhem/TODO b/fhem/TODO index 8ef0f08d6..558de035e 100644 --- a/fhem/TODO +++ b/fhem/TODO @@ -1,4 +1,6 @@ FHEM: +- RAWTIME + - Remote serial device via IP (for the FHZ1300 WLAN) - Common buffer for parallel use of two devices: CUL+FHZ, (WS300/EM1000PC?) - fhem-to-fhem module diff --git a/fhem/docs/fhem.html b/fhem/docs/fhem.html index 5bf3eae38..1d3ef9919 100644 --- a/fhem/docs/fhem.html +++ b/fhem/docs/fhem.html @@ -59,7 +59,7 @@ Currently implemented features:
  • FHT (Receive/Send)
  • HMS (Receive)
  • S300 (KS300, S300TH, S555TH, etc) - /ul> +
  • reading WS300 data, and up to 9 attached devices
  • reading EM1000WZ/EM1000EM/EM1000GZ data via an attached EM1010PC
  • diff --git a/fhem/fhem.pl b/fhem/fhem.pl index 50a162ff9..f67d65bec 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -133,6 +133,7 @@ use vars qw($init_done); # use vars qw($internal_data); # use vars qw(%cmds); # Global command name hash. To be expanded use vars qw(%data); # Hash for user data +use vars qw($devcount); # To sort the devices use vars qw($reread_active); @@ -146,12 +147,11 @@ my $rcvdquit; # Used for quit handling in init files my $sig_term = 0; # if set to 1, terminate (saving the state) my $modpath_set; # Check if modpath was used, and report if not. my $global_cl; # To use from perl snippets -my $devcount = 0; # To sort the devices my %defaultattr; # Default attributes my %intAt; # Internal at timer hash. my $nextat; # Time when next timer will be triggered. my $intAtCnt=0; -my $cvsid = '$Id: fhem.pl,v 1.75 2009-07-04 10:09:27 rudolfkoenig Exp $'; +my $cvsid = '$Id: fhem.pl,v 1.76 2009-07-26 09:20:07 rudolfkoenig Exp $'; my $namedef = "where is either:\n" . "- a single device name\n" . @@ -401,10 +401,12 @@ sub GetLogLevel(@) { my ($dev,$deflev) = @_; + my $df = defined($deflev) ? $deflev : 2; + return $df if(!defined($dev)); return $attr{$dev}{loglevel} if(defined($attr{$dev}) && defined($attr{$dev}{loglevel})); - return defined($deflev) ? $deflev : 2; + return $df; } @@ -1930,7 +1932,7 @@ doGlobalDef($) { my ($arg) = @_; - $devcount = 0; + $devcount = 1; $defs{global}{NR} = $devcount++; $defs{global}{TYPE} = "_internal_"; $defs{global}{STATE} = "";