From 085e0fe9a0f044585dee0a4b9eb00dc012b653db Mon Sep 17 00:00:00 2001 From: LeonGaultier Date: Tue, 21 Jan 2025 16:48:49 +0000 Subject: [PATCH] 73_AutoShuttersControl: https://forum.fhem.de/index.php?topic=136510.0 git-svn-id: https://svn.fhem.de/fhem/trunk@29546 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 2 + fhem/FHEM/73_AutoShuttersControl.pm | 172 ++++++++++++++-------------- 2 files changed, 88 insertions(+), 86 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index a525b1e15..902ba9ce8 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,7 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it + - feature: 73_AutoShuttersControl: + https://forum.fhem.de/index.php?topic=136510.0 - feature: 76_SolarForecast: add temporary Migrate Getter x_migrate, Implementation of a Messaging System - change: 49_SSCam: fix Warning, set verified Version to 9.2.2 diff --git a/fhem/FHEM/73_AutoShuttersControl.pm b/fhem/FHEM/73_AutoShuttersControl.pm index 6f064fe63..be03ae92b 100644 --- a/fhem/FHEM/73_AutoShuttersControl.pm +++ b/fhem/FHEM/73_AutoShuttersControl.pm @@ -6,7 +6,7 @@ # All rights reserved # # Special thanks goes to: -# - Bernd (Cluni) this module is based on the logic of his script "Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl" (https://forum.fhem.de/index.php/topic,73964.0.html) +# - Bernd (Cluni) this module is based on the logic of his script "Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl" (https://forum.fhem.de/index.php/topic,73964.0.html) # - Beta-User for many tests, many suggestions and good discussions # - pc1246 write english commandref # - FunkOdyssey commandref style @@ -63,7 +63,7 @@ sub ::AutoShuttersControl_Initialize { goto &Initialize } sub Initialize { my $hash = shift; -## Da ich mit package arbeite müssen in die Initialize für die jeweiligen hash Fn Funktionen der Funktionsname +## Da ich mit package arbeite, muessen in die Initialize fuer die jeweiligen hash Fn Funktionen der Funktionsname # und davor mit :: getrennt der eigentliche package Name des Modules $hash->{SetFn} = \&FHEM::Automation::ShuttersControl::Set; $hash->{GetFn} = \&FHEM::Automation::ShuttersControl::Get; @@ -94,7 +94,7 @@ sub Initialize { . 'ASC_advStartDate:DeadSunday,FirstAdvent ' . 'ASC_advEndDate:CandlemasDay,EpiphanyDay ' . $readingFnAttributes; - $hash->{NotifyOrderPrefix} = '51-'; # Order Nummer für NotifyFn + $hash->{NotifyOrderPrefix} = '51-'; # Order Nummer für NotifyFn $hash->{FW_detailFn} = \&FHEM::Automation::ShuttersControl::ShuttersInformation; $hash->{parseParams} = 1; @@ -109,7 +109,7 @@ __END__ =pod =item device =item summary Module for controlling shutters depending on various conditions -=item summary_DE Modul zur automatischen Rolladensteuerung auf Basis bestimmter Ereignisse +=item summary_DE Modul zur automatischen Rollladensteuerung auf Basis bestimmter Ereignisse =begin html @@ -128,7 +128,7 @@ __END__

After telling ASC which shutters should be controlled, several in-depth configuration options are provided. With these and in combination with a resident presence state, complex scenarios are possible: - For example, shutters could be opened if a resident awakes from sleep and the sun is already rosen. Or if a + For example, shutters could be opened if a resident awakes from sleep and the sun has already risen. Or if a closed window with shutters down is tilted, the shutters could be half opened for ventilation. Many more is possible.

@@ -150,7 +150,7 @@ __END__ Now was the new global attribute ASC added to the FHEM installation. Each shutter that is to be controlled by AutoShuttersControl must now have the attribute ASC set to 1 or 2. The value 1 is to be used with devices whose state is given as position (i.e. ROLLO or Siro, shutters - openend is 0, shutters closed is 100), 2 with devices whose state is given as percent closed (i.e. HomeMatic, + opened is 0, shutters closed is 100), 2 with devices whose state is given as percent closed (i.e. HomeMatic, shutters opened is 100, closed is 0).

