2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-16 10:46:03 +00:00

Small changes/fixes

git-svn-id: https://svn.fhem.de/fhem/trunk@418 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2009-07-26 09:20:07 +00:00
parent 218dc58b75
commit efea326a90
4 changed files with 26 additions and 14 deletions

View File

@ -84,15 +84,21 @@ CUL_WS_Parse($$)
my $cde = ($firstbyte&7) + 1; my $cde = ($firstbyte&7) + 1;
my $type = $tlist{$a[2]} ? $tlist{$a[2]} : "unknown"; 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 <name> IODev XX
my $def = $defptr{$hash->{NAME} . "." . $cde}; my $def = $defptr{$hash->{NAME} . "." . $cde};
$def = $defptr{$cde} if(!$def); $def = $defptr{$cde} if(!$def);
return "" if($def->{IODev} && $def->{IODev}{NAME} ne $hash->{NAME});
if(!$def) { if(!$def) {
Log 1, "CUL_WS UNDEFINED $type sensor detected, code $cde"; Log 1, "CUL_WS UNDEFINED $type sensor detected, code $cde";
return "UNDEFINED CUL_WS: $cde"; return "UNDEFINED CUL_WS: $cde";
} }
# It's not our device
return "" if($def->{IODev} && $def->{IODev}{NAME} ne $hash->{NAME});
my $tm=TimeNow(); my $tm=TimeNow();
$hash = $def; $hash = $def;
@ -127,7 +133,7 @@ CUL_WS_Parse($$)
$rain = hex($a[5].$a[3].$a[4]) + $c; $rain = hex($a[5].$a[3].$a[4]) + $c;
$val = "R: $rain"; $val = "R: $rain";
$devtype = "Rain"; $devtype = "Rain";
$family = "WS300"; $family = "WS7000";
} }
if($typbyte == 3 && int(@a) > 8) { # wind if($typbyte == 3 && int(@a) > 8) { # wind
@ -137,7 +143,7 @@ CUL_WS_Parse($$)
my $swing = ($a[7]&6) >> 2; my $swing = ($a[7]&6) >> 2;
$val = "W: $wnd D: $dir A: $swing"; $val = "W: $wnd D: $dir A: $swing";
$devtype = "Wind"; $devtype = "Wind";
$family = "WS300"; $family = "WS7000";
} }
if($typbyte == 4 && int(@a) > 10) { # temp/hum/press if($typbyte == 4 && int(@a) > 10) { # temp/hum/press
@ -150,7 +156,7 @@ CUL_WS_Parse($$)
} }
$val = "T: $tmp H: $hum P: $prs"; $val = "T: $tmp H: $hum P: $prs";
$devtype = "Indoor"; $devtype = "Indoor";
$family = "WS300"; $family = "WS7000";
} }
if($typbyte == 5 && int(@a) > 5) { # brightness 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}; my $br = (hex($a[5].$a[4].$a[3])*$fakt) + $hash->{corr1};
$val = "B: $br"; $val = "B: $br";
$devtype = "Brightness"; $devtype = "Brightness";
$family = "WS300"; $family = "WS7000";
} }
if($typbyte == 6 && int(@a) > 0) { # Pyro: wurde nie gebaut if($typbyte == 6 && int(@a) > 0) { # Pyro: wurde nie gebaut
$devtype = "Pyro"; $devtype = "Pyro";
$family = "WS300"; $family = "WS7000";
} }
if($typbyte == 7 && int(@a) > 8) { # Temp/hum if($typbyte == 7 && int(@a) > 8) { # Temp/hum
@ -177,6 +183,7 @@ CUL_WS_Parse($$)
$hum = ($a[7].$a[8].".".$a[5]) + $hash->{corr2}; $hum = ($a[7].$a[8].".".$a[5]) + $hash->{corr2};
$val = "T: $tmp H: $hum"; $val = "T: $tmp H: $hum";
$devtype = "Temp/Hum"; $devtype = "Temp/Hum";
$family = "WS7000";
} }
@ -218,13 +225,14 @@ CUL_WS_Parse($$)
} }
my $name = $hash->{NAME}; my $name = $hash->{NAME};
Log GetLogLevel($name,4), "CUL_WS $devtype $name: $val";
if(!$val) { if(!$val) {
Log GetLogLevel($name,1), "CUL_WS Cannot decode $msg"; Log GetLogLevel($name,1), "CUL_WS Cannot decode $msg";
return ""; 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"; Log 1, "BOGUS: $name reading: $val, skipping it";
return $name; return $name;
} }

View File

@ -1,4 +1,6 @@
FHEM: FHEM:
- RAWTIME
- Remote serial device via IP (for the FHZ1300 WLAN) - Remote serial device via IP (for the FHZ1300 WLAN)
- Common buffer for parallel use of two devices: CUL+FHZ, (WS300/EM1000PC?) - Common buffer for parallel use of two devices: CUL+FHZ, (WS300/EM1000PC?)
- fhem-to-fhem module - fhem-to-fhem module

View File

@ -59,7 +59,7 @@ Currently implemented features:<br>
<li>FHT (Receive/Send) <li>FHT (Receive/Send)
<li>HMS (Receive) <li>HMS (Receive)
<li>S300 (KS300, S300TH, S555TH, etc) <li>S300 (KS300, S300TH, S555TH, etc)
/ul> </ul>
</li> </li>
<li>reading WS300 data, and up to 9 attached devices</li> <li>reading WS300 data, and up to 9 attached devices</li>
<li>reading EM1000WZ/EM1000EM/EM1000GZ data via an attached EM1010PC</li> <li>reading EM1000WZ/EM1000EM/EM1000GZ data via an attached EM1010PC</li>

View File

@ -133,6 +133,7 @@ use vars qw($init_done); #
use vars qw($internal_data); # use vars qw($internal_data); #
use vars qw(%cmds); # Global command name hash. To be expanded use vars qw(%cmds); # Global command name hash. To be expanded
use vars qw(%data); # Hash for user data use vars qw(%data); # Hash for user data
use vars qw($devcount); # To sort the devices
use vars qw($reread_active); 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 $sig_term = 0; # if set to 1, terminate (saving the state)
my $modpath_set; # Check if modpath was used, and report if not. my $modpath_set; # Check if modpath was used, and report if not.
my $global_cl; # To use from perl snippets my $global_cl; # To use from perl snippets
my $devcount = 0; # To sort the devices
my %defaultattr; # Default attributes my %defaultattr; # Default attributes
my %intAt; # Internal at timer hash. my %intAt; # Internal at timer hash.
my $nextat; # Time when next timer will be triggered. my $nextat; # Time when next timer will be triggered.
my $intAtCnt=0; 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 = my $namedef =
"where <name> is either:\n" . "where <name> is either:\n" .
"- a single device name\n" . "- a single device name\n" .
@ -401,10 +401,12 @@ sub
GetLogLevel(@) GetLogLevel(@)
{ {
my ($dev,$deflev) = @_; my ($dev,$deflev) = @_;
my $df = defined($deflev) ? $deflev : 2;
return $df if(!defined($dev));
return $attr{$dev}{loglevel} return $attr{$dev}{loglevel}
if(defined($attr{$dev}) && defined($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) = @_; my ($arg) = @_;
$devcount = 0; $devcount = 1;
$defs{global}{NR} = $devcount++; $defs{global}{NR} = $devcount++;
$defs{global}{TYPE} = "_internal_"; $defs{global}{TYPE} = "_internal_";
$defs{global}{STATE} = "<no definition>"; $defs{global}{STATE} = "<no definition>";