From 7cc7bab90fc4d93bd81769f1adc1e626229268eb Mon Sep 17 00:00:00 2001 From: jpawlowski Date: Sat, 17 Dec 2016 16:44:22 +0000 Subject: [PATCH] 70_ENIGMA2: fix name and servicename for running recordings git-svn-id: https://svn.fhem.de/fhem/trunk@12800 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/70_ENIGMA2.pm | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/fhem/FHEM/70_ENIGMA2.pm b/fhem/FHEM/70_ENIGMA2.pm index 184dc5bf8..f045290ac 100644 --- a/fhem/FHEM/70_ENIGMA2.pm +++ b/fhem/FHEM/70_ENIGMA2.pm @@ -1866,13 +1866,15 @@ sub ENIGMA2_ReceiveCommand($$$) { "ENIGMA2 $name: detected single event in timerlist"; # queued recording - if ( defined( $return->{e2timer}{e2state} ) + if ( + defined( $return->{e2timer}{e2state} ) && $return->{e2timer}{e2state} eq "0" - && defined( $return->{e2timer}{e2disabled} ) - && $return->{e2timer}{e2disabled} eq "0" + && ( !defined( $return->{e2timer}{e2disabled} ) + || $return->{e2timer}{e2disabled} eq "0" ) && defined( $return->{e2timer}{e2eit} ) && defined( $return->{e2timer}{e2servicename} ) - && defined( $return->{e2timer}{e2name} ) ) + && defined( $return->{e2timer}{e2name} ) + ) { my $timeleft = @@ -1941,13 +1943,15 @@ sub ENIGMA2_ReceiveCommand($$$) { while ( $i < $arr_size ) { # queued recording - if ( defined( $return->{e2timer}[$i]{e2state} ) + if ( + defined( $return->{e2timer}[$i]{e2state} ) && $return->{e2timer}[$i]{e2state} eq "0" - && defined( $return->{e2timer}[$i]{e2disabled} ) - && $return->{e2timer}[$i]{e2disabled} eq "0" + && ( !defined( $return->{e2timer}[$i]{e2disabled} ) + || $return->{e2timer}[$i]{e2disabled} eq "0" ) && defined( $return->{e2timer}[$i]{e2eit} ) && defined( $return->{e2timer}[$i]{e2servicename} ) - && defined( $return->{e2timer}[$i]{e2name} ) ) + && defined( $return->{e2timer}[$i]{e2name} ) + ) { my $timeleft = @@ -2022,30 +2026,32 @@ sub ENIGMA2_ReceiveCommand($$$) { readingsBulkUpdateIfChanged( $hash, "recordings", $recordingsElementsCount ); + my $ri = 0; if ( $recordingsElementsCount > 0 ) { - my $i = 0; - while ( $i < $recordingsElementsCount ) { - $i++; + while ( $ri < $recordingsElementsCount ) { + $ri++; - $readingname = "recordings" . $i . "_servicename"; + $readingname = "recordings" . $ri . "_servicename"; readingsBulkUpdateIfChanged( $hash, $readingname, $2 ) - if ( $recordings{$i}{servicename} =~ + if ( $recordings{$ri}{servicename} =~ /^(\[[\w=]+\])?([ \w\(\)]+)(\[[\w=\/]+\])?$/ ); - $readingname = "recordings" . $i . "_name"; + $readingname = "recordings" . $ri . "_name"; readingsBulkUpdateIfChanged( $hash, $readingname, $2 ) - if ( $recordings{$i}{name} =~ + if ( $recordings{$ri}{name} =~ /^(\[[\w=]+\])?([ \w\(\)]+)(\[[\w=\/]+\])?$/ ); } } # clear inactive recordingsX_* readings foreach my $recReading ( - grep { /recordings\d_.*/ } + grep { /^recordings\d+_.*/ } keys %{ $defs{$name}{READINGS} } ) { + next if ( $recReading =~ m/^recordings(\d+).*/ && $1 <= $ri ); + Log3 $name, 5, "ENIGMA2 $name: old reading $recReading was deleted"; delete( $defs{$name}{READINGS}{$recReading} );