diff --git a/fhem/CHANGED b/fhem/CHANGED index 2033d9bc0..a215319ea 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,8 @@ # 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: 73_AutoShuttersControl: fix bug in getShuttersPosCmdValueNegate + add new Attribut ASC_WindowRec_PosAfterDayClosed for + Shutter Pos at day after closed window - feature: 73_AutoShuttersControl: fix little commandref typo, expand ascAPIget Fn - bugfix: 93_Log2Syslog: fix warning uninitialized value in numeric (>=) diff --git a/fhem/FHEM/73_AutoShuttersControl.pm b/fhem/FHEM/73_AutoShuttersControl.pm index b88659862..adb578125 100644 --- a/fhem/FHEM/73_AutoShuttersControl.pm +++ b/fhem/FHEM/73_AutoShuttersControl.pm @@ -207,7 +207,6 @@ my %userAttrList = ( 'ASC_Time_Down_Late' => '-', 'ASC_PrivacyDownTime_beforNightClose' => '-', 'ASC_PrivacyDown_Pos' => '-', - 'ASC_WindowRec' => '-', 'ASC_TempSensor' => '-', 'ASC_Ventilate_Window_Open:on,off' => '-', 'ASC_LockOut:soft,hard,off' => '-', @@ -228,7 +227,9 @@ my %userAttrList = ( 'ASC_Shading_WaitingPeriod' => '-', 'ASC_Drive_Offset' => '-', 'ASC_Drive_OffsetStart' => '-', + 'ASC_WindowRec' => '-', 'ASC_WindowRec_subType:twostate,threestate' => '-', + 'ASC_WindowRec_PosAfterDayClosed:open,lastManual' => '-', 'ASC_ShuttersPlace:window,terrace' => '-', 'ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100' => [ '', 70, 30 ], 'ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100' => [ '', 20, 80 ], @@ -268,7 +269,7 @@ sub ascAPIget($@) { my ( $getCommand, $shutterDev, $value ) = @_; my $getter = 'get' . $getCommand; - + if ( defined($value) and $value ) { $shutters->setShuttersDev($shutterDev); return $shutters->$getter($value); @@ -1002,10 +1003,18 @@ sub EventProcessingWindowRec($@) { $shutters->setNoOffset(1); $shutters->setDriveCmd( $shutters->getShadingPos ); } - elsif ( $shutters->getStatus != $shutters->getOpenPos ) { + elsif ($shutters->getStatus != $shutters->getOpenPos + or $shutters->getStatus != $shutters->getLastManPos ) + { $shutters->setLastDrive('window closed at day'); $shutters->setNoOffset(1); - $shutters->setDriveCmd( $shutters->getOpenPos ); + $shutters->setDriveCmd( + ( + $shutters->getVentilatePosAfterDayClosed eq 'open' + ? $shutters->getOpenPos + : $shutters->getLastManPos + ) + ); } } elsif ( @@ -3977,7 +3986,7 @@ sub getFreezeStatus { sub getShuttersPosCmdValueNegate { my $self = shift; - return ( $shutters->getOpenPos < $shutters->getClosedPos ? 1 : 0 ); + return ( $shutters->getOpenPos > $shutters->getClosedPos ? 1 : 0 ); } sub getQueryShuttersPos @@ -4656,6 +4665,13 @@ sub getVentilatePos { [ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ] ); } +sub getVentilatePosAfterDayClosed { + my $self = shift; + + return AttrVal( $self->{shuttersDev}, 'ASC_WindowRec_PosAfterDayClosed', + 'open' ); +} + sub getClosedPos { my $self = shift; @@ -6445,6 +6461,7 @@ sub getblockAscDrivesAfterManual {