6 Commits

Author SHA1 Message Date
f67d56e1cc expane rain and wind protection control
add condition for wind and rain protection

[Ticket: none]
2022-06-20 15:56:47 +02:00
527d72dd57 code review rain unprotection drive 2022-04-19 12:32:19 +02:00
459b8508ec Merge pull request 'dev' (#105) from dev into main
Reviewed-on: #105
2022-04-07 21:29:10 +02:00
ac87015478 Merge pull request 'patch-shading_markise_IsDay' (#104) from patch-shading_markise_IsDay into dev
Reviewed-on: #104
2022-04-07 21:27:00 +02:00
26105fa434 more Log out with information 2022-04-07 21:25:03 +02:00
15be0a6885 observed ShuttersPlace awning for shading condition
[Ticket: no]
2022-03-24 09:54:55 +01:00
6 changed files with 92 additions and 57 deletions

View File

@ -1462,7 +1462,7 @@ __END__
], ],
"release_status": "stable", "release_status": "stable",
"license": "GPL_2", "license": "GPL_2",
"version": "v0.10.22", "version": "v0.10.24",
"author": [ "author": [
"Marko Oldenburg <fhemdevelopment@cooltux.net>" "Marko Oldenburg <fhemdevelopment@cooltux.net>"
], ],

View File

@ -1,16 +1,16 @@
UPD 2022-03-04_06:58:36 116177 FHEM/73_AutoShuttersControl.pm UPD 2022-06-20_15:54:48 116177 FHEM/73_AutoShuttersControl.pm
UPD 2022-03-04_06:55:50 76011 lib/FHEM/Automation/ShuttersControl.pm UPD 2022-06-20_12:59:11 76466 lib/FHEM/Automation/ShuttersControl.pm
UPD 2022-01-14_08:49:13 2691 lib/FHEM/Automation/ShuttersControl/Dev.pm UPD 2022-01-14_08:49:13 2691 lib/FHEM/Automation/ShuttersControl/Dev.pm
UPD 2022-01-14_08:49:13 2677 lib/FHEM/Automation/ShuttersControl/Roommate.pm UPD 2022-01-14_08:49:13 2677 lib/FHEM/Automation/ShuttersControl/Roommate.pm
UPD 2022-01-14_08:49:13 32016 lib/FHEM/Automation/ShuttersControl/Shutters.pm UPD 2022-03-05_09:12:41 32016 lib/FHEM/Automation/ShuttersControl/Shutters.pm
UPD 2022-01-14_08:49:13 25452 lib/FHEM/Automation/ShuttersControl/Shading.pm UPD 2022-01-14_08:49:13 25452 lib/FHEM/Automation/ShuttersControl/Shading.pm
UPD 2022-03-02_16:50:08 112109 lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm UPD 2022-06-20_15:50:59 112421 lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm
UPD 2022-01-14_08:49:13 40603 lib/FHEM/Automation/ShuttersControl/Helper.pm UPD 2022-04-07_21:31:16 40705 lib/FHEM/Automation/ShuttersControl/Helper.pm
UPD 2022-01-14_08:49:13 2209 lib/FHEM/Automation/ShuttersControl/Window.pm UPD 2022-01-14_08:49:13 2209 lib/FHEM/Automation/ShuttersControl/Window.pm
UPD 2022-01-14_08:49:13 11857 lib/FHEM/Automation/ShuttersControl/Dev/Attr.pm UPD 2022-01-14_08:49:13 11857 lib/FHEM/Automation/ShuttersControl/Dev/Attr.pm
UPD 2022-01-14_08:49:13 7265 lib/FHEM/Automation/ShuttersControl/Dev/Readings.pm UPD 2022-01-14_08:49:13 7265 lib/FHEM/Automation/ShuttersControl/Dev/Readings.pm
UPD 2022-01-14_08:49:13 52751 lib/FHEM/Automation/ShuttersControl/Shutters/Attr.pm UPD 2022-03-05_09:12:39 52751 lib/FHEM/Automation/ShuttersControl/Shutters/Attr.pm
UPD 2022-01-14_08:49:13 2799 lib/FHEM/Automation/ShuttersControl/Shutters/Readings.pm UPD 2022-01-14_08:49:13 2799 lib/FHEM/Automation/ShuttersControl/Shutters/Readings.pm
UPD 2022-01-14_08:49:13 3887 lib/FHEM/Automation/ShuttersControl/Window/Attr.pm UPD 2022-01-14_08:49:13 3887 lib/FHEM/Automation/ShuttersControl/Window/Attr.pm
UPD 2022-01-14_08:49:13 2200 lib/FHEM/Automation/ShuttersControl/Window/Readings.pm UPD 2022-01-14_08:49:13 2200 lib/FHEM/Automation/ShuttersControl/Window/Readings.pm
UPD 2022-01-14_08:49:13 7113 lib/FHEM/Automation/ShuttersControl/Rainprotection.pm UPD 2022-06-20_15:49:47 7396 lib/FHEM/Automation/ShuttersControl/Rainprotection.pm

