Compare commits
6 Commits
v0.10.22
...
f67d56e1cc
Author | SHA1 | Date | |
---|---|---|---|
f67d56e1cc | |||
527d72dd57 | |||
459b8508ec | |||
ac87015478 | |||
26105fa434 | |||
15be0a6885 |
@ -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>"
|
||||||
],
|
],
|
||||||
|
@ -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
|
||||||
|
@ -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 );
|
||||||
|
@ -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
|
||||||
|
->getIfInShading
|
||||||
|
&& $FHEM::Automation::ShuttersControl::shutters->getLastPos
|
||||||
|
== $FHEM::Automation::ShuttersControl::shutters
|
||||||
|
->getShadingPos )
|
||||||
|
{
|
||||||
|
$targetPos =
|
||||||
|
$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
|
||||||
|
->getPrivacyDownStatus == 2
|
||||||
? $FHEM::Automation::ShuttersControl::shutters
|
? $FHEM::Automation::ShuttersControl::shutters
|
||||||
->getLastPos
|
->getPrivacyDownPos
|
||||||
: (
|
: $FHEM::Automation::ShuttersControl::shutters
|
||||||
$FHEM::Automation::ShuttersControl::shutters
|
->getClosedPos
|
||||||
->getShuttersPlace eq 'awning'
|
);
|
||||||
? $FHEM::Automation::ShuttersControl::shutters
|
}
|
||||||
->getOpenPos
|
|
||||||
: (
|
|
||||||
$FHEM::Automation::ShuttersControl::shutters
|
|
||||||
->getPrivacyDownStatus == 2
|
|
||||||
? $FHEM::Automation::ShuttersControl::shutters
|
|
||||||
->getPrivacyDownPos
|
|
||||||
: (
|
|
||||||
$FHEM::Automation::ShuttersControl::shutters
|
|
||||||
->getSleepPos > 0
|
|
||||||
? $FHEM::Automation::ShuttersControl::shutters
|
|
||||||
->getSleepPos
|
|
||||||
: $FHEM::Automation::ShuttersControl::shutters
|
|
||||||
->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(
|
||||||
|
@ -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;
|
||||||
|
@ -153,7 +153,8 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user