From 0455e651b94aa9a1de1f4ae6f23b13ec8641e4db Mon Sep 17 00:00:00 2001 From: LeonGaultier Date: Mon, 20 May 2019 12:41:53 +0000 Subject: [PATCH] 73_AutoShuttersControl: add ASC API for get ASC intern values git-svn-id: https://svn.fhem.de/fhem/trunk@19420 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 1 + fhem/FHEM/73_AutoShuttersControl.pm | 81 +++++++++++++++++++++++++---- 2 files changed, 72 insertions(+), 10 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index 760ff30bd..3601c9db2 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # 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: add ASC API for get ASC intern values - feature: 73_AutoShuttersControl: add set commands and readings for aktivate shadding, add drive in shading position then come home and shading mode is home and asc is in shading diff --git a/fhem/FHEM/73_AutoShuttersControl.pm b/fhem/FHEM/73_AutoShuttersControl.pm index 0e30e3208..d1ca03cd1 100644 --- a/fhem/FHEM/73_AutoShuttersControl.pm +++ b/fhem/FHEM/73_AutoShuttersControl.pm @@ -45,7 +45,7 @@ use strict; use warnings; use FHEM::Meta; -my $version = '0.6.11'; +my $version = '0.6.12'; sub AutoShuttersControl_Initialize($) { my ($hash) = @_; @@ -96,6 +96,12 @@ sub AutoShuttersControl_Initialize($) { return FHEM::Meta::InitMod( __FILE__, $hash ); } +sub ascAPIget($;$) { + my ( $getCommand, $shutterDev ) = @_; + + return FHEM::AutoShuttersControl::ascAPIget( $getCommand, $shutterDev ); +} + ## unserer packagename package FHEM::AutoShuttersControl; @@ -225,6 +231,19 @@ my %posSetCmds = ( my $shutters = new ASC_Shutters(); my $ascDev = new ASC_Dev(); +sub ascAPIget($;$) { + my ( $getCommand, $shutterDev ) = @_; + + my $getter = 'get' . $getCommand; + if ( defined($shutterDev) and $shutterDev ) { + $shutters->setShuttersDev($shutterDev); + return $shutters->$getter; + } + else { + return $ascDev->$getter; + } +} + sub Define($$) { my ( $hash, $def ) = @_; my @a = split( '[ \t][ \t]*', $def ); @@ -248,6 +267,8 @@ sub Define($$) { ; # eine Ein Eindeutige ID für interne FHEM Belange / nicht weiter wichtig $hash->{NOTIFYDEV} = 'global,' . $name; # Liste aller Devices auf deren Events gehört werden sollen + #$hash->{shutters} = $shutters; + #$hash->{ascDev} = $ascDev; $ascDev->setName($name); readingsSingleUpdate( @@ -932,13 +953,7 @@ sub EventProcessingWindowRec($@) { elsif ( $shutters->getStatus != $shutters->getOpenPos ) { $shutters->setLastDrive('window closed at day'); $shutters->setNoOffset(1); - $shutters->setDriveCmd( - ( - $shutters->getLastPos != $shutters->getClosedPos - ? $shutters->getLastPos - : $shutters->getOpenPos - ) - ); + $shutters->setDriveCmd( $shutters->getOpenPos ); } } @@ -1866,13 +1881,13 @@ sub ShadingProcessing($@) { . ' - Alle Werte für die weitere Verarbeitung sind korrekt vorhanden und es wird nun mit der Beschattungsverarbeitung begonnen' ); - # minimalen und maximalen Winkel des Fensters bestimmen. wenn die aktuelle Sonnenposition z.B. bei 205° läge und der Wert für angleMin/Max 85° wäre, dann würden zwischen 120° und 290° beschattet. +# minimalen und maximalen Winkel des Fensters bestimmen. wenn die aktuelle Sonnenposition z.B. bei 205° läge und der Wert für angleMin/Max 85° wäre, dann würden zwischen 120° und 290° beschattet. my $winPosMin = $winPos - $angleMinus; my $winPosMax = $winPos + $anglePlus; if ( ( - $outTemp < $shutters->getShadingMinOutsideTemperature - 3 + $outTemp < $shutters->getShadingMinOutsideTemperature - 3 or not IsDay($shuttersDev) or $azimuth < $winPosMin or $azimuth > $winPosMax @@ -5235,6 +5250,52 @@ sub getblockAscDrivesAfterManual {
  • ASC_WindowRec_subType - Typ des verwendeten Fensterkontaktes: twostate (optisch oder magnetisch) oder threestate (Drehgriffkontakt) (default: twostate)
  • +

    + 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 Rolllo Device + + + + + + + + + + + + + + + + + + + + + + + + +
    GetterErläuterung
    FreezeStatus1=soft, 2=Daytime, 3=hard
    NoOffsetWurde die Behandlung von Offset deaktiviert (Beispiel bei Fahrten über Fensterevents)
    LastDriveGrund des letzten Fahrens
    LastPosdie letzte Position des Rolllos
    LastPosTimestampTimestamp der letzten festgestellten Position
    LastManPosPosition der letzten manuellen Fahrt
    LastManPosTimestampTimestamp der letzten manuellen Position
    SunsetUnixTimeberechnete Unixzeit für Abends (Sonnenuntergang)
    Sunset1=Abendfahrt wurde durchgeführt, 0=noch keine Abendfahrt durchgeführt
    SunriseUnixTimeberechnete Unixzeit für Morgens (Sonnenaufgang)
    Sunrise1=Morgenfahrt wurde durchgeführt, 0=noch keine Morgenfahrt durchgeführt
    RoommatesStatusaktueller Status der/des Roommate/s für das Rolllo
    RoommatesLastStatusletzter Status der/des Roommate/s für das Rolllo
    ShadingStatusAusgabe des aktuellen Shading Status, „in“, „out“, „in reserved“, „out reserved“
    ShadingStatusTimestampTimestamp des letzten Beschattungsstatus
    IfInShadingBefindet sich das Rolllo, in Abhängigkeit des Shading Mode, in der Beschattung
    WindProtectionStatusaktueller Status der Wind Protection „protection“ oder „unprotection“
    RainProtectionStatusaktueller Status der Regen Protection „protection“ oder „unprotection“
    DelayCmdletzter Fahrbefehl welcher in die Warteschlange kam. Grund z.B. Partymodus.
    StatusPosition des Rolllos
    ASCenableAbfrage ob für das Rolllo die ASC Steuerung aktiv ist.
    +

    + Übersicht für das ASC Device + +
    + + + + + + + +
    GetterErläuterung
    outTemp aktuelle Außentemperatur sofern Sensor definiert
    ResidentsStatusaktueller Status des Residents Devices
    ResidentsLastStatusletzter Status des Residents Devices
    AzimuthAzimut Wert
    ElevationElevation Wert
    ASCenableist die ASC Steuerung global aktiv?
    =end html_DE