git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@3562 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig
2013-07-31 18:33:57 +00:00
parent 5b2877c171
commit d0303acb81

View File

@@ -27,6 +27,8 @@ use strict;
use warnings;
#use Data::Dumper;
sub structure_getChangedDevice($);
#####################################
sub
@@ -101,13 +103,29 @@ structure_Undef($$)
# returns the unique keys of the given array
# @my_array = ("one","two","three","two","three");
# print join(" ", @my_array), "\n";
# print join(" ", uniq(@my_array)), "\n";
# print join(" ", structure_uniq(@my_array)), "\n";
sub uniq {
sub
structure_uniq
{
return keys %{{ map { $_ => 1 } @_ }};
}
#############################
# returns the really changed Device
#############################
sub
structure_getChangedDevice($)
{
my ($dev) = @_;
my $lastDevice = ReadingsVal($dev, "LastDevice", undef);
$dev = structure_getChangedDevice($lastDevice)
if($lastDevice && $defs{$dev}->{TYPE} eq "structure");
return $dev;
}
#############################
sub structure_Notify($$)
{
@@ -266,7 +284,7 @@ sub structure_Notify($$)
last if($minprio == 1);
} #foreach
@clientstate = uniq(@clientstate);# eleminiere alle Dubletten
@clientstate = structure_uniq(@clientstate);# eleminiere alle Dubletten
#ermittle Endstatus
my $newState = "undefined";
@@ -285,7 +303,11 @@ sub structure_Notify($$)
Log GetLogLevel($me,5), "Update structure '$me' to $newState" .
" because device $dev->{NAME} has changed";
readingsSingleUpdate($hash, "state", $newState, 1);
readingsBeginUpdate($hash);
readingsBulkUpdate($hash, "LastDevice", $dev->{NAME});
readingsBulkUpdate($hash, "LastDevice_Abs", structure_getChangedDevice($dev->{NAME}));
readingsBulkUpdate($hash, "state", $newState);
readingsEndUpdate($hash, 1);
delete($hash->{INNTFY});
undef;