2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-21 20:06:18 +00:00

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
This commit is contained in:
LeonGaultier 2019-05-20 12:41:53 +00:00
parent 62ee08747e
commit 0455e651b9
2 changed files with 72 additions and 10 deletions

View File

@ -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

View File

@ -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 {
<li><strong>ASC_WindowRec_subType</strong> - Typ des verwendeten Fensterkontaktes: twostate (optisch oder magnetisch) oder threestate (Drehgriffkontakt) (default: twostate)</li>
</ul>
</ul>
</p>
<strong><u>Beschreibung der AutoShuttersControl API</u></strong>
</br>Mit dem Aufruf der API Funktion und &Uuml;bergabe der entsprechenden Parameter ist es m&ouml;glich auf interne Daten zu zu greifen.
</p>
<u>&Uuml;bersicht f&uuml;r das Rolllo Device</u>
<ul>
<code>ascAPIget('Getter','ROLLODEVICENAME')</code><br>
</ul>
<table border="1">
<th>Getter</th><th>Erl&auml;uterung</th>
<tr><td>FreezeStatus</td><td>1=soft, 2=Daytime, 3=hard</td></tr>
<tr><td>NoOffset</td><td>Wurde die Behandlung von Offset deaktiviert (Beispiel bei Fahrten &uuml;ber Fensterevents)</td></tr>
<tr><td>LastDrive</td><td>Grund des letzten Fahrens</td></tr>
<tr><td>LastPos</td><td>die letzte Position des Rolllos</td></tr>
<tr><td>LastPosTimestamp</td><td>Timestamp der letzten festgestellten Position</td></tr>
<tr><td>LastManPos</td><td>Position der letzten manuellen Fahrt</td></tr>
<tr><td>LastManPosTimestamp</td><td>Timestamp der letzten manuellen Position</td></tr>
<tr><td>SunsetUnixTime</td><td>berechnete Unixzeit f&uuml;r Abends (Sonnenuntergang)</td></tr>
<tr><td>Sunset</td><td>1=Abendfahrt wurde durchgef&uuml;hrt, 0=noch keine Abendfahrt durchgef&uuml;hrt</td></tr>
<tr><td>SunriseUnixTime</td><td>berechnete Unixzeit f&uuml;r Morgens (Sonnenaufgang)</td></tr>
<tr><td>Sunrise</td><td>1=Morgenfahrt wurde durchgef&uuml;hrt, 0=noch keine Morgenfahrt durchgef&uuml;hrt</td></tr>
<tr><td>RoommatesStatus</td><td>aktueller Status der/des Roommate/s f&uuml;r das Rolllo</td></tr>
<tr><td>RoommatesLastStatus</td><td>letzter Status der/des Roommate/s f&uuml;r das Rolllo</td></tr>
<tr><td>ShadingStatus</td><td>Ausgabe des aktuellen Shading Status, in, out, in reserved, out reserved</td></tr>
<tr><td>ShadingStatusTimestamp</td><td>Timestamp des letzten Beschattungsstatus</td></tr>
<tr><td>IfInShading</td><td>Befindet sich das Rolllo, in Abh&auml;ngigkeit des Shading Mode, in der Beschattung</td></tr>
<tr><td>WindProtectionStatus</td><td>aktueller Status der Wind Protection protection oder unprotection</td></tr>
<tr><td>RainProtectionStatus</td><td>aktueller Status der Regen Protection protection oder unprotection</td></tr>
<tr><td>DelayCmd</td><td>letzter Fahrbefehl welcher in die Warteschlange kam. Grund z.B. Partymodus.</td></tr>
<tr><td>Status</td><td>Position des Rolllos</td></tr>
<tr><td>ASCenable</td><td>Abfrage ob f&uuml;r das Rolllo die ASC Steuerung aktiv ist.</td></tr>
<table/>
</p>
<u>&Uuml;bersicht f&uuml;r das ASC Device</u>
<ul>
<code>ascAPIget('Getter')</code><br>
</ul>
<table border="1">
<th>Getter</th><th>Erl&auml;uterung</th>
<tr><td>outTemp </td><td>aktuelle Außentemperatur sofern Sensor definiert</td></tr>
<tr><td>ResidentsStatus</td><td>aktueller Status des Residents Devices</td></tr>
<tr><td>ResidentsLastStatus</td><td>letzter Status des Residents Devices</td></tr>
<tr><td>Azimuth</td><td>Azimut Wert</td></tr>
<tr><td>Elevation</td><td>Elevation Wert</td></tr>
<tr><td>ASCenable</td><td>ist die ASC Steuerung global aktiv?</td></tr>
<table/>
</ul>
=end html_DE