2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-15 22:26:04 +00:00

98_WeekdayTimer: fix incorrect diffwe handling in some cases, #114168

git-svn-id: https://svn.fhem.de/fhem/trunk@27118 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
Beta-User 2023-01-25 19:32:47 +00:00
parent 063b8d4961
commit 562965ea18
2 changed files with 13 additions and 6 deletions

View File

@ -1,5 +1,6 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it.
- bugfix: 98_WeekdayTimer: !$we handling
- new: 74_AutomowerConnect: Control Automower + Host
- new: 75_AutomowerConnectDevice: Control Automower Client
- new: automowerconnect.js: Frontend helper

View File

@ -323,6 +323,7 @@ sub _Profile {
my %longDays = %{$hash->{'.longDays'}};
delete $hash->{profil};
delete $hash->{profile_IDX};
my $now = time;
my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime($now);
@ -331,7 +332,6 @@ sub _Profile {
for my $st ( @{$hash->{SWITCHINGTIMES}} ) {
my ($tage,$time,$parameter,$overrulewday) = _SwitchingTime ($hash, $st);
$idx++;
for my $d (@{$tage}) {
my @listeDerTage = ($d);
@ -372,7 +372,11 @@ sub _Profile {
}
# ---- Texte Readings aufbauen -----------------------------------------
#Log3( $hash, 4, "[$hash->{NAME}] " . sunrise_abs() . " " . sunset_abs() . " " . $longDays{$language}[$wday] );
for my $d (sort keys %{$hash->{profile}}) {
for (0..8) {
my $pKey = "Profil $_: $longDays{$language}[$_]";
delete $hash->{$pKey};
}
for my $d (sort keys %{$hash->{profile}}) {
my $profiltext = q{};
for my $t (sort keys %{$hash->{profile}{$d}}) {
$profiltext .= "$t " . $hash->{profile}{$d}{$t} . ", ";
@ -421,8 +425,8 @@ sub _SwitchingTime {
my $globalDaylistSpec = $hash->{GlobalDaylistSpec};
my @tageGlobal = @{_daylistAsArray($hash, $globalDaylistSpec)};
my (@st, $daylist, $time, $timeString, $para);
@st = split m{\|}xms, $switchingtime;
my ($daylist, $time, $timeString, $para);
my @st = split m{\|}xms, $switchingtime;
my $overrulewday = 0;
if ( @st == 2 || @st == 3 && $st[2] eq 'w') {
$daylist = ($globalDaylistSpec ne '') ? $globalDaylistSpec : '0123456';
@ -433,7 +437,7 @@ sub _SwitchingTime {
$daylist = $st[0];
$time = $st[1];
$para = $st[2];
$overrulewday = 1 if defined $st[3] && $st[3] eq 'w';
$overrulewday = 1 if defined $st[3] && $st[3] eq 'w' || $st[0] == 8;
}
my @tage = @{_daylistAsArray($hash, $daylist)};
@ -501,7 +505,7 @@ sub _daylistAsArray {
Log3( $hash, 4, "[$name] useless double setting of \$we and !\$we found" );
$daylist = '0123456';
}
@days = split m{}x, $daylist;
@hdays{@days} = undef;
@ -974,6 +978,8 @@ sub WDT_Update {
my $timToSwitch = $hash->{profil}{$idx}{EPOCH};
my $overrulewday = $hash->{profil}{$idx}{WE_Override};
$overrulewday = 1 if $hash->{profil}{$idx}{DAYS} == 8;
#Log3 $hash, 3, "[$name] $idx ". $time . " " . $newParam . " " . join("",@$tage);
# Fenserkontakte abfragen - wenn einer im Status closed, dann Schaltung um 60 Sekunden verzögern