2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 18:59:33 +00:00

98_WeekdayTimer: 'state' inactive if disabled (#133492) + another try to fix holiday bug

git-svn-id: https://svn.fhem.de/fhem/trunk@27586 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
Beta-User 2023-05-17 13:43:31 +00:00
parent c87a771b34
commit 80ca7208ea

View File

@ -1,4 +1,4 @@
# $Id$
# $Id$we Beta-User $
#############################################################################
#
# 98_WeekdayTimer.pm
@ -1068,7 +1068,7 @@ sub checkIfDeviceIsHeatingType {
my $allSets = getAllSets($dName);
for my $ts (@tempSet) {
if ($allSets =~ m{$ts}xms) {
if ($allSets =~ m{$ts}xms) {
Log3( $hash, 4, "[$name] device type heating recognized, setModifier:$ts" );
$hash->{setModifier} = $ts;
return $ts
@ -1297,7 +1297,7 @@ sub checkDaysCondition {
################################################################################
sub getDaysAsHash {
my $hash = shift;
my $tage = shift //return {};
my $tage = shift // return {};
my %days = map {$_ => 1} @{$tage};
delete @days{7,8};
@ -1308,7 +1308,7 @@ sub getDaysAsHash {
################################################################################
sub getDaysAsCondition {
my $tage = shift;
my $overrulewday = shift // 0;
my $overrulewday = shift;
my %days = map {$_ => 1} @{$tage};
@ -1316,7 +1316,7 @@ sub getDaysAsCondition {
my $notWe = $days{8}; delete $days{8}; #!$we
my $tageExp = 'defined $days->{$wday}';
$tageExp .= ' && !$we' if $overrulewday;
$tageExp .= ' && !$we' if defined $overrulewday;
$tageExp .= ' || $we' if defined $we;
$tageExp .= ' || !$we' if defined $notWe;
return $tageExp;
@ -1327,11 +1327,11 @@ sub Attr {
my ($cmd, $name, $attrName, $attrVal) = @_;
$attrVal = 0 if !defined $attrVal;
my $hash = $defs{$name};
my $hash = $defs{$name} // return 'error: device not defined!';
if ( $attrName eq 'WDT_eventMap' ) {
if($cmd eq 'set') {
my @ret = split m{[: \r\n]}x, $attrVal;
return "WDT_eventMap: Odd number of elements" if int(@ret) % 2;
return 'WDT_eventMap: Odd number of elements' if int(@ret) % 2;
my %ret = @ret;
for (keys %ret) {
$ret{$_} =~ s{\+}{ }gxms;
@ -1341,22 +1341,22 @@ sub Attr {
delete $hash->{WDT_EVENTMAP};
}
$attr{$name}{$attrName} = $attrVal;
return if (!$init_done);
return if !$init_done;
return WDT_Start($hash);
}
return if !$init_done;
if( $attrName eq 'disable' ) {
_DeleteTimer($hash);
###RemoveInternalTimer($fnHash);
readingsSingleUpdate ($hash, 'disabled', $attrVal, 1);
$attr{$name}{$attrName} = $attrVal;
return RemoveInternalTimer($hash,\&WDT_SetTimerOfDay) if $attrVal;
if ( $attrVal ) {
readingsSingleUpdate ($hash, 'state', 'inactive', 1);
return RemoveInternalTimer($hash,\&WDT_SetTimerOfDay);
}
return WDT_Start($hash);
#return WDT_SetTimerOfDay( { HASH => $hash} ) if !$attrVal;
}
if ( $attrName eq 'weekprofile' ) {
$attr{$name}{$attrName} = $attrVal;
#return WDT_Start($hash);
}
if ( $attrName eq 'switchInThePast' ) {
$attr{$name}{$attrName} = $attrVal;
@ -1385,7 +1385,6 @@ sub Attr {
return;
}
################################################################################
sub WeekdayTimer_SetParm {
my $name = shift // return;