From ec271d0e9a448c86a8c4c54659f04fea40325a55 Mon Sep 17 00:00:00 2001 From: LeonGaultier Date: Mon, 29 Jul 2019 11:28:49 +0000 Subject: [PATCH] 73_AutoShuttersControl: fix bug in getShuttersPosCmdValueNegate, add new Attribut ASC_WindowRec_PosAfterDayClosed for Shutter Pos at day after closed window git-svn-id: https://svn.fhem.de/fhem/trunk@19913 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 3 +++ fhem/FHEM/73_AutoShuttersControl.pm | 29 +++++++++++++++++++++++------ 2 files changed, 26 insertions(+), 6 deletions(-) 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 {
  • ASC_Up - astro/time/brightness - bei astro wird Sonnenaufgang berechnet, bei time wird der Wert aus ASC_Time_Up_Early als Fahrzeit verwendet und bei brightness muss ASC_Time_Up_Early und ASC_Time_Up_Late korrekt gesetzt werden. Der Timer läuft dann nach ASC_Time_Up_Late Zeit, es wird aber in der Zeit zwischen ASC_Time_Up_Early und ASC_Time_Up_Late geschaut, ob die als Attribut im Moduldevice hinterlegte Down Wert von ASC_brightnessDriveUpDown erreicht wurde. Wenn ja, wird der Rollladen hoch gefahren (default: astro)
  • ASC_Ventilate_Pos - in 10 Schritten von 0 bis 100 (default: ist abhängig vom Attribut ASC)
  • ASC_Ventilate_Window_Open - auf lüften, wenn das Fenster gekippt/geöffnet wird und aktuelle Position unterhalb der Lüften-Position ist (default: on)
  • +
  • ASC_WindowRec_PosAfterDayClosed - open,lastManual / auf welche Position soll das Rollo nach dem schließen am Tag fahren. Open Position oder letzte gespeicherte manuelle Position (default: open)
  • ASC_WiggleValue - Wert um welchen sich die Position des Rollladens ändern soll (default: 5)
  • ASC_WindParameters - TRIGGERMAX[:HYSTERESE] [DRIVEPOSITION] / Angabe von Max Wert ab dem für Wind getriggert werden soll, Hytsrese Wert ab dem der Windschutz aufgehoben werden soll TRIGGERMAX - HYSTERESE / Ist es bei einigen Rollläden nicht gewünscht das gefahren werden soll, so ist der TRIGGERMAX Wert mit -1 an zu geben. (default: '50:20 ClosedPosition')
  • ASC_WindowRec - Name des Fensterkontaktes, an dessen Fenster der Rollladen angebracht ist (default: none)
  • @@ -6532,7 +6549,7 @@ sub getblockAscDrivesAfterManual { ], "release_status": "under develop", "license": "GPL_2", - "version": "v0.6.23", + "version": "v0.6.24", "x_developmentversion": "v0.6.19.34", "author": [ "Marko Oldenburg "