diff --git a/73_AutoShuttersControl.pm b/73_AutoShuttersControl.pm index f0369c1..0c755a0 100644 --- a/73_AutoShuttersControl.pm +++ b/73_AutoShuttersControl.pm @@ -46,7 +46,7 @@ package main; use strict; use warnings; -sub ascAPIget($@) { +sub ascAPIget { my ( $getCommand, $shutterDev, $value ) = @_; return AutoShuttersControl_ascAPIget( $getCommand, $shutterDev, $value ); @@ -273,7 +273,7 @@ my %posSetCmds = ( my $shutters = new ASC_Shutters(); my $ascDev = new ASC_Dev(); -sub ascAPIget($@) { +sub ascAPIget { my ( $getCommand, $shutterDev, $value ) = @_; my $getter = 'get' . $getCommand; @@ -291,7 +291,7 @@ sub ascAPIget($@) { } } -sub Initialize($) { +sub Initialize { my ($hash) = @_; ## Da ich mit package arbeite müssen in die Initialize für die jeweiligen hash Fn Funktionen der Funktionsname @@ -328,7 +328,7 @@ sub Initialize($) { return FHEM::Meta::InitMod( __FILE__, $hash ); } -sub Define($$) { +sub Define { my ( $hash, $def ) = @_; my @a = split( '[ \t][ \t]*', $def ); @@ -374,7 +374,7 @@ sub Define($$) { return undef; } -sub Undef($$) { +sub Undef { my ( $hash, $arg ) = @_; my $name = $hash->{NAME}; @@ -389,7 +389,7 @@ sub Undef($$) { return undef; } -sub Attr(@) { +sub Attr { my ( $cmd, $name, $attrName, $attrVal ) = @_; # my $hash = $defs{$name}; @@ -397,7 +397,7 @@ sub Attr(@) { return undef; } -sub Notify($$) { +sub Notify { my ( $hash, $dev ) = @_; my $name = $hash->{NAME}; @@ -510,7 +510,7 @@ sub Notify($$) { return; } -sub EventProcessingGeneral($$$) { +sub EventProcessingGeneral { my ( $hash, $devname, $events ) = @_; my $name = $hash->{NAME}; @@ -589,7 +589,7 @@ m#^(DELETEATTR|ATTR)\s(.*)\s(ASC_autoAstroModeMorning|ASC_autoAstroModeMorningHo } } -sub Set($$@) { +sub Set { my ( $hash, $name, @aa ) = @_; my ( $cmd, @args ) = @aa; @@ -676,7 +676,7 @@ sub Set($$@) { return undef; } -sub Get($$@) { +sub Get { my ( $hash, $name, @aa ) = @_; my ( $cmd, @args ) = @aa; @@ -696,7 +696,7 @@ sub Get($$@) { } } -sub ShuttersDeviceScan($) { +sub ShuttersDeviceScan { my $hash = shift; my $name = $hash->{NAME}; @@ -787,7 +787,7 @@ sub ShuttersDeviceScan($) { } ## Die Funktion schreibt in das Moduldevice Readings welche Rolläden in welchen Räumen erfasst wurden. -sub WriteReadingsShuttersList($) { +sub WriteReadingsShuttersList { my $hash = shift; my $name = $hash->{NAME}; @@ -828,7 +828,7 @@ sub WriteReadingsShuttersList($) { readingsEndUpdate( $hash, 0 ); } -sub UserAttributs_Readings_ForShutters($$) { +sub UserAttributs_Readings_ForShutters { my ( $hash, $cmd ) = @_; my $name = $hash->{NAME}; @@ -900,7 +900,7 @@ sub UserAttributs_Readings_ForShutters($$) { } ## Fügt dem NOTIFYDEV Hash weitere Devices hinzu -sub AddNotifyDev($@) { +sub AddNotifyDev { ### Beispielaufruf: AddNotifyDev( $hash, $3, $1, $2 ) if ( $3 ne 'none' ); my ( $hash, $dev, $shuttersDev, $shuttersAttr ) = @_; @@ -930,7 +930,7 @@ sub AddNotifyDev($@) { } ## entfernt aus dem NOTIFYDEV Hash Devices welche als Wert in Attributen steckten -sub DeleteNotifyDev($@) { +sub DeleteNotifyDev { my ( $hash, $shuttersDev, $shuttersAttr ) = @_; my $name = $hash->{NAME}; @@ -960,7 +960,7 @@ sub DeleteNotifyDev($@) { } ## Sub zum steuern der Rolläden bei einem Fenster Event -sub EventProcessingWindowRec($@) { +sub EventProcessingWindowRec { my ( $hash, $shuttersDev, $events ) = @_; my $name = $hash->{NAME}; @@ -1141,7 +1141,7 @@ sub EventProcessingWindowRec($@) { } ## Sub zum steuern der Rolladen bei einem Bewohner/Roommate Event -sub EventProcessingRoommate($@) { +sub EventProcessingRoommate { my ( $hash, $shuttersDev, $events ) = @_; my $name = $hash->{NAME}; @@ -1356,7 +1356,7 @@ sub EventProcessingRoommate($@) { } } -sub EventProcessingResidents($@) { +sub EventProcessingResidents { my ( $hash, $device, $events ) = @_; my $name = $device; @@ -1562,7 +1562,7 @@ sub EventProcessingResidents($@) { } } -sub EventProcessingRain($@) { +sub EventProcessingRain { #### Ist noch nicht fertig, es fehlt noch das verzögerte Prüfen auf erhalten bleiben des getriggerten Wertes. @@ -1584,7 +1584,7 @@ sub EventProcessingRain($@) { } } -sub RainProtection(@) { +sub RainProtection { my ( $hash, $val, $triggerMax, $closedPos ) = @_; foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) { @@ -1623,7 +1623,7 @@ sub RainProtection(@) { } } -sub EventProcessingWind($@) { +sub EventProcessingWind { my ( $hash, $shuttersDev, $events ) = @_; my $name = $hash->{NAME}; $shutters->setShuttersDev($shuttersDev); @@ -1696,7 +1696,7 @@ sub EventProcessingWind($@) { } ########## -sub EventProcessingBrightness($@) { +sub EventProcessingBrightness { my ( $hash, $shuttersDev, $events ) = @_; my $name = $hash->{NAME}; $shutters->setShuttersDev($shuttersDev); @@ -2068,7 +2068,7 @@ sub EventProcessingBrightness($@) { } } -sub EventProcessingShadingBrightness($@) { +sub EventProcessingShadingBrightness { my ( $hash, $shuttersDev, $events ) = @_; my $name = $hash->{NAME}; $shutters->setShuttersDev($shuttersDev); @@ -2127,7 +2127,7 @@ sub EventProcessingShadingBrightness($@) { } } -sub EventProcessingTwilightDevice($@) { +sub EventProcessingTwilightDevice { my ( $hash, $device, $events ) = @_; # Twilight @@ -2199,7 +2199,7 @@ sub EventProcessingTwilightDevice($@) { } } -sub ShadingProcessing($@) { +sub ShadingProcessing { ### angleMinus ist $shutters->getShadingAzimuthLeft ### anglePlus ist $shutters->getShadingAzimuthRight ### winPos ist die Fensterposition $shutters->getDirection @@ -2384,7 +2384,7 @@ sub ShadingProcessing($@) { ); } -sub ShadingProcessingDriveCommand($$) { +sub ShadingProcessingDriveCommand { my ( $hash, $shuttersDev ) = @_; my $name = $hash->{NAME}; @@ -2470,7 +2470,7 @@ sub ShadingProcessingDriveCommand($$) { } } -sub EventProcessingPartyMode($) { +sub EventProcessingPartyMode { my $hash = shift; my $name = $hash->{NAME}; @@ -2520,7 +2520,7 @@ sub EventProcessingPartyMode($) { } } -sub EventProcessingAdvShuttersClose($) { +sub EventProcessingAdvShuttersClose { my $hash = shift; my $name = $hash->{NAME}; @@ -2544,7 +2544,7 @@ sub EventProcessingAdvShuttersClose($) { } } -sub EventProcessingShutters($@) { +sub EventProcessingShutters { my ( $hash, $shuttersDev, $events ) = @_; my $name = $hash->{NAME}; @@ -2604,7 +2604,7 @@ sub EventProcessingShutters($@) { ); } -sub EventProcessingExternalTriggerDevice($@) { +sub EventProcessingExternalTriggerDevice { my ( $hash, $shuttersDev, $events ) = @_; my $name = $hash->{NAME}; @@ -2657,7 +2657,7 @@ sub EventProcessingExternalTriggerDevice($@) { } # Sub für das Zusammensetzen der Rolläden Steuerbefehle -sub ShuttersCommandSet($$$) { +sub ShuttersCommandSet { my ( $hash, $shuttersDev, $posValue ) = @_; my $name = $hash->{NAME}; $shutters->setShuttersDev($shuttersDev); @@ -2736,7 +2736,7 @@ sub ShuttersCommandSet($$$) { } ## Sub welche die InternalTimer nach entsprechenden Sunset oder Sunrise zusammen stellt -sub CreateSunRiseSetShuttersTimer($$) { +sub CreateSunRiseSetShuttersTimer { my ( $hash, $shuttersDev ) = @_; my $name = $hash->{NAME}; my $shuttersDevHash = $defs{$shuttersDev}; @@ -2850,7 +2850,7 @@ sub CreateSunRiseSetShuttersTimer($$) { } ## Funktion zum neu setzen der Timer und der Readings für Sunset/Rise -sub RenewSunRiseSetShuttersTimer($) { +sub RenewSunRiseSetShuttersTimer { my $hash = shift; foreach ( @{ $hash->{helper}{shuttersList} } ) { @@ -2945,7 +2945,7 @@ sub RenewSunRiseSetShuttersTimer($) { } ## Funktion zum hardwareseitigen setzen des lock-out oder blocking beim Rolladen selbst -sub HardewareBlockForShutters($$) { +sub HardewareBlockForShutters { my ( $hash, $cmd ) = @_; foreach ( @{ $hash->{helper}{shuttersList} } ) { $shutters->setShuttersDev($_); @@ -2954,7 +2954,7 @@ sub HardewareBlockForShutters($$) { } ## Funktion für das wiggle aller Shutters zusammen -sub wiggleAll($) { +sub wiggleAll { my $hash = shift; foreach ( @{ $hash->{helper}{shuttersList} } ) { @@ -2962,7 +2962,7 @@ sub wiggleAll($) { } } -sub wiggle($$) { +sub wiggle { my ( $hash, $shuttersDev ) = @_; $shutters->setShuttersDev($shuttersDev); $shutters->setNoDelay(1); @@ -3001,7 +3001,7 @@ sub wiggle($$) { #### ## Funktion welche beim Ablaufen des Timers für Sunset aufgerufen werden soll -sub SunSetShuttersAfterTimerFn($) { +sub SunSetShuttersAfterTimerFn { my $funcHash = shift; my $hash = $funcHash->{hash}; my $shuttersDev = $funcHash->{shuttersdevice}; @@ -3071,7 +3071,7 @@ sub SunSetShuttersAfterTimerFn($) { } ## Funktion welche beim Ablaufen des Timers für Sunrise aufgerufen werden soll -sub SunRiseShuttersAfterTimerFn($) { +sub SunRiseShuttersAfterTimerFn { my $funcHash = shift; my $hash = $funcHash->{hash}; my $shuttersDev = $funcHash->{shuttersdevice}; @@ -3171,7 +3171,7 @@ sub SunRiseShuttersAfterTimerFn($) { CreateSunRiseSetShuttersTimer( $hash, $shuttersDev ); } -sub CreateNewNotifyDev($) { +sub CreateNewNotifyDev { my $hash = shift; my $name = $hash->{NAME}; @@ -3213,7 +3213,7 @@ sub CreateNewNotifyDev($) { $hash->{NOTIFYDEV} = $hash->{NOTIFYDEV} . $shuttersList; } -sub ShuttersInformation($@) { +sub ShuttersInformation { my ( $FW_wname, $d, $room, $pageHash ) = @_; my $hash = $defs{$d}; @@ -3300,7 +3300,7 @@ sub ShuttersInformation($@) { return $ret; } -sub GetMonitoredDevs($) { +sub GetMonitoredDevs { my $hash = shift; my $notifydevs = eval { decode_json( ReadingsVal( $hash->{NAME}, '.monitoredDevs', 'none' ) ); @@ -3348,7 +3348,7 @@ sub GetMonitoredDevs($) { ## my little helper ################################# -sub PositionValueWindowRec($$) { +sub PositionValueWindowRec { my ( $shuttersDev, $posValue ) = @_; if ( CheckIfShuttersWindowRecOpen($shuttersDev) == 1 @@ -3379,7 +3379,7 @@ sub PositionValueWindowRec($$) { return $posValue; } -sub AutoSearchTwilightDev($) { +sub AutoSearchTwilightDev { my $hash = shift; my $name = $hash->{NAME}; @@ -3392,7 +3392,7 @@ sub AutoSearchTwilightDev($) { } } -sub GetAttrValues($@) { +sub GetAttrValues { my ( $dev, $attribut, $default ) = @_; my @values = split( ' ', @@ -3418,7 +3418,7 @@ sub GetAttrValues($@) { } # Hilfsfunktion welche meinen ReadingString zum finden der getriggerten Devices und der Zurdnung was das Device überhaupt ist und zu welchen Rolladen es gehört aus liest und das Device extraiert -sub ExtractNotifyDevFromEvent($$$) { +sub ExtractNotifyDevFromEvent { my ( $hash, $shuttersDev, $shuttersAttr ) = @_; my %notifyDevs; while ( my $notifyDev = each %{ $hash->{monitoredDevs} } ) { @@ -3446,7 +3446,7 @@ sub ExtractNotifyDevFromEvent($$$) { } ## Ist Tag oder Nacht für den entsprechende Rolladen -sub _IsDay($) { +sub _IsDay { my ($shuttersDev) = @_; $shutters->setShuttersDev($shuttersDev); @@ -3566,7 +3566,7 @@ sub _IsDay($) { return $respIsDay; } -sub ShuttersSunrise($$) { +sub ShuttersSunrise { my ( $shuttersDev, $tm ) = @_; # Tm steht für Timemode und bedeutet Realzeit oder Unixzeit my $autoAstroMode; @@ -4002,7 +4002,7 @@ sub ShuttersSunrise($$) { } } -sub IsAfterShuttersTimeBlocking($) { +sub IsAfterShuttersTimeBlocking { my ($shuttersDev) = @_; $shutters->setShuttersDev($shuttersDev); @@ -4025,7 +4025,7 @@ sub IsAfterShuttersTimeBlocking($) { else { return 1 } } -sub IsAfterShuttersManualBlocking($) { +sub IsAfterShuttersManualBlocking { my $shuttersDev = shift; $shutters->setShuttersDev($shuttersDev); @@ -4050,7 +4050,7 @@ sub IsAfterShuttersManualBlocking($) { else { return 1 } } -sub ShuttersSunset($$) { +sub ShuttersSunset { my ( $shuttersDev, $tm ) = @_; # Tm steht für Timemode und bedeutet Realzeit oder Unixzeit my $autoAstroMode; @@ -4114,7 +4114,7 @@ sub ShuttersSunset($$) { } ## Kontrolliert ob das Fenster von einem bestimmten Rolladen offen ist -sub CheckIfShuttersWindowRecOpen($) { +sub CheckIfShuttersWindowRecOpen { my $shuttersDev = shift; $shutters->setShuttersDev($shuttersDev); @@ -4132,7 +4132,7 @@ sub CheckIfShuttersWindowRecOpen($) { } # CK: covers: close|closed } -sub makeReadingName($) { +sub makeReadingName { my ($rname) = shift; my %charHash = ( chr(0xe4) => "ae", # ä @@ -4151,7 +4151,7 @@ sub makeReadingName($) { return $rname; } -sub TimeMin2Sec($) { +sub TimeMin2Sec { my $min = shift; my $sec; @@ -4160,10 +4160,10 @@ sub TimeMin2Sec($) { } sub IsWe { - return main::IsWe(shift); + return main::IsWe(shift, shift); } -sub _SetCmdFn($) { +sub _SetCmdFn { my $h = shift; my $shuttersDev = $h->{shuttersDev}; my $posValue = $h->{posValue}; @@ -4218,7 +4218,7 @@ sub _SetCmdFn($) { and $shutters->getSelfDefenseAbsentTimerrun ); } -sub _setShuttersLastDriveDelayed($) { +sub _setShuttersLastDriveDelayed { my $h = shift; my $shuttersDevHash = $h->{devHash}; @@ -4228,7 +4228,7 @@ sub _setShuttersLastDriveDelayed($) { $lastDrive, 1 ); } -sub ASC_Debug($) { +sub ASC_Debug { return unless ( AttrVal( $ascDev->getName, 'ASC_debug', 0 ) ); @@ -4242,14 +4242,14 @@ sub ASC_Debug($) { ); } -sub _averageBrightness(@) { +sub _averageBrightness { my @input = @_; use List::Util qw(sum); return int( sum(@input) / @input ); } -sub _perlCodeCheck($) { +sub _perlCodeCheck { my $exec = shift; my $val = undef; @@ -4260,7 +4260,7 @@ sub _perlCodeCheck($) { return $val; } -sub PrivacyUpTime($$) { +sub PrivacyUpTime { my ( $shuttersDevHash, $shuttersSunriseUnixtime ) = @_; my $privacyUpUnixtime; @@ -4301,7 +4301,7 @@ sub PrivacyUpTime($$) { return $shuttersSunriseUnixtime; } -sub PrivacyDownTime($$) { +sub PrivacyDownTime { my ( $shuttersDevHash, $shuttersSunsetUnixtime ) = @_; my $privacyDownUnixtime; @@ -4365,7 +4365,7 @@ sub _IsAdv { return $adv; } -sub DevStateIcon($) { +sub DevStateIcon { my ($hash) = @_; $hash = $defs{$hash} if ( ref($hash) ne 'HASH' );