View File

@ -485,16 +485,23 @@ sub Notify {
} }
elsif ( $devname eq "global" ) elsif ( $devname eq "global" )
{ # Kommt ein globales Event und beinhaltet folgende Syntax wird die Funktion zur Verarbeitung aufgerufen { # Kommt ein globales Event und beinhaltet folgende Syntax wird die Funktion zur Verarbeitung aufgerufen
::Log3( $name, 4,
"AutoShuttersControl ($name) - ShuttersControl: Devicename eq global"
);
if ( if (
grep { grep {
/^(ATTR|DELETEATTR)\s(.*ASC_Time_Up_WE_Holiday|.*ASC_Up|.*ASC_Down|.*ASC_AutoAstroModeMorning|.*ASC_AutoAstroModeMorningHorizon|.*ASC_AutoAstroModeEvening|.*ASC_AutoAstroModeEveningHorizon|.*ASC_Time_Up_Early|.*ASC_Time_Up_Late|.*ASC_Time_Down_Early|.*ASC_Time_Down_Late|.*ASC_autoAstroModeMorning|.*ASC_autoAstroModeMorningHorizon|.*ASC_PrivacyDownValue_beforeNightClose|.*ASC_PrivacyUpValue_beforeDayOpen|.*ASC_autoAstroModeEvening|.*ASC_autoAstroModeEveningHorizon|.*ASC_Roommate_Device|.*ASC_WindowRec|.*ASC_residentsDev|.*ASC_rainSensor|.*ASC_windSensor|.*ASC_tempSensor|.*ASC_BrightnessSensor|.*ASC_twilightDevice|.*ASC_ExternalTrigger|.*ASC_Shading_StateChange_SunnyCloudy|.*ASC_TempSensor|.*ASC_Shading_Mode)(\s.*|$) / /^(ATTR|DELETEATTR)\s(.*ASC_Time_Up_WE_Holiday|.*ASC_Up|.*ASC_Down|.*ASC_AutoAstroModeMorning|.*ASC_AutoAstroModeMorningHorizon|.*ASC_AutoAstroModeEvening|.*ASC_AutoAstroModeEveningHorizon|.*ASC_Time_Up_Early|.*ASC_Time_Up_Late|.*ASC_Time_Down_Early|.*ASC_Time_Down_Late|.*ASC_autoAstroModeMorning|.*ASC_autoAstroModeMorningHorizon|.*ASC_PrivacyDownValue_beforeNightClose|.*ASC_PrivacyUpValue_beforeDayOpen|.*ASC_autoAstroModeEvening|.*ASC_autoAstroModeEveningHorizon|.*ASC_Roommate_Device|.*ASC_WindowRec|.*ASC_residentsDev|.*ASC_rainSensor|.*ASC_windSensor|.*ASC_tempSensor|.*ASC_BrightnessSensor|.*ASC_twilightDevice|.*ASC_ExternalTrigger|.*ASC_Shading_StateChange_SunnyCloudy|.*ASC_TempSensor|.*ASC_Shading_Mode)(\s.*|$) /x
} @{$events} } @{$events}
) )
{ {
::Log3( $name, 4,
"AutoShuttersControl ($name) - ShuttersControl: Event Attr or Deleteattr Time and Astro"
);
EventProcessingGeneral( $hash, undef, join( ' ', @{$events} ) ); EventProcessingGeneral( $hash, undef, join( ' ', @{$events} ) );
} }
} }
elsif ( grep { /^($posReading):\s\d{1,3}(\.\d{1,3})?$/ } @{$events} ) { elsif ( grep { /^($posReading):\s\d{1,3}(\.\d{1,3})?$/x } @{$events} ) {
ASC_Debug( 'Notify: ' ASC_Debug( 'Notify: '
. ' ASC_Pos_Reading Event vom Rollo ' . ' ASC_Pos_Reading Event vom Rollo '
. $devname . $devname
@ -1757,7 +1764,11 @@ sub SetCmdFn {
return return
if ( $shutters->getASCenable eq 'off' if ( $shutters->getASCenable eq 'off'
|| $ascDev->getASCenable eq 'off' || $ascDev->getASCenable eq 'off'
|| $idleDetection !~ m{^$idleDetectionValue$}xms ); || $idleDetection !~ m{^$idleDetectionValue$}xms
|| $FHEM::Automation::ShuttersControl::shutters
->getWindProtectionStatus eq 'protected'
|| $FHEM::Automation::ShuttersControl::shutters
->getRaindProtectionStatus eq 'protected' );
if ( $shutters->getStatus != $posValue ) { if ( $shutters->getStatus != $posValue ) {
$shutters->setLastPos( $shutters->getStatus ); $shutters->setLastPos( $shutters->getStatus );

View File

@ -133,6 +133,10 @@ sub EventProcessingGeneral {
} }
} }
else { # alles was kein Devicenamen mit übergeben hat landet hier else { # alles was kein Devicenamen mit übergeben hat landet hier
::Log3( $name, 4,
"AutoShuttersControl ($name) - EventProcessing: All without device name in the Event"
);
if ( if (
$events =~ m{^ATTR\s(.*) $events =~ m{^ATTR\s(.*)
\s(ASC_Roommate_Device|ASC_WindowRec|ASC_residentsDev|ASC_rainSensor \s(ASC_Roommate_Device|ASC_WindowRec|ASC_residentsDev|ASC_rainSensor
@ -170,6 +174,10 @@ sub EventProcessingGeneral {
(.*)?}xms (.*)?}xms
) )
{ {
::Log3( $name, 4,
"AutoShuttersControl ($name) - EventProcessing: Morning and Evening Time Shedules"
);
FHEM::Automation::ShuttersControl::CreateSunRiseSetShuttersTimer( FHEM::Automation::ShuttersControl::CreateSunRiseSetShuttersTimer(
$hash, $2 ) $hash, $2 )
if ( if (
@ -1355,6 +1363,7 @@ sub EventProcessingWind {
my $name = $hash->{NAME}; my $name = $hash->{NAME};
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev); $FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev);
my $targetPos = $FHEM::Automation::ShuttersControl::shutters->getLastPos;
my $reading = my $reading =
$FHEM::Automation::ShuttersControl::ascDev->getWindSensorReading $FHEM::Automation::ShuttersControl::ascDev->getWindSensorReading
@ -1406,35 +1415,41 @@ sub EventProcessingWind {
{ {
$FHEM::Automation::ShuttersControl::shutters->setLastDrive( $FHEM::Automation::ShuttersControl::shutters->setLastDrive(
'wind un-protected'); 'wind un-protected');
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd(
( if ( $FHEM::Automation::ShuttersControl::shutters->getIsDay
$FHEM::Automation::ShuttersControl::shutters->getIsDay && !$FHEM::Automation::ShuttersControl::shutters
? $FHEM::Automation::ShuttersControl::shutters ->getIfInShading
->getLastPos && $FHEM::Automation::ShuttersControl::shutters->getLastPos
: ( == $FHEM::Automation::ShuttersControl::shutters
$FHEM::Automation::ShuttersControl::shutters ->getShadingPos )
->getShuttersPlace eq 'awning' {
? $FHEM::Automation::ShuttersControl::shutters $targetPos =
->getOpenPos $FHEM::Automation::ShuttersControl::shutters->getOpenPos;
: ( }
else {
$targetPos =
$FHEM::Automation::ShuttersControl::shutters->getLastPos;
}
if ( !$FHEM::Automation::ShuttersControl::shutters->getIsDay
&& $FHEM::Automation::ShuttersControl::shutters
->getShuttersPlace ne 'awning' )
{
$targetPos = (
$FHEM::Automation::ShuttersControl::shutters $FHEM::Automation::ShuttersControl::shutters
->getPrivacyDownStatus == 2 ->getPrivacyDownStatus == 2
? $FHEM::Automation::ShuttersControl::shutters ? $FHEM::Automation::ShuttersControl::shutters
->getPrivacyDownPos ->getPrivacyDownPos
: (
$FHEM::Automation::ShuttersControl::shutters
->getSleepPos > 0
? $FHEM::Automation::ShuttersControl::shutters
->getSleepPos
: $FHEM::Automation::ShuttersControl::shutters : $FHEM::Automation::ShuttersControl::shutters
->getClosedPos ->getClosedPos
)
)
)
)
); );
}
$FHEM::Automation::ShuttersControl::shutters $FHEM::Automation::ShuttersControl::shutters
->setWindProtectionStatus('unprotected'); ->setWindProtectionStatus('unprotected');
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd(
$targetPos);
} }
FHEM::Automation::ShuttersControl::ASC_Debug( FHEM::Automation::ShuttersControl::ASC_Debug(

View File

@ -399,6 +399,8 @@ sub _IsDay {
or $FHEM::Automation::ShuttersControl::shutters->getRoommates or $FHEM::Automation::ShuttersControl::shutters->getRoommates
ne 'gotosleep' ) ne 'gotosleep' )
) )
or ( $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace eq
'awning' )
); );
return $respIsDay; return $respIsDay;

View File

@ -154,6 +154,7 @@ sub _RainProtected {
sub _RainUnprotected { sub _RainUnprotected {
my $h = shift; my $h = shift;
my $targetPos = $FHEM::Automation::ShuttersControl::shutters->getLastPos;
my $shuttersDev = $h->{shuttersdevice}; my $shuttersDev = $h->{shuttersdevice};
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev); $FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev);
@ -170,29 +171,35 @@ sub _RainUnprotected {
->setRainUnprotectionDelayObj('none'); ->setRainUnprotectionDelayObj('none');
} }
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd( if ( $FHEM::Automation::ShuttersControl::shutters->getIsDay
( && !$FHEM::Automation::ShuttersControl::shutters->getIfInShading
$FHEM::Automation::ShuttersControl::shutters->getIsDay && $FHEM::Automation::ShuttersControl::shutters->getLastPos ==
? $FHEM::Automation::ShuttersControl::shutters->getLastPos $FHEM::Automation::ShuttersControl::shutters->getShadingPos )
: ( {
$FHEM::Automation::ShuttersControl::shutters->getShuttersPlace $targetPos = $FHEM::Automation::ShuttersControl::shutters->getOpenPos;
eq 'awning' }
? $FHEM::Automation::ShuttersControl::shutters->getOpenPos else {
: ( $targetPos = $FHEM::Automation::ShuttersControl::shutters->getLastPos;
$FHEM::Automation::ShuttersControl::shutters }
->getPrivacyDownStatus == 2
? $FHEM::Automation::ShuttersControl::shutters if ( !$FHEM::Automation::ShuttersControl::shutters->getIsDay
->getPrivacyDownPos && $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace ne
: $FHEM::Automation::ShuttersControl::shutters 'awning' )
->getClosedPos {
) $targetPos = (
) $FHEM::Automation::ShuttersControl::shutters->getPrivacyDownStatus
) == 2
) if ( IsAfterShuttersTimeBlocking($shuttersDev) ); ? $FHEM::Automation::ShuttersControl::shutters->getPrivacyDownPos
: $FHEM::Automation::ShuttersControl::shutters->getClosedPos
);
}
$FHEM::Automation::ShuttersControl::shutters->setRainProtectionStatus( $FHEM::Automation::ShuttersControl::shutters->setRainProtectionStatus(
'unprotected'); 'unprotected');
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd($targetPos)
if ( IsAfterShuttersTimeBlocking($shuttersDev) );
return; return;
} }