From a2dca22ceb065686d976b317029149f9fec52a49 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Sun, 21 Feb 2016 17:28:13 +0000 Subject: [PATCH] fhem.pl: deterministic order of userReadings execution (Forum #49682) git-svn-id: https://svn.fhem.de/fhem/trunk@10906 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/fhem.pl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/fhem/fhem.pl b/fhem/fhem.pl index d9822b9df..4038ce421 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -2479,8 +2479,7 @@ CommandAttr($$) # matches myReading1[:trigger2] { codecode1 } my $regexi= '\s*([\w.-]+)(:\S*)?\s+((\w+)\s+)?({.*?})\s*'; my $regexo= '^(' . $regexi . ')(,\s*(.*))*$'; - - #Log 1, "arg is $arg"; + my $rNo=0; while($arg =~ /$regexo/s) { my $userReading= $2; @@ -2495,6 +2494,7 @@ CommandAttr($$) $userReadings{$userReading}{trigger}= $trigger; $userReadings{$userReading}{modifier}= $modifier; $userReadings{$userReading}{perlCode}= $perlCode; + $userReadings{$userReading}{readingNo}= $rNo++; } else { push @rets, "$sdev: unknown modifier $modifier for ". "userReading $userReading, this userReading will be ignored"; @@ -3870,7 +3870,9 @@ readingsEndUpdate($$) # process user readings if(defined($hash->{'.userReadings'})) { my %userReadings= %{$hash->{'.userReadings'}}; - foreach my $userReading (keys %userReadings) { + foreach my $userReading (sort { $userReadings{$a}{readingNo} <=> + $userReadings{$b}{readingNo} } + keys %userReadings) { my $trigger = $userReadings{$userReading}{trigger}; if(defined($trigger)) {