From 35b3641af97eaee9137de6d1ebc5220474af086f Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Thu, 25 Apr 2019 17:15:56 +0200 Subject: [PATCH] change many code, change complete Attribut rollout --- 73_AutoShuttersControl.pm | 630 ++++++++++++++++++++------------------ 1 file changed, 338 insertions(+), 292 deletions(-) diff --git a/73_AutoShuttersControl.pm b/73_AutoShuttersControl.pm index b68ae98..343d58d 100644 --- a/73_AutoShuttersControl.pm +++ b/73_AutoShuttersControl.pm @@ -44,7 +44,7 @@ use strict; use warnings; use FHEM::Meta; -my $version = '0.5.99.5'; +my $version = '0.5.99.12'; sub AutoShuttersControl_Initialize($) { my ($hash) = @_; @@ -151,63 +151,64 @@ BEGIN { ## Die Attributsliste welche an die Rolläden verteilt wird. Zusammen mit Default Werten my %userAttrList = ( - 'ASC_Mode_Up:absent,always,off,home' => 'always', - 'ASC_Mode_Down:absent,always,off,home' => 'always', - 'ASC_Up:time,astro,brightness' => 'astro', - 'ASC_Down:time,astro,brightness' => 'astro', - 'ASC_AutoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON' => 'none', + 'ASC_Mode_Up:absent,always,off,home' => '-', + 'ASC_Mode_Down:absent,always,off,home' => '-', + 'ASC_Up:time,astro,brightness' => '-', + 'ASC_Down:time,astro,brightness' => '-', + 'ASC_AutoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON' => '-', 'ASC_AutoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9' - => 'none', - 'ASC_AutoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON' => 'none', + => '-', + 'ASC_AutoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON' => '-', 'ASC_AutoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9' - => 'none', + => '-', 'ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100' => [ '', 0, 100 ], - 'ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100' => [ '', 100, 0 ], + 'ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100' => [ '', 100, 0 ], 'ASC_Pos_Reading' => [ '', 'position', 'pct' ], - 'ASC_Time_Up_Early' => '04:30', - 'ASC_Time_Up_Late' => '09:00', - 'ASC_Time_Up_WE_Holiday' => '08:30', - 'ASC_Time_Down_Early' => '15:30', - 'ASC_Time_Down_Late' => '22:30', - 'ASC_PrivacyDownTime_beforNightClose' => -1, - 'ASC_PrivacyDown_Pos' => 50, - 'ASC_WindowRec' => 'none', - 'ASC_Ventilate_Window_Open:on,off' => 'on', - 'ASC_LockOut:soft,hard,off' => 'off', - 'ASC_LockOut_Cmd:inhibit,blocked,protection' => 'none', - 'ASC_BlockingTime_afterManual' => 1200, - 'ASC_BlockingTime_beforNightClose' => 3600, - 'ASC_BlockingTime_beforDayOpen' => 3600, - 'ASC_BrightnessSensor' => 'none', - 'ASC_Shading_Direction' => 180, + 'ASC_Time_Up_Early' => '-', + 'ASC_Time_Up_Late' => '-', + 'ASC_Time_Up_WE_Holiday' => '-', + 'ASC_Time_Down_Early' => '-', + 'ASC_Time_Down_Late' => '-', + 'ASC_PrivacyDownTime_beforNightClose' => '-', + 'ASC_PrivacyDown_Pos' => '-', + 'ASC_WindowRec' => '-', + 'ASC_Ventilate_Window_Open:on,off' => '-', + 'ASC_LockOut:soft,hard,off' => '-', + 'ASC_LockOut_Cmd:inhibit,blocked,protection' => '-', + 'ASC_BlockingTime_afterManual' => '-', + 'ASC_BlockingTime_beforNightClose' => '-', + 'ASC_BlockingTime_beforDayOpen' => '-', + 'ASC_BrightnessSensor' => '-', + 'ASC_Shading_Direction' => '-', 'ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100' => [ '', 80, 20 ], - 'ASC_Shading_Mode:absent,always,off,home' => 'off', - 'ASC_Shading_Angle_Left' => 75, - 'ASC_Shading_Angle_Right' => 75, - 'ASC_Shading_StateChange_Sunny' => 35000, - 'ASC_Shading_StateChange_Cloudy' => 20000, - 'ASC_Shading_Min_Elevation' => 25.0, - 'ASC_Shading_Min_OutsideTemperature' => 18, - 'ASC_Shading_WaitingPeriod' => 1200, + 'ASC_Shading_Mode:absent,always,off,home' => '-', + 'ASC_Shading_Angle_Left' => '-', + 'ASC_Shading_Angle_Right' => '-', + 'ASC_Shading_StateChange_Sunny' => '-', + 'ASC_Shading_StateChange_Cloudy' => '-', + 'ASC_Shading_Min_Elevation' => '-', + 'ASC_Shading_Min_OutsideTemperature' => '-', + 'ASC_Shading_WaitingPeriod' => '-', - # 'ASC_Shading_Fast_Open:on,off' => 'none', - # 'ASC_Shading_Fast_Close:on,off' => 'none', - 'ASC_Drive_Offset' => -1, - 'ASC_Drive_OffsetStart' => -1, - 'ASC_WindowRec_subType:twostate,threestate' => 'twostate', - 'ASC_ShuttersPlace:window,terrace' => 'window', + # 'ASC_Shading_Fast_Open:on,off' => '-', + # 'ASC_Shading_Fast_Close:on,off' => '-', + 'ASC_Drive_Offset' => '-', + 'ASC_Drive_OffsetStart' => '-', + 'ASC_WindowRec_subType:twostate,threestate' => '-', + '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 ], - 'ASC_GuestRoom:on,off' => 'none', - 'ASC_Antifreeze:off,soft,hard,am,pm' => 'off', + 'ASC_GuestRoom:on,off' => '-', + 'ASC_Antifreeze:off,soft,hard,am,pm' => '-', 'ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100' => [ '', 85, 15 ], - 'ASC_Partymode:on,off' => 'off', - 'ASC_Roommate_Device' => 'none', - 'ASC_Roommate_Reading' => 'state', - 'ASC_Self_Defense_Exclude:on,off' => 'off', - 'ASC_WiggleValue' => 5, - 'ASC_WindParameters' => [ '', '-1', '-1' ], + 'ASC_Partymode:on,off' => '-', + 'ASC_Roommate_Device' => '-', + 'ASC_Roommate_Reading' => '-', + 'ASC_Self_Defense_Exclude:on,off' => '-', + 'ASC_WiggleValue' => '-', + 'ASC_WindParameters' => '-', + 'ASC_DriveUpMaxDuration' => '-', ); my %posSetCmds = ( @@ -269,8 +270,6 @@ sub Define($$) { if ( $ascDev->getAutoShuttersControlMorning eq 'none' ); CommandAttr( undef, $name . ' ASC_autoShuttersControlEvening on' ) if ( $ascDev->getAutoShuttersControlEvening eq 'none' ); - CommandAttr( undef, $name . ' ASC_freezeTemp 3' ) - if ( $ascDev->getFreezeTemp eq 'none' ); CommandAttr( undef, $name . ' devStateIcon selfeDefense.terrace:fts_door_tilt created.new.drive.timer:clock .*asleep:scene_sleeping roommate.(awoken|home):user_available residents.(home|awoken):status_available manual:fts_shutter_manual selfeDefense.active:status_locked selfeDefense.inactive:status_open day.open:scene_day night.close:scene_night shading.in:weather_sun shading.out:weather_cloudy' @@ -717,15 +716,17 @@ sub UserAttributs_Readings_ForShutters($$) { if ( ref($attribValue) ne 'ARRAY' ) { $attr{$_}{ ( split( ':', $attrib ) )[0] } = $attribValue if ( - not - defined( $attr{$_}{ ( split( ':', $attrib ) )[0] } ) ); + not + defined( $attr{$_}{ ( split( ':', $attrib ) )[0] } ) + and $attribValue ne '-' ); } else { $attr{$_}{ ( split( ':', $attrib ) )[0] } = $attribValue->[ AttrVal( $_, 'ASC', 2 ) ] if ( - not - defined( $attr{$_}{ ( split( ':', $attrib ) )[0] } ) ); + not + defined( $attr{$_}{ ( split( ':', $attrib ) )[0] } ) + and $attrib eq 'ASC_Pos_Reading' ); } } ## Oder das Attribut wird wieder gelöscht. @@ -1176,7 +1177,6 @@ sub EventProcessingRain($@) { my ( $hash, $device, $events ) = @_; my $name = $device; my $reading = $ascDev->getRainSensorReading; - print 'Regenreading: ' . $reading . "\n"; if ( $events =~ m#$reading:\s(\d+|rain|dry)# ) { my $val; @@ -1208,7 +1208,6 @@ sub EventProcessingRain($@) { } } -######### Under Construction sub EventProcessingWind($@) { my ( $hash, $shuttersDev, $events ) = @_; my $name = $hash->{NAME}; @@ -1218,9 +1217,23 @@ sub EventProcessingWind($@) { if ( $events =~ m#$reading:\s(\d+)# ) { foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) { $shutters->setShuttersDev($shuttersDev); + + ASC_Debug( 'EventProcessingWind: ' + . $shutters->getShuttersDev + . ' - WindProtection1: ' + . $shutters->getWindProtection + . ' WindMax1: ' + . $shutters->getWindMax + . ' WindMin1: ' + . $shutters->getWindMin + . ' Bekommender Wert1: ' + . $1 + ); + $shutters->setWindProtection('unprotection') - if ( not defined( $shutters->getWindProtection ) ); - next if ( $shutters->getWindMax < 0 ); + if ( not defined( $shutters->getWindProtection ) + or not $shutters->getWindProtection ); + next if ( CheckIfShuttersWindowRecOpen($shuttersDev) != 0 and $shutters->getShuttersPlace eq 'terrace' ); @@ -1239,6 +1252,18 @@ sub EventProcessingWind($@) { $shutters->setDriveCmd( $shutters->getLastPos ); $shutters->setWindProtection('unprotection'); } + + ASC_Debug( 'EventProcessingWind: ' + . $shutters->getShuttersDev + . ' - WindProtection2: ' + . $shutters->getWindProtection + . ' WindMax2: ' + . $shutters->getWindMax + . ' WindMin2: ' + . $shutters->getWindMin + . ' Bekommender Wert2: ' + . $1 + ); } } } @@ -1887,7 +1912,7 @@ sub EventProcessingShutters($@) { if ( $events =~ m#.*:\s(\d+)# ) { $shutters->setShuttersDev($shuttersDev); $ascDev->setPosReading; - if ( ( int( gettimeofday() ) - $shutters->getLastPosTimestamp ) > 60 + if ( ( int( gettimeofday() ) - $shutters->getLastPosTimestamp ) > $shutters->getDriveUpMaxDuration and $shutters->getLastPos != $shutters->getStatus ) { $shutters->setLastDrive('manual'); @@ -2427,9 +2452,9 @@ sub AutoSearchTwilightDev($) { } sub GetAttrValues($@) { - my ( $dev, $attribut ) = @_; + my ( $dev, $attribut, $default ) = @_; - my @values = split( ' ', AttrVal( $dev, $attribut, 'none' ) ); + my @values = split( ' ', AttrVal( $dev, $attribut, (defined($default) ? $default : 'none') ) ); my ( $value1, $value2 ) = split( ':', $values[0] ); my ( $value3, $value4 ) = split( ':', $values[1] ) if ( defined( $values[1] ) ); @@ -3211,8 +3236,7 @@ sub setDriveCmd { $offSet = $shutters->getOffset if ( $shutters->getOffset > -1 ); $offSet = $ascDev->getShuttersOffset if ( $shutters->getOffset < 0 ); - $offSetStart = $shutters->getOffsetStart - if ( $shutters->getOffsetStart > -1 ); + $offSetStart = $shutters->getOffsetStart; if ( $offSetStart > 0 and not $shutters->getNoOffset ) { InternalTimer( @@ -3609,7 +3633,7 @@ sub getASC { sub getAntiFreezePos { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_Antifreeze_Pos', 50 ); + return AttrVal( $self->{shuttersDev}, 'ASC_Antifreeze_Pos', $userAttrList{ASC_Antifreeze_Pos}[AttrVal( $self->{shuttersDev}, 'ASC', 2 )] ); } sub getShuttersPlace { @@ -3646,18 +3670,14 @@ sub getWiggleValue { ### Begin Beschattung sub getShadingPos { my $self = shift; - my $default = $self->{defaultarg}; - $default = 10 if ( not defined($default) ); - return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Pos', $default ); + return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Pos', $userAttrList{'ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100'}[AttrVal( $self->{shuttersDev}, 'ASC', 2 )] ); } sub getShadingMode { my $self = shift; - my $default = $self->{defaultarg}; - $default = 'off' if ( not defined($default) ); - return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Mode', $default ); + return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Mode', 'off' ); } sub _getBrightnessSensor { @@ -3721,46 +3741,46 @@ sub getBrightnessReading { sub getDirection { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Direction', -1 ); + return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Direction', 180 ); } sub getShadingAngleLeft { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Angle_Left', -1 ); + return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Angle_Left', 75 ); } sub getShadingAngleRight { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Angle_Right', -1 ); + return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Angle_Right', 75 ); } sub getShadingMinOutsideTemperature { my $self = shift; return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Min_OutsideTemperature', - 2 ); + 18 ); } sub getShadingMinElevation { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Min_Elevation', 15.0 ); + return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Min_Elevation', 25.0 ); } sub getShadingStateChangeSunny { my $self = shift; return AttrVal( $self->{shuttersDev}, 'ASC_Shading_StateChange_Sunny', - 5000 ); + 35000 ); } sub getShadingStateChangeCloudy { my $self = shift; return AttrVal( $self->{shuttersDev}, 'ASC_Shading_StateChange_Cloudy', - 2000 ); + 20000 ); } sub getShadingWaitingPeriod { @@ -3773,16 +3793,16 @@ sub getShadingWaitingPeriod { sub getOffset { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_Drive_Offset', 0 ); + return AttrVal( $self->{shuttersDev}, 'ASC_Drive_Offset', -1 ); } sub getOffsetStart { my $self = shift; return ( - AttrVal( $self->{shuttersDev}, 'ASC_Drive_OffsetStart', 3 ) > 2 - ? AttrVal( $self->{shuttersDev}, 'ASC_Drive_OffsetStart', 3 ) - : 3 + AttrVal( $self->{shuttersDev}, 'ASC_Drive_OffsetStart', -1 ) > 0 + ? AttrVal( $self->{shuttersDev}, 'ASC_Drive_OffsetStart', -1 ) + : -1 ); } @@ -3816,31 +3836,31 @@ sub getPosCmd { sub getOpenPos { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_Open_Pos', 0 ); + return AttrVal( $self->{shuttersDev}, 'ASC_Open_Pos', $userAttrList{'ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100'}[AttrVal( $self->{shuttersDev}, 'ASC', 2 )] ); } sub getVentilatePos { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_Ventilate_Pos', 80 ); + return AttrVal( $self->{shuttersDev}, 'ASC_Ventilate_Pos', $userAttrList{'ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100'}[AttrVal( $self->{shuttersDev}, 'ASC', 2 )] ); } sub getClosedPos { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_Closed_Pos', 100 ); + return AttrVal( $self->{shuttersDev}, 'ASC_Closed_Pos', $userAttrList{'ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100'}[AttrVal( $self->{shuttersDev}, 'ASC', 2 )] ); } sub getVentilateOpen { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_Ventilate_Window_Open', 'off' ); + return AttrVal( $self->{shuttersDev}, 'ASC_Ventilate_Window_Open', 'on' ); } sub getComfortOpenPos { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_ComfortOpen_Pos', 50 ); + return AttrVal( $self->{shuttersDev}, 'ASC_ComfortOpen_Pos', $userAttrList{'ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100'}[AttrVal( $self->{shuttersDev}, 'ASC', 2 )] ); } sub getPartyMode { @@ -3851,18 +3871,14 @@ sub getPartyMode { sub getRoommates { my $self = shift; - my $default = $self->{defaultarg}; - $default = 'none' if ( not defined($default) ); - return AttrVal( $self->{shuttersDev}, 'ASC_Roommate_Device', $default ); + return AttrVal( $self->{shuttersDev}, 'ASC_Roommate_Device', 'none' ); } sub getRoommatesReading { my $self = shift; - my $default = $self->{defaultarg}; - $default = 'state' if ( not defined($default) ); - return AttrVal( $self->{shuttersDev}, 'ASC_Roommate_Reading', $default ); + return AttrVal( $self->{shuttersDev}, 'ASC_Roommate_Reading', 'state' ); } sub getWindPos { @@ -3900,15 +3916,13 @@ sub getWindMax { int( gettimeofday() ); my ( $max, $hyst, $pos ) = FHEM::AutoShuttersControl::GetAttrValues( $self->{shuttersDev}, - 'ASC_WindParameters', 'none' ); + 'ASC_WindParameters', '50:20' ); ## Erwartetes Ergebnis # max:hyst pos - return 3 if ( $max eq 'none' ); $self->{ $self->{shuttersDev} }->{ASC_WindParameters}->{triggermax} = $max; - $self->{ $self->{shuttersDev} }->{ASC_WindParameters}->{triggerhyst} = - ( $hyst ne 'none' ? ( $max - $hyst ) : ( $max - 20 ) ); + $self->{ $self->{shuttersDev} }->{ASC_WindParameters}->{triggerhyst} = $hyst; $self->{ $self->{shuttersDev} }->{ASC_WindParameters}->{closedPos} = ( $pos ne 'none' ? $pos : $shutters->getOpenPos ); @@ -3936,13 +3950,13 @@ sub getWindMin { sub getModeUp { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_Mode_Up', 'off' ); + return AttrVal( $self->{shuttersDev}, 'ASC_Mode_Up', 'always' ); } sub getModeDown { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_Mode_Down', 'off' ); + return AttrVal( $self->{shuttersDev}, 'ASC_Mode_Down', 'always' ); } sub getLockOut { @@ -3965,34 +3979,30 @@ sub getAntiFreeze { sub getAutoAstroModeMorning { my $self = shift; - my $default = $self->{defaultarg}; - $default = 'none' if ( not defined($default) ); return AttrVal( $self->{shuttersDev}, 'ASC_AutoAstroModeMorning', - $default ); + 'none' ); } sub getAutoAstroModeEvening { my $self = shift; - my $default = $self->{defaultarg}; - $default = 'none' if ( not defined($default) ); return AttrVal( $self->{shuttersDev}, 'ASC_AutoAstroModeEvening', - $default ); + 'none' ); } sub getAutoAstroModeMorningHorizon { my $self = shift; return AttrVal( $self->{shuttersDev}, 'ASC_AutoAstroModeMorningHorizon', - 0 ); + 'none' ); } sub getAutoAstroModeEveningHorizon { my $self = shift; return AttrVal( $self->{shuttersDev}, 'ASC_AutoAstroModeEveningHorizon', - 0 ); + 'none' ); } sub getUp { @@ -4010,32 +4020,32 @@ sub getDown { sub getTimeUpEarly { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_Time_Up_Early', '04:30:00' ); + return AttrVal( $self->{shuttersDev}, 'ASC_Time_Up_Early', '05:00' ); } sub getTimeUpLate { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_Time_Up_Late', '09:00:00' ); + return AttrVal( $self->{shuttersDev}, 'ASC_Time_Up_Late', '08:30' ); } sub getTimeDownEarly { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_Time_Down_Early', '15:30:00' ); + return AttrVal( $self->{shuttersDev}, 'ASC_Time_Down_Early', '16:00' ); } sub getTimeDownLate { my $self = shift; - return AttrVal( $self->{shuttersDev}, 'ASC_Time_Down_Late', '22:00:00' ); + return AttrVal( $self->{shuttersDev}, 'ASC_Time_Down_Late', '22:00' ); } sub getTimeUpWeHoliday { my $self = shift; return AttrVal( $self->{shuttersDev}, 'ASC_Time_Up_WE_Holiday', - '04:00:00' ); + '08:00' ); } sub getBrightnessMinVal { @@ -4076,6 +4086,12 @@ sub getBrightnessMaxVal { ->{triggermax}; } +sub getDriveUpMaxDuration { + my $self = shift; + + return AttrVal( $self->{shuttersDev}, 'ASC_DriveUpMaxDuration',60 ); +} + ## Subklasse Readings von ASC_Shutters ## package ASC_Shutters::Readings; @@ -4115,7 +4131,6 @@ sub getStatus { sub getDelayCmd { my $self = shift; - my $default = $self->{defaultarg}; return $self->{ $self->{shuttersDev} }{delayCmd}; } @@ -4142,18 +4157,14 @@ BEGIN { sub getSubTyp { my $self = shift; - my $default = $self->{defaultarg}; - $default = 'twostate' if ( not defined($default) ); - return AttrVal( $self->{shuttersDev}, 'ASC_WindowRec_subType', $default ); + return AttrVal( $self->{shuttersDev}, 'ASC_WindowRec_subType', 'twostate' ); } sub _getWinDev { my $self = shift; - my $default = $self->{defaultarg}; - $default = 'none' if ( not defined($default) ); - return AttrVal( $self->{shuttersDev}, 'ASC_WindowRec', $default ); + return AttrVal( $self->{shuttersDev}, 'ASC_WindowRec', 'none' ); } ## Subklasse Readings von Klasse ASC_Window ## @@ -4174,10 +4185,8 @@ BEGIN { sub getWinStatus { my $self = shift; - my $default = $self->{defaultarg}; - $default = 'closed' if ( not defined($default) ); - return ReadingsVal( $shutters->_getWinDev, 'state', $default ); + return ReadingsVal( $shutters->_getWinDev, 'state', 'closed' ); } ## Klasse ASC_Roommate ## @@ -4311,28 +4320,22 @@ sub setLastPosReading { sub getPartyMode { my $self = shift; my $name = $self->{name}; - my $default = $self->{defaultarg}; - $default = 'none' if ( not defined($default) ); - return ReadingsVal( $name, 'partyMode', $default ); + return ReadingsVal( $name, 'partyMode', 'none' ); } sub getHardLockOut { my $self = shift; my $name = $self->{name}; - my $default = $self->{defaultarg}; - $default = 'none' if ( not defined($default) ); - return ReadingsVal( $name, 'hardLockOut', $default ); + return ReadingsVal( $name, 'hardLockOut', 'none' ); } sub getSunriseTimeWeHoliday { my $self = shift; my $name = $self->{name}; - my $default = $self->{defaultarg}; - $default = 'none' if ( not defined($default) ); - return ReadingsVal( $name, 'sunriseTimeWeHoliday', $default ); + return ReadingsVal( $name, 'sunriseTimeWeHoliday', 'none' ); } sub getMonitoredDevs { @@ -4441,15 +4444,13 @@ sub getBrightnessMaxVal { my ( $triggermax, $triggermin ) = FHEM::AutoShuttersControl::GetAttrValues( $name, - 'ASC_brightnessDriveUpDown', 'none' ); + 'ASC_brightnessDriveUpDown', '800:500' ); ## erwartetes Ergebnis # max:min - $self->{ASC_brightness}->{triggermin} = - ( $triggermin ne 'none' ? $triggermin : 500 ); - $self->{ASC_brightness}->{triggermax} = - ( $triggermax ne 'none' ? $triggermax : 800 ); + $self->{ASC_brightness}->{triggermin} = $triggermin; + $self->{ASC_brightness}->{triggermax} = $triggermax; return $self->{ASC_brightness}->{triggermax}; } @@ -4464,10 +4465,8 @@ sub _getTwilightDevice { sub getAutoAstroModeEvening { my $self = shift; my $name = $self->{name}; - my $default = $self->{defaultarg}; - $default = 'none' if ( not defined($default) ); - return AttrVal( $name, 'ASC_autoAstroModeEvening', $default ); + return AttrVal( $name, 'ASC_autoAstroModeEvening', 'none' ); } sub getAutoAstroModeEveningHorizon { @@ -4480,10 +4479,8 @@ sub getAutoAstroModeEveningHorizon { sub getAutoAstroModeMorning { my $self = shift; my $name = $self->{name}; - my $default = $self->{defaultarg}; - $default = 'none' if ( not defined($default) ); - return AttrVal( $name, 'ASC_autoAstroModeMorning', $default ); + return AttrVal( $name, 'ASC_autoAstroModeMorning', 'none' ); } sub getAutoAstroModeMorningHorizon { @@ -4496,19 +4493,15 @@ sub getAutoAstroModeMorningHorizon { sub getAutoShuttersControlMorning { my $self = shift; my $name = $self->{name}; - my $default = $self->{defaultarg}; - $default = 'none' if ( not defined($default) ); - return AttrVal( $name, 'ASC_autoShuttersControlMorning', $default ); + return AttrVal( $name, 'ASC_autoShuttersControlMorning', 'none' ); } sub getAutoShuttersControlEvening { my $self = shift; my $name = $self->{name}; - my $default = $self->{defaultarg}; - $default = 'none' if ( not defined($default) ); - return AttrVal( $name, 'ASC_autoShuttersControlEvening', $default ); + return AttrVal( $name, 'ASC_autoShuttersControlEvening', 'none' ); } sub getAutoShuttersControlComfort { @@ -4521,10 +4514,8 @@ sub getAutoShuttersControlComfort { sub getFreezeTemp { my $self = shift; my $name = $self->{name}; - my $default = $self->{defaultarg}; - $default = 3 if ( not defined($default) ); - return AttrVal( $name, 'ASC_freezeTemp', $default ); + return AttrVal( $name, 'ASC_freezeTemp', 3 ); } sub _getTempSensor { @@ -4715,146 +4706,6 @@ sub getblockAscDrivesAfterManual { =begin html - -

Automatic shutter control - ASC

- - -=end html - -=begin html_DE -

Automatische Rollladensteuerung - ASC

+=end html + +=begin html_DE + + +

Automatische Rollladensteuerung - ASC

+ + =end html_DE =for :application/json;q=META.json 73_AutoShuttersControl.pm