@@ -194,7 +194,7 @@ __END__ If the brightness or time mode is used, the value from ASC_Time_Up_Late is shown.

  • ASC_Time_DriveDown - if the astro mode is used, the next sunset is shown. - If the brightness or time mode is used, the value from ASC_TASC_Time_Down_Late is + If the brightness or time mode is used, the value from ASC_Time_Down_Late is shown.
  • ASC_ShuttersLastDrive - initiator for the last action
  • @@ -216,7 +216,7 @@ __END__ ASC_Expert attribute is set to 1. -
  • hardLockOut on|off -
  • hardLockOut - on/off - Aktiviert den hardwareseitigen Aussperrschutz für die Rollläden, bei denen das Attributs ASC_LockOut entsprechend auf hard gesetzt ist. Mehr Informationen in der Beschreibung bei den Attributen für die Rollladengeräten.
  • +
  • hardLockOut on|off -
  • hardLockOut - on/off - Aktiviert den hardwareseitigen Aussperrschutz für die Rollläden, bei denen das Attribut ASC_LockOut entsprechend auf hard gesetzt ist. Mehr Informationen in der Beschreibung bei den Attributen für die Rollladengeräte.
  • partyMode on|off - controls the global party mode for shutters. Every shutters whose @@ -306,11 +306,11 @@ __END__
  • ASC_brightnessDriveUpDown - VALUE-MORNING:VALUE-EVENING - Drive the shutters by brightness. VALUE-MORNING sets the brightness threshold for the morning. If the value is reached in the morning, the shutter will go up. Vice versa in the evening. This is a global setting - and can be overwritte per device with the ASC_BrightnessSensor attribute (see below). + and can be overwritten per device with the ASC_BrightnessSensor attribute (see below).
  • ASC_debug - - Extendend logging for debugging purposes + Extended logging for debugging purposes
  • ASC_expert - Switches the export mode on. Currently, if set to 1, get @@ -380,14 +380,14 @@ __END__
  • ASC_Antifreeze - soft|am|pm|hard|off - Freeze protection.
  • ASC_Antifreeze_Pos - Position to be operated if the shutter should be closed, - but ASC_Antifreeze is not set to off. (Default: dependent on attributASC 85/15). + but ASC_Antifreeze is not set to off. (default: dependent on attribute ASC 85/15).
  • ASC_AutoAstroModeEvening - Can be set to REAL, CIVIL, @@ -427,11 +427,11 @@ __END__
  • ASC_Closed_Pos - The closed position value from 0 to 100 percent in increments of 10. - (Default: dependent on attributASC 100/0). + (Default: dependent on attribute ASC 100/0).
  • ASC_ComfortOpen_Pos - The comfort opening position, ranging - from 0 to 100 percent in increments of 10. (Default: dependent on attributASC 20/80). + from 0 to 100 percent in increments of 10. (Default: dependent on attribute ASC 20/80).
  • ASC_Down - astro|time|brightness|roommate - Drive the shutter depending on this setting: @@ -494,11 +494,11 @@ __END__
  • ASC_Open_Pos - The opening position value from 0 to 100 percent in increments of 10. - (Default: dependent on attributASC 0/100). + (Default: dependent on attribute ASC 0/100).
  • ASC_Sleep_Pos - The opening position value from 0 to 100 percent in increments of 10. - (Default: dependent on attributASC 75/25). + (Default: dependent on attribute ASC 75/25).
  • ASC_Partymode on|off - Party mode. If configured to on, driving orders for the @@ -588,7 +588,7 @@ __END__
  • ASC_Time_Up_WE_Holiday - Will not drive before time is ASC_Time_Up_WE_Holiday on weekends and holidays (holiday2we is considered). Defaults to 08:00. Warning! If ASC_Up set to brightness, the time for ASC_Time_Up_WE_Holiday - must be earlier then ASC_Time_Up_Late. + must be earlier than ASC_Time_Up_Late.
  • ASC_Up astro|time|brightness|roommate - Drive the shutter depending on this setting: @@ -603,7 +603,7 @@ __END__
  • ASC_Ventilate_Pos - The opening position value for ventilation - from 0 to 100 percent in increments of 10. (Default: dependent on attributASC 70/30). + from 0 to 100 percent in increments of 10. (Default: dependent on attribute ASC 70/30).
  • ASC_Ventilate_Window_Open on|off - Drive to ventilation position as window is opened @@ -637,7 +637,7 @@ __END__
  • ASC_CommandTemplate - FHEM or Perl command (Perl in braces as usual needs escaping semicolons etc.).
    This optional attribute will override the internally determined command to drive this shutter. Setting it, is only recommended in some rare and special cases,, in most cases there's no need to set this attribute! - The parameters $name (name of the shutter device), $pos (target position for the respective drive command), $slatPos (target position for the (turnable) lammellas in venetion blinds) and $cause (internal label for the cause of the driving command) will be replaced by the appropirate values. You may have to take care to avoid unneeded driving commands. + The parameters $name (name of the shutter device), $pos (target position for the respective drive command), $slatPos (target position for the (rotating) slats on blinds) and $cause (internal label for the cause of the driving command) will be replaced by the appropirate values. You may have to take care to avoid unneeded driving commands. Examples:

    -
  • ASC_ShuttersPlace - window/terrace/awning - Wenn dieses Attribut auf terrace gesetzt ist, das Residence Device in den Status "gone" geht und SelfDefense aktiv ist (ohne das das Reading selfDefense gesetzt sein muss), wird das Rollo geschlossen. awning steht für Markise und wirkt sich auf die Beschattungssteuerung aus. (default: window)
  • +
  • ASC_ShuttersPlace - window/terrace/awning - Wenn dieses Attribut auf terrace gesetzt ist, das Residence Device in den Status "gone" geht und SelfDefense aktiv ist (ohne das das Reading selfDefense gesetzt sein muss), wird das Rollo geschlossen. awning steht für Markise und wirkt sich auf die Beschattungssteuerung aus. (default: window)
  • -
  • ASC_Time_Down_Early - Sonnenuntergang frühste Zeit zum Runterfahren (default: 16:00) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss ein Zeitformat in Form HH:MM[:SS] sein!!!
  • +
  • ASC_Time_Down_Early - Sonnenuntergang früheste Zeit zum Runterfahren (default: 16:00) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss ein Zeitformat in Form HH:MM[:SS] sein!!!
  • -
  • ASC_Time_Down_Late - Sonnenuntergang späteste Zeit zum Runterfahren (default: 22:00) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss ein Zeitformat in Form HH:MM[:SS] sein!!!
  • +
  • ASC_Time_Down_Late - Sonnenuntergang späteste Zeit zum Runterfahren (default: 22:00) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss ein Zeitformat in Form HH:MM[:SS] sein!!!
  • -
  • ASC_Time_Up_Early - Sonnenaufgang frühste Zeit zum Hochfahren (default: 05:00) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss ein Zeitformat in Form HH:MM[:SS] sein!!!
  • +
  • ASC_Time_Up_Early - Sonnenaufgang früheste Zeit zum Hochfahren (default: 05:00) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss ein Zeitformat in Form HH:MM[:SS] sein!!!
  • -
  • ASC_Time_Up_Late - Sonnenaufgang späteste Zeit zum Hochfahren (default: 08:30) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss ein Zeitformat in Form HH:MM[:SS] sein!!!
  • +
  • ASC_Time_Up_Late - Sonnenaufgang späteste Zeit zum Hochfahren (default: 08:30) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss ein Zeitformat in Form HH:MM[:SS] sein!!!
  • -
  • ASC_Time_Up_WE_Holiday - Sonnenaufgang frühste Zeit zum Hochfahren am Wochenende und/oder Urlaub (holiday2we wird beachtet). (default: 08:00) ACHTUNG!!! in Verbindung mit Brightness für ASC_Up muss die Uhrzeit kleiner sein wie die Uhrzeit aus ASC_Time_Up_Late !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss ein Zeitformat in Form HH:MM[:SS] sein!!!
  • +
  • ASC_Time_Up_WE_Holiday - Sonnenaufgang früheste Zeit zum Hochfahren am Wochenende und/oder Urlaub (holiday2we wird beachtet). (default: 08:00) ACHTUNG!!! in Verbindung mit Brightness für ASC_Up muss die Uhrzeit kleiner sein wie die Uhrzeit aus ASC_Time_Up_Late !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss ein Zeitformat in Form HH:MM[:SS] sein!!!
  • ASC_Up - astro/time/brightness/roommate - bei astro wird Sonnenaufgang berechnet, bei time wird der Wert aus ASC_Time_Up_Early als Fahrzeit verwendet und bei brightness muss ASC_Time_Up_Early und ASC_Time_Up_Late korrekt gesetzt werden. Der Timer läuft dann nach ASC_Time_Up_Late Zeit, es wird aber in der Zeit zwischen ASC_Time_Up_Early und ASC_Time_Up_Late geschaut, ob die als Attribut im Moduldevice hinterlegte Down Wert von ASC_brightnessDriveUpDown erreicht wurde. Wenn ja, wird der Rollladen hoch gefahren (default: astro)
  • @@ -1169,45 +1169,45 @@ __END__
  • ASC_SlatPosCmd_SlatDevice - Angaben zu einem Slat (Lamellen) CMD und - sofern diese Lamellen über ein anderes Device gesteuert werden - zum Slat Device. Beispiele: attr ROLLO ASC_SlatPosCmd_SlatDevice slatPct oder attr ROLLO ASC_SlatPosCmd_SlatDevice dim:ROLLOSLATDEVICE. Die Angabe des Devices ist nur erforderlich, wenn zur Steuerung der Lamellen ein anderes Device verwendet wird. Damit das ganze dann auch greift, muss in den 6 Positionsangaben ASC_Open_Pos, ASC_Closed_Pos, ASC_Ventilate_Pos, ASC_ComfortOpen_Pos, ASC_Shading_Pos und ASC_Sleep_Pos ein weiterer Parameter für die Lamellenstellung mit angegeben werden.
  • -
  • ASC_CommandTemplate - FHEM-Kommando(s) oder Perl-Anweisung (in geschweiften Klammern unter Beachtung der üblichen Regeln für das escapen von Semicolons etc.).
    - Dieses Attribut übersteuert das sonst intern ermittelte Fahrkommando und ist für seltene und spezielle Fälle gedacht. In der Regel ist es nicht erforderlich, dieses Attribut zu setzen!
    - Die Variablen $name (der Name des Rollladen-Devices), $pos (die Zielposition des Fahrbefehls), $slatPos (die Zielposition des Fahrbefehls für eventuelle Lamellen) und $cause (die interne Benennung des Fahranlasses) werden durch die ermittelten Werte ersetzt, es muss selbst dafür gesorgt werden, dass eventuell unnötige Fahrbefehle aussortiert werden. +
  • ASC_CommandTemplate - FHEM-Kommando(s) oder Perl-Anweisung (in geschweiften Klammern unter Beachtung der üblichen Regeln für das escapen von Semicolons etc.).
    + Dieses Attribut übersteuert das sonst intern ermittelte Fahrkommando und ist für seltene und spezielle Fälle gedacht. In der Regel ist es nicht erforderlich, dieses Attribut zu setzen!
    + Die Variablen $name (der Name des Rollladen-Devices), $pos (die Zielposition des Fahrbefehls), $slatPos (die Zielposition des Fahrbefehls für eventuelle Lamellen) und $cause (die interne Benennung des Fahranlasses) werden durch die ermittelten Werte ersetzt, es muss selbst dafür gesorgt werden, dass eventuell unnötige Fahrbefehle aussortiert werden. Beispiele: - Hinweis: ASC_CommandTemplate ist für seltene und spezielle Fälle gedacht. In der Regel ist es nicht erforderlich, dieses Attribut zu setzen! + Hinweis: ASC_CommandTemplate ist für seltene und spezielle Fälle gedacht. In der Regel ist es nicht erforderlich, dieses Attribut zu setzen!
  • -

    +

    Beschreibung der AutoShuttersControl API
    Mit dem Aufruf der API Funktion und Übergabe der entsprechenden Parameter ist es möglich auf interne Daten zu zu greifen. -

    +

    Übersicht für das Rollladen-Device Getter - + - + - + @@ -1226,7 +1226,7 @@ __END__ - + @@ -1260,7 +1260,7 @@ __END__ - + @@ -1276,9 +1276,9 @@ __END__ - + - + @@ -1334,7 +1334,7 @@ __END__
    GetterErläuterung
    FreezeStatus1=soft, 2=Daytime, 3=hard
    FreezeStatus1=soft, 2=daytime, 3=hard
    AntiFreezePoskonfigurierte Position beim AntiFreeze Status
    AntiFreezePosAssignmentkonfigurierte Lamellen Position bei der AntiFreeze Position
    AntiFreezeaktuelle Konfiguration für AntiFreeze
    ShuttersPlaceaktuelle Konfiguration an welchem Platz sich das Rollo befindet, Fenster oder Terrasse
    SlatPosCmdwelcher PosCmd ist aktuell für den Lamellen Befehl konfiguriert
    SlatDevicewelches Device aktuell für die Lamellen Steuerung konfiguriert ist
    PrivacyUpTimePrivacy Zeit in Sekunden zum fahren in die Privacy Pos vor dem vollen öffnen
    PrivacyUpTimePrivacy Zeit in Sekunden zum fahren in die Privacy Pos vor dem vollen Öffnen
    PrivacyUpBrightnessValPrivacy Brightness Wert zum fahren in die Privacy Pos
    PrivacyUpPosPosition für die Privacy Up Fahrt
    PrivacyUpPositionAssignmentPosition für die Lamellenfahrt von Privacy Up
    PrivacyDownTimePrivacy Zeit in Sekunden zum fahren in die Privacy Pos vor dem vollen schließ
    PrivacyDownTimePrivacy Zeit in Sekunden zum fahren in die Privacy Pos vor dem vollen schließen
    PrivacyDownBrightnessValPrivacy Brightness Wert zum fahren in die Privacy Pos
    PrivacyDownPosPosition für die Privacy Down Fahrt
    PrivacyDownPositionAssignmentPosition für die Lamellenfahrt von Privacy Down
    ShadingMaxElevationüber welchem Elevationwert endet die Beschattung
    ShadingStateChangeSunnyüber welchem Brightnesswert beginnt die Beschattung
    ShadingStateChangeCloudyunter welchem Brightnesswert endet die Beschattung
    ShadingWaitingPeriodnach welcher Wartezeit werden Beschattungsrelevante Sensorwerte wieder beachtet und die Beschattungsroutine abgearbeitet
    ShadingWaitingPeriodnach welcher Wartezeit werden beschattungsrelevante Sensorwerte wieder beachtet und die Beschattungsroutine abgearbeitet
    ExternalTriggerDevicekonfiguriertes Triggerdevice
    ExternalTriggerReadingkofiguriertes Triggerdevice Reading
    ExternalTriggerValueActiveWert mit welchen der externe Trigger Prozess ausgel&uoml;st werden soll.
    RoommatesStatusRoommates Status unter Berücksichtigung aller Roommates und dessen Status
    RoommatesLastStatusRoommates letzter Status unter Berücksichtigung aller Roommates und dessen letzten Status
    WindPosRollo Position bei Windtrigger
    WindMaxWert über dem die Windprotection aktiviert werden soll
    WindMaxWert über dem die Windprotection aktiviert werden soll
    WindMinWert unter dem die Windprotection aufgehoben werden soll
    WindProtectionWindprotection soll aktiv sein oder nicht
    WindProtectionStatusaktueller Status der Wind Protection „protected“ oder „unprotected“
    AutoAstroModeEveningHorizonHORIZON Wert Abends
    Upaktueller Wert für Morgenfahrten
    Downaktueller Wert für Abendfahrten
    TimeUpEarlyaktueller Wert für frühste Morgenfahrt
    TimeUpEarlyaktueller Wert für früheste Morgenfahrt
    TimeUpLateaktueller Wert für späteste Morgenfahrt
    TimeDownEarlyaktueller Wert für frühste Abendfahrt
    TimeDownEarlyaktueller Wert für früheste Abendfahrt
    TimeDownLateaktueller Wert für späteste Abendfahrt
    TimeUpWeHolidayaktueller Wert für Wochenende und Feiertags Morgenfahrten
    BrightnessMinVal
    OutTempaktuelle Außentemperatur sofern ein Sensor definiert ist, wenn nicht kommt -100 als Wert zurück
    ShadingBetweenTheTimeKonfiguration für die Zeit der Beschattung
    -

    +

    Übersicht für das Rollladen-Device mit Parameterübergabe Getter