testing #94
@@ -1,16 +1,16 @@
 | 
			
		||||
UPD 2022-01-01_20:15:38 115601 FHEM/73_AutoShuttersControl.pm
 | 
			
		||||
UPD 2022-01-02_07:52:37 75828 lib/FHEM/Automation/ShuttersControl.pm
 | 
			
		||||
UPD 2022-01-02_06:39:39 2691 lib/FHEM/Automation/ShuttersControl/Dev.pm
 | 
			
		||||
UPD 2022-01-02_06:34:39 2677 lib/FHEM/Automation/ShuttersControl/Roommate.pm
 | 
			
		||||
UPD 2022-01-02_07:04:24 32028 lib/FHEM/Automation/ShuttersControl/Shutters.pm
 | 
			
		||||
UPD 2022-01-02_06:37:09 25452 lib/FHEM/Automation/ShuttersControl/Shading.pm
 | 
			
		||||
UPD 2022-01-02_06:36:31 112122 lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm
 | 
			
		||||
UPD 2022-01-02_07:31:19 40322 lib/FHEM/Automation/ShuttersControl/Helper.pm
 | 
			
		||||
UPD 2022-01-02_06:41:32 2209 lib/FHEM/Automation/ShuttersControl/Window.pm
 | 
			
		||||
UPD 2022-01-02_08:24:03 75862 lib/FHEM/Automation/ShuttersControl.pm
 | 
			
		||||
UPD 2022-01-02_07:57:18 2691 lib/FHEM/Automation/ShuttersControl/Dev.pm
 | 
			
		||||
UPD 2022-01-02_07:57:18 2677 lib/FHEM/Automation/ShuttersControl/Roommate.pm
 | 
			
		||||
UPD 2022-01-02_08:24:00 32016 lib/FHEM/Automation/ShuttersControl/Shutters.pm
 | 
			
		||||
UPD 2022-01-02_07:57:18 25452 lib/FHEM/Automation/ShuttersControl/Shading.pm
 | 
			
		||||
UPD 2022-01-02_07:57:18 112122 lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm
 | 
			
		||||
UPD 2022-01-02_07:57:18 40322 lib/FHEM/Automation/ShuttersControl/Helper.pm
 | 
			
		||||
UPD 2022-01-02_07:57:18 2209 lib/FHEM/Automation/ShuttersControl/Window.pm
 | 
			
		||||
UPD 2022-01-01_20:15:38 11706 lib/FHEM/Automation/ShuttersControl/Dev/Attr.pm
 | 
			
		||||
UPD 2022-01-01_20:15:38 7265 lib/FHEM/Automation/ShuttersControl/Dev/Readings.pm
 | 
			
		||||
UPD 2022-01-01_20:15:38 52751 lib/FHEM/Automation/ShuttersControl/Shutters/Attr.pm
 | 
			
		||||
UPD 2022-01-01_20:15:38 2799 lib/FHEM/Automation/ShuttersControl/Shutters/Readings.pm
 | 
			
		||||
UPD 2022-01-01_20:15:38 3887 lib/FHEM/Automation/ShuttersControl/Window/Attr.pm
 | 
			
		||||
UPD 2022-01-01_20:15:38 2200 lib/FHEM/Automation/ShuttersControl/Window/Readings.pm
 | 
			
		||||
UPD 2022-01-02_06:36:44 7113 lib/FHEM/Automation/ShuttersControl/Rainprotection.pm
 | 
			
		||||
UPD 2022-01-02_07:57:18 7113 lib/FHEM/Automation/ShuttersControl/Rainprotection.pm
 | 
			
		||||
 
 | 
			
		||||
