diff --git a/FHEM/20_X10.pm b/FHEM/20_X10.pm index 9e8ac013b..9ddc5d9fc 100755 --- a/FHEM/20_X10.pm +++ b/FHEM/20_X10.pm @@ -89,16 +89,19 @@ my %unitcodes_snd = qw( 1 0110 2 1110 3 0010 4 1010 13 0000 14 1000 15 0100 16 1100); -my %functions_set = ( "on" => 0, - "off" => 0, - "dimup" => 1, +my %functions_set = ( "on" => 0, + "off" => 0, + "dimup" => 1, "dimdown" => 1, - "dimto" => 1, + "dimto" => 1, "on-till" => 1, - "on-for-timer" => 1, + "on-for-timer" => 1, + "all_units_off" => 0, + "all_units_on" => 0, + "all_lights_off" => 0, + "all_lights_on" => 0, ); - my %models = ( lm12 => 'dimmer', lm15 => 'switch', diff --git a/FHEM/57_Calendar.pm b/FHEM/57_Calendar.pm index eada0d0c1..9d78e2d9d 100644 --- a/FHEM/57_Calendar.pm +++ b/FHEM/57_Calendar.pm @@ -2814,14 +2814,26 @@ sub Calendar_UpdateCalendar($$) { foreach my $v (grep { $_->{type} eq "VEVENT" } @{$root->{entries}}) { # totally skip outdated calendar entries - next if( - defined($cutoffOlderThan) && - $v->hasKey("DTEND") && - $v->tm($v->value("DTEND")) < $cutoff && - !$v->hasKey("RRULE") - ); + if($cutoffOlderThan) { + if(!$v->isRecurring()) { + # non recurring event + next if( + defined($cutoffOlderThan) && + $v->hasKey("DTEND") && + $v->tm($v->value("DTEND")) < $cutoff + ); + } else { + # recurring event, inspect + my $rrule= $v->value("RRULE"); + my @rrparts= split(";", $rrule); + my %r= map { split("=", $_); } @rrparts; + if(exists($r{"UNTIL"})) { + next if($v->tm($r{"UNTIL"}) < $cutoff) + } + } + } - #main::Debug "Merging " . $v->asString(); + #main::Debug "Merging " . $v->asString(); my $found= 0; my $added= 0; # flag to prevent multiple additions $n++; @@ -3493,10 +3505,10 @@ sub CalendarEventsAsHtml($;$) {
cutoffOlderThan <timespec>
onCreateEvent <perl-code>
cutoffOlderThan <timespec>