Some undefined fixes in the new code

git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@1887 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig
2012-09-24 08:15:57 +00:00
parent 13267e0ed5
commit d4550834f8

View File

@@ -166,12 +166,12 @@ sub structure_Notify($$)
#Bsp: A --> nur Reading A gehuert zur Struktur #Bsp: A --> nur Reading A gehuert zur Struktur
#Bsp: A B --> Reading A und B gehuert zur Struktur #Bsp: A B --> Reading A und B gehuert zur Struktur
$devstate = ReadingsVal($d, $value[0], undef); $devstate = ReadingsVal($d, $value[0], undef);
push(@clientstate, $devstate); push(@clientstate, $devstate) if(defined($devstate));
} elsif(@value == 2) { } elsif(@value == 2) {
# zustand wenn der Status auf dem in der Struktur definierten # zustand wenn der Status auf dem in der Struktur definierten
# umdefiniert werden muss # umdefiniert werden muss
# bsp: on:An # bsp: on:An
if($devstate eq $value[0]){ if(defined($devstate) && $devstate eq $value[0]){
$devstate = $value[1]; $devstate = $value[1];
push(@clientstate, $devstate); push(@clientstate, $devstate);
$i=99999; $i=99999;
@@ -181,7 +181,7 @@ sub structure_Notify($$)
# Reading:OriginalStatus:NeuerStatus wenn zb. ein Device mehrere # Reading:OriginalStatus:NeuerStatus wenn zb. ein Device mehrere
# Readings abbildet, zb. 1wire DS2406, DS2450 Bsp: A:Zu.:Geschlossen # Readings abbildet, zb. 1wire DS2406, DS2450 Bsp: A:Zu.:Geschlossen
$devstate = ReadingsVal($d, $value[0], undef); $devstate = ReadingsVal($d, $value[0], undef);
if($devstate eq $value[1]){ if(defined($devstate) && $devstate eq $value[1]){
$devstate = $value[2]; $devstate = $value[2];
push(@clientstate, $devstate); push(@clientstate, $devstate);
# $i=99999; entfernt, wenn Device mehrere Ports/Readings abbildet # $i=99999; entfernt, wenn Device mehrere Ports/Readings abbildet
@@ -191,7 +191,7 @@ sub structure_Notify($$)
# Log 1, "Dev: ".$d." Anzahl: ".@value." Value:".$value[0]." devstate: # Log 1, "Dev: ".$d." Anzahl: ".@value." Value:".$value[0]." devstate:
# ".$devstate; # ".$devstate;
$minprio = $priority{$devstate} $minprio = $priority{$devstate}
if($devstate && if(defined($devstate) &&
$priority{$devstate} && $priority{$devstate} &&
$priority{$devstate} < $minprio); $priority{$devstate} < $minprio);
} }
@@ -199,10 +199,10 @@ sub structure_Notify($$)
# falls kein mapping im Device angegeben wurde # falls kein mapping im Device angegeben wurde
$devstate = ReadingsVal($d, "state", undef); $devstate = ReadingsVal($d, "state", undef);
$minprio = $priority{$devstate} $minprio = $priority{$devstate}
if($devstate && if(defined($devstate) &&
$priority{$devstate} && $priority{$devstate} &&
$priority{$devstate} < $minprio); $priority{$devstate} < $minprio);
push(@clientstate, $devstate); push(@clientstate, $devstate) if(defined($devstate));
} }
#besser als 1 kann minprio nicht werden #besser als 1 kann minprio nicht werden
@@ -212,12 +212,12 @@ sub structure_Notify($$)
@clientstate = uniq(@clientstate);# eleminiere alle Dubletten @clientstate = uniq(@clientstate);# eleminiere alle Dubletten
#ermittle Endstatus #ermittle Endstatus
my $newState; my $newState = "";
if($behavior eq "absolute"){ if($behavior eq "absolute"){
# wenn absolute, dann gebe undefinierten Status aus falls die Clients # wenn absolute, dann gebe undefinierten Status aus falls die Clients
# unterschiedliche Status' haben # unterschiedliche Status' haben
if(@clientstate > 1) { $newState = "undefined";} if(@clientstate > 1) { $newState = "undefined";}
else { $newState = $clientstate[0];} elsif(@clientstate > 0) { $newState = $clientstate[0];}
} elsif($behavior eq "relative" && $minprio < 99999) { } elsif($behavior eq "relative" && $minprio < 99999) {
$newState = $priority[$minprio]; $newState = $priority[$minprio];
} else { } else {
@@ -226,7 +226,7 @@ sub structure_Notify($$)
#eigenen Status jetzt setzen, nur wenn abweichend #eigenen Status jetzt setzen, nur wenn abweichend
if($hash->{STATE} ne $newState) { if(!defined($hash->{STATE}) || ($hash->{STATE} ne $newState)) {
Log 3, "Update structure '" .$me . "' to " . $newState . Log 3, "Update structure '" .$me . "' to " . $newState .
" because device '" .$dev->{NAME}. "' has changed"; " because device '" .$dev->{NAME}. "' has changed";
$hash->{STATE} = $newState; $hash->{STATE} = $newState;