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
+
+ ascAPIget('Getter','ROLLODEVICENAME')
+
+
+ Getter | Erläuterung |
+ FreezeStatus | 1=soft, 2=Daytime, 3=hard |
+ NoOffset | Wurde die Behandlung von Offset deaktiviert (Beispiel bei Fahrten über Fensterevents) |
+ LastDrive | Grund des letzten Fahrens |
+ LastPos | die letzte Position des Rolllos |
+ LastPosTimestamp | Timestamp der letzten festgestellten Position |
+ LastManPos | Position der letzten manuellen Fahrt |
+ LastManPosTimestamp | Timestamp der letzten manuellen Position |
+ SunsetUnixTime | berechnete Unixzeit für Abends (Sonnenuntergang) |
+ Sunset | 1=Abendfahrt wurde durchgeführt, 0=noch keine Abendfahrt durchgeführt |
+ SunriseUnixTime | berechnete Unixzeit für Morgens (Sonnenaufgang) |
+ Sunrise | 1=Morgenfahrt wurde durchgeführt, 0=noch keine Morgenfahrt durchgeführt |
+ RoommatesStatus | aktueller Status der/des Roommate/s für das Rolllo |
+ RoommatesLastStatus | letzter Status der/des Roommate/s für das Rolllo |
+ ShadingStatus | Ausgabe des aktuellen Shading Status, „in“, „out“, „in reserved“, „out reserved“ |
+ ShadingStatusTimestamp | Timestamp des letzten Beschattungsstatus |
+ IfInShading | Befindet sich das Rolllo, in Abhängigkeit des Shading Mode, in der Beschattung |
+ WindProtectionStatus | aktueller Status der Wind Protection „protection“ oder „unprotection“ |
+ RainProtectionStatus | aktueller Status der Regen Protection „protection“ oder „unprotection“ |
+ DelayCmd | letzter Fahrbefehl welcher in die Warteschlange kam. Grund z.B. Partymodus. |
+ Status | Position des Rolllos |
+ ASCenable | Abfrage ob für das Rolllo die ASC Steuerung aktiv ist. |
+
+
+ Übersicht für das ASC Device
+
+
+ Getter | Erläuterung |
+ outTemp | aktuelle Außentemperatur sofern Sensor definiert |
+ ResidentsStatus | aktueller Status des Residents Devices |
+ ResidentsLastStatus | letzter Status des Residents Devices |
+ Azimuth | Azimut Wert |
+ Elevation | Elevation Wert |
+ ASCenable | ist die ASC Steuerung global aktiv? |
+
=end html_DE