@@ -172,7 +172,7 @@ BEGIN {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
## Die Attributsliste welche an die Rolläden verteilt wird. Zusammen mit Default Werten
 | 
			
		||||
our %userAttrList = (
 | 
			
		||||
my %userAttrList = (
 | 
			
		||||
    'ASC_Mode_Up:absent,always,off,home'                            => '-',
 | 
			
		||||
    'ASC_Mode_Down:absent,always,off,home'                          => '-',
 | 
			
		||||
    'ASC_Up:time,astro,brightness,roommate'                         => '-',
 | 
			
		||||
@@ -242,8 +242,8 @@ our %userAttrList = (
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
## 2 Objekte werden erstellt
 | 
			
		||||
our $shutters = FHEM::Automation::ShuttersControl::Shutters->new();
 | 
			
		||||
our $ascDev   = FHEM::Automation::ShuttersControl::Dev->new();
 | 
			
		||||
my $shutters = FHEM::Automation::ShuttersControl::Shutters->new();
 | 
			
		||||
my $ascDev   = FHEM::Automation::ShuttersControl::Dev->new();
 | 
			
		||||
 | 
			
		||||
my %posSetCmds = (
 | 
			
		||||
    ZWave       => 'dim',
 | 
			
		||||
@@ -305,9 +305,11 @@ sub ascAPIset {
 | 
			
		||||
sub Define {
 | 
			
		||||
    my $hash = shift // return;
 | 
			
		||||
    my $aArg = shift // return;
 | 
			
		||||
    my $version;
 | 
			
		||||
 | 
			
		||||
    return $@ if ( !FHEM::Meta::SetInternals($hash) );
 | 
			
		||||
    use version 0.60; our $VERSION = FHEM::Meta::Get( $hash, 'version' );
 | 
			
		||||
    return $@ unless ( FHEM::Meta::SetInternals($hash) );
 | 
			
		||||
    $version = FHEM::Meta::Get( $hash, 'version' );
 | 
			
		||||
    our $VERSION = $version;
 | 
			
		||||
 | 
			
		||||
    return 'only one AutoShuttersControl instance allowed'
 | 
			
		||||
      if ( ::devspec2array('TYPE=AutoShuttersControl') > 1 )
 | 
			
		||||
@@ -400,13 +402,13 @@ sub Notify {
 | 
			
		||||
 | 
			
		||||
    if (
 | 
			
		||||
        (
 | 
			
		||||
            grep m{^DEFINED.$name$}xms,
 | 
			
		||||
            grep { /^DEFINED.$name$/ },
 | 
			
		||||
            @{$events} && $devname eq 'global' && $::init_done
 | 
			
		||||
        )
 | 
			
		||||
        || (
 | 
			
		||||
            grep m{^INITIALIZED$}xms,
 | 
			
		||||
            @{$events} or grep m{^REREADCFG$}xms,
 | 
			
		||||
            @{$events} or grep m{^MODIFIED.$name$}xms,
 | 
			
		||||
            grep { /^INITIALIZED$/ },
 | 
			
		||||
            @{$events} or grep { /^REREADCFG$/ },
 | 
			
		||||
            @{$events} or grep { /^MODIFIED.$name$/ },
 | 
			
		||||
            @{$events}
 | 
			
		||||
        )
 | 
			
		||||
        && $devname eq 'global'
 | 
			
		||||
@@ -450,7 +452,7 @@ sub Notify {
 | 
			
		||||
    my $posReading = $shutters->getPosCmd;
 | 
			
		||||
 | 
			
		||||
    if ( $devname eq $name ) {
 | 
			
		||||
        if ( grep m{^userAttrList:.rolled.out$}xms, @{$events} ) {
 | 
			
		||||
        if ( grep { /^userAttrList:.rolled.out$/ }, @{$events} ) {
 | 
			
		||||
            if ( scalar( @{ $hash->{helper}{shuttersList} } ) > 0 ) {
 | 
			
		||||
                WriteReadingsShuttersList($hash);
 | 
			
		||||
                UserAttributs_Readings_ForShutters( $hash, 'add' );
 | 
			
		||||
@@ -475,25 +477,26 @@ sub Notify {
 | 
			
		||||
                    ::ReadingsVal( $name, 'controlShading', 'off' ) ne 'off' );
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        elsif ( grep m{^partyMode:.off$}xms, @{$events} ) {
 | 
			
		||||
        elsif ( grep { /^partyMode:.off$/ }, @{$events} ) {
 | 
			
		||||
            EventProcessingPartyMode($hash);
 | 
			
		||||
        }
 | 
			
		||||
        elsif ( grep m{^sunriseTimeWeHoliday:.(on|off)$}xms, @{$events} ) {
 | 
			
		||||
        elsif ( grep { /^sunriseTimeWeHoliday:.(on|off)$/ }, @{$events} ) {
 | 
			
		||||
            RenewSunRiseSetShuttersTimer($hash);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    elsif ( $devname eq "global" )
 | 
			
		||||
    { # Kommt ein globales Event und beinhaltet folgende Syntax wird die Funktion zur Verarbeitung aufgerufen
 | 
			
		||||
        if (
 | 
			
		||||
            grep
 | 
			
		||||
m{^(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.*|$)}xms,
 | 
			
		||||
            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.*|$) /
 | 
			
		||||
            },
 | 
			
		||||
            @{$events}
 | 
			
		||||
          )
 | 
			
		||||
        {
 | 
			
		||||
            EventProcessingGeneral( $hash, undef, join( ' ', @{$events} ) );
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    elsif ( grep m{^($posReading):\s\d{1,3}(\.\d{1,3})?$}xms, @{$events} ) {
 | 
			
		||||
    elsif ( grep { /^($posReading):\s\d{1,3}(\.\d{1,3})?$/ }, @{$events} ) {
 | 
			
		||||
        ASC_Debug( 'Notify: '
 | 
			
		||||
              . ' ASC_Pos_Reading Event vom Rollo '
 | 
			
		||||
              . $devname
 | 
			
		||||
@@ -1337,7 +1340,7 @@ sub wiggle {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ::InternalTimer( ::gettimeofday() + 60, \&_SetCmdFn, \%h );
 | 
			
		||||
    ::InternalTimer( ::gettimeofday() + 60, \&SetCmdFn, \%h );
 | 
			
		||||
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
@@ -1741,7 +1744,7 @@ sub _DetermineSlatCmd {
 | 
			
		||||
      : $value;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub _SetCmdFn {
 | 
			
		||||
sub SetCmdFn {
 | 
			
		||||
    my $h = shift;
 | 
			
		||||
 | 
			
		||||
    my $shuttersDev = $h->{shuttersDev};
 | 
			
		||||
@@ -1888,7 +1891,7 @@ sub _SetCmdFn {
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub _setShuttersLastDriveDelayed {
 | 
			
		||||
sub setShuttersLastDriveDelayed {
 | 
			
		||||
    my $h = shift;
 | 
			
		||||
 | 
			
		||||
    my $shuttersDevHash = $h->{devHash};
 | 
			
		||||
 
 | 
			
		||||
@@ -235,7 +235,7 @@ sub setDriveCmd {
 | 
			
		||||
                ::gettimeofday() +
 | 
			
		||||
                  $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                  ->getSelfDefenseAbsentDelay,
 | 
			
		||||
                \&FHEM::Automation::ShuttersControl::_SetCmdFn, \%h
 | 
			
		||||
                \&FHEM::Automation::ShuttersControl::SetCmdFn, \%h
 | 
			
		||||
            );
 | 
			
		||||
            $FHEM::Automation::ShuttersControl::shutters->setSelfDefenseAbsent(
 | 
			
		||||
                1, 0, \%h );
 | 
			
		||||
@@ -249,7 +249,7 @@ sub setDriveCmd {
 | 
			
		||||
                      $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                      ->getDelayStart
 | 
			
		||||
                ),
 | 
			
		||||
                \&FHEM::Automation::ShuttersControl::_SetCmdFn,
 | 
			
		||||
                \&FHEM::Automation::ShuttersControl::SetCmdFn,
 | 
			
		||||
                \%h
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
@@ -260,7 +260,7 @@ sub setDriveCmd {
 | 
			
		||||
        elsif ($offSetStart < 1
 | 
			
		||||
            || $FHEM::Automation::ShuttersControl::shutters->getNoDelay )
 | 
			
		||||
        {
 | 
			
		||||
            FHEM::Automation::ShuttersControl::_SetCmdFn( \%h );
 | 
			
		||||
            FHEM::Automation::ShuttersControl::SetCmdFn( \%h );
 | 
			
		||||
            FHEM::Automation::ShuttersControl::ASC_Debug( 'FnSetDriveCmd: '
 | 
			
		||||
                  . $FHEM::Automation::ShuttersControl::shutters->getShuttersDev
 | 
			
		||||
                  . ' - NICHT versetztes fahren' );
 | 
			
		||||
@@ -348,8 +348,7 @@ sub setLastDriveReading {
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    ::InternalTimer( ::gettimeofday() + 0.1,
 | 
			
		||||
        \&FHEM::Automation::ShuttersControl::_setShuttersLastDriveDelayed,
 | 
			
		||||
        \%h );
 | 
			
		||||
        \&FHEM::Automation::ShuttersControl::setShuttersLastDriveDelayed, \%h );
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user