|
From: <kru...@us...> - 2014-05-29 05:22:35
|
Revision: 2194
http://sourceforge.net/p/openautomation/code/2194
Author: krumboeck
Date: 2014-05-29 05:22:31 +0000 (Thu, 29 May 2014)
Log Message:
-----------
v0.9 of RollladenAutomatik plugin
Modified Paths:
--------------
wiregate/plugin/generic/RollladenAutomatik.pl
wiregate/plugin/generic/conf.d/RollladenAutomatik.conf_sample
Modified: wiregate/plugin/generic/RollladenAutomatik.pl
===================================================================
--- wiregate/plugin/generic/RollladenAutomatik.pl 2014-05-25 09:10:06 UTC (rev 2193)
+++ wiregate/plugin/generic/RollladenAutomatik.pl 2014-05-29 05:22:31 UTC (rev 2194)
@@ -1,6 +1,6 @@
######################################################################################
# Plugin RollladenAutomatik
-# V0.8 2014-05-24
+# V0.9 2014-05-29
# Lizenz: GPLv2
# Autoren: kleinklausi (http://knx-user-forum.de/members/kleinklausi.html)
# krumboeck (http://knx-user-forum.de/members/krumboeck.html)
@@ -26,6 +26,7 @@
# - Speichern der Rolladenposition und aktuellen Zuständen (krumboeck)
# - Fahren auf Positionen welche im Aktor (z.B. Siemens 523/03) gespeichert sind (krumboeck)
# - Überprüfen von Positionen vor Sonnenauf bzw. -untergang (krumboeck)
+# - Nach Aufhebung der Sperre auf Position fahren (krumboeck)
#
# TODO: Was teilweise integriert ist aber noch nicht komplett ist:
# - Bei Fensterdefinition auch Elevation oben bzw. unten angeben
@@ -149,16 +150,20 @@
# Los gehts. Jeden Rolladen/Fenster/Raum abarbeiten.
foreach my $element (@AlleRolllaeden) {
- if (defined $element->{istVorlage} && $element->{istVorlage}) {
+ if (defined $element->{istVorlage} && $element->{istVorlage}) {
next;
}
my $rolladen = berechneRolladenParameter($element, 0);
- # Falls gesperrt, mit nächstem Rollladen fortfahren
- if (defined $rolladen->{GAsperre}
- && knx_read($rolladen->{GAsperre}, 0, 1) == 1) {
- next;
+ if (defined $rolladen->{GAsperre}) {
+ $plugin_subscribe{$rolladen->{GAsperre}}{$plugname} = 1;
+ # Falls gesperrt, mit nächstem Rollladen fortfahren
+ if (knx_read($rolladen->{GAsperre}, 0, 1) == 1) {
+ speichereRolladenParameter($rolladen, "locked", 1);
+ plugin_log($plugname,"Name: " . $rolladen->{name} . "; Sperre für Rolladen wurde empfangen");
+ next;
+ }
}
# Ermittle gewünschte Position und Grund des Fahrens für den Rollladen
@@ -203,6 +208,16 @@
my $testAbendDaemmerung = ($elevation < deg2rad($daemmerung) && $lastElevation > deg2rad($daemmerung)) || 0;
my $testMorgenDaemmerung = ($elevation > deg2rad($daemmerung) && $lastElevation < deg2rad($daemmerung)) || 0;
+ my $testLockChanged = 0;
+ if (defined $rolladen->{GAsperre}) {
+ my $parameterLocked = ladeRolladenParameter($rolladen, "locked");
+ if (defined $parameterLocked && $parameterLocked && knx_read($rolladen->{GAsperre}, 0, 1) == 0) {
+ speichereRolladenParameter($rolladen, "locked", 0);
+ if (defined $rolladen->{pruefePositionNachSperre} && $rolladen->{pruefePositionNachSperre}) {
+ $testLockChanged = 1;
+ }
+ }
+ }
my $newPositionValue = $newPosition;
if ($newPosition =~ m/((\d+|\*));Position:(\d+)/) {
@@ -215,6 +230,7 @@
if ((defined $rolladen->{pruefePositionSonnenAufUnter} && $rolladen->{pruefePositionSonnenAufUnter} == 1
&& ($testAbendDaemmerung || $testMorgenDaemmerung))
+ || $testLockChanged
|| (($lastPosition ne $newPosition) && ($lastPositionValue eq "*"))) {
if (defined $rolladen->{GAistPos}) {
$lastPositionValue = knx_read($rolladen->{GAistPos}, 0, 5.001);
@@ -222,6 +238,8 @@
if (defined $rolladen->{debug} && $rolladen->{debug}) {
plugin_log($plugname,"Name: " . $rolladen->{name} . "; Rollladen meldete Position: " . $lastPosition);
}
+ } elsif ($testLockChanged) {
+ $lastPositionValue = -1;
} else {
plugin_log($plugname,"Name: " . $rolladen->{name} . "; Konfiguration benötigt GAistPos für diesen Rollladen");
}
Modified: wiregate/plugin/generic/conf.d/RollladenAutomatik.conf_sample
===================================================================
--- wiregate/plugin/generic/conf.d/RollladenAutomatik.conf_sample 2014-05-25 09:10:06 UTC (rev 2193)
+++ wiregate/plugin/generic/conf.d/RollladenAutomatik.conf_sample 2014-05-29 05:22:31 UTC (rev 2194)
@@ -97,6 +97,8 @@
# pruefePositionSonnenAufUnter => 1
# Debugging für Rolladen einschalten
# debug => 1
+# Prüft die Position nach Aufhebung einer Sperre (boolean)
+# pruefePositionNachSperre => 1
# Format für im Aktor gespeicherte Positionen:
# "44;Position:0" bezeichnet die im Aktor gespeicherte Position 0. Der Wert 44 dient lediglich zur Kontrolle.
@@ -105,8 +107,9 @@
push @AlleRolllaeden, { name => "default", istVorlage => 1, wertZuBesch => 1, wertAufBesch => 0,
wertZuNacht => 1, wertAufNacht => 0, sonnenAufUnter => 1, raumSollTemp => 23,
tempGesteuert => 1, tempHysterese => 0.5, maxWindGeschw => 80,
- windGeschwHysterese => 5, maxBewoelkung => 75, bewoelkungHysterese => 5,
- minAussenTemp => -15, aussenTempHysterese => 2, wertAufSchutz => 0, wertZuSchutz => 1 };
+ windGeschwHysterese => 5, maxBewoelkung => 70, bewoelkungHysterese => 5,
+ minAussenTemp => -15, aussenTempHysterese => 2, wertAufSchutz => 0, wertZuSchutz => 1,
+ pruefePositionSonnenAufUnter => 1, pruefePositionNachSperre => 1 };
push @AlleRolllaeden, { name => "Wohnzimmer", vorlage => "default", winkel1 => 66, winkel2 => 180,
GAraumIstTemp => "2/3/0", GAfahren => "3/1/0" };
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|