|
From: <sw...@us...> - 2011-07-03 13:53:39
|
Revision: 377
http://openautomation.svn.sourceforge.net/openautomation/?rev=377&view=rev
Author: swiss1
Date: 2011-07-03 13:53:33 +0000 (Sun, 03 Jul 2011)
Log Message:
-----------
Plugin zum Schalten beliebig vieler GA's zu bestimmten Wochentage und Zeiten. Version 0.1
Added Paths:
-----------
wiregate/plugin/generic/schaltuhr.pl
Added: wiregate/plugin/generic/schaltuhr.pl
===================================================================
--- wiregate/plugin/generic/schaltuhr.pl (rev 0)
+++ wiregate/plugin/generic/schaltuhr.pl 2011-07-03 13:53:33 UTC (rev 377)
@@ -0,0 +1,51 @@
+# Plugin zum Zeit abh\xE4ngigem schaten von beliebig vielen GA's (Schaltuhr)
+# Version 0.1 03.07.2011
+# Copyright: swiss (http://knx-user-forum.de/members/swiss.html)
+# License: GPL (v2)
+# Aufbau m\xF6glichst so, dass man unterhalb der Einstellungen nichts ver\xE4ndern muss!
+
+
+####################
+###Einstellungen:###
+####################
+my @Schaltzeiten;
+
+#Pro Schaltpunkt einfach den unten stehenden Eintrag kopieren und anpassen.
+
+push @Schaltzeiten, { name => "bew\xE4sserung_ein", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 15, Minuten => 45, Befehl => 1, ga => '2/0/0' };
+
+push @Schaltzeiten, { name => "bew\xE4sserung_aus", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 15, Minuten => 46, Befehl => 0, ga => '2/0/0' };
+
+######################
+##ENDE Einstellungen##
+######################
+
+use POSIX;
+
+# Eigenen Aufruf-Zyklus auf 30sek. setzen
+$plugin_info{$plugname.'_cycle'} = 30;
+
+#Hier wird ein Array angelegt, um die Wochentagsnummer von localtime zu \xFCbersetzen
+my @Wochentag = ('sonntag', 'montag', 'dienstag', 'mittwoch', 'donnerstag', 'freitag', 'samstag');
+
+my $sec;
+my $min;
+my $hour;
+my $mday;
+my $mon;
+my $year;
+my $wday;
+my $yday;
+my $isdst;
+
+
+foreach my $element (@Schaltzeiten) {
+
+($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
+ $year += 1900;
+
+ if ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min) {
+ knx_write($element->{ga},$element->{Befehl},1);
+ }
+next;
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sw...@us...> - 2011-07-03 14:04:21
|
Revision: 378
http://openautomation.svn.sourceforge.net/openautomation/?rev=378&view=rev
Author: swiss1
Date: 2011-07-03 14:04:15 +0000 (Sun, 03 Jul 2011)
Log Message:
-----------
Das einstellen der DPT wurde hinzugef?\195?\188gt. Damit k?\195?\182nnen jetzt auch Werte zeitabh?\195?\164ngig gesendet werden. Version 0.2
Modified Paths:
--------------
wiregate/plugin/generic/schaltuhr.pl
Modified: wiregate/plugin/generic/schaltuhr.pl
===================================================================
--- wiregate/plugin/generic/schaltuhr.pl 2011-07-03 13:53:33 UTC (rev 377)
+++ wiregate/plugin/generic/schaltuhr.pl 2011-07-03 14:04:15 UTC (rev 378)
@@ -1,5 +1,5 @@
-# Plugin zum Zeit abh\xE4ngigem schaten von beliebig vielen GA's (Schaltuhr)
-# Version 0.1 03.07.2011
+# Plugin zum Zeit abh\xE4ngigem schaten von GA's (Schaltuhr)
+# Version 0.2 03.07.2011
# Copyright: swiss (http://knx-user-forum.de/members/swiss.html)
# License: GPL (v2)
# Aufbau m\xF6glichst so, dass man unterhalb der Einstellungen nichts ver\xE4ndern muss!
@@ -12,9 +12,9 @@
#Pro Schaltpunkt einfach den unten stehenden Eintrag kopieren und anpassen.
-push @Schaltzeiten, { name => "bew\xE4sserung_ein", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 15, Minuten => 45, Befehl => 1, ga => '2/0/0' };
+push @Schaltzeiten, { name => "bew\xE4sserung_ein", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 15, Minuten => 45, Wert => 1, DPT => 1, ga => '2/0/0' };
-push @Schaltzeiten, { name => "bew\xE4sserung_aus", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 15, Minuten => 46, Befehl => 0, ga => '2/0/0' };
+push @Schaltzeiten, { name => "bew\xE4sserung_aus", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 15, Minuten => 46, Wert => 0, DPT => 1, ga => '2/0/0' };
######################
##ENDE Einstellungen##
@@ -45,7 +45,7 @@
$year += 1900;
if ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min) {
- knx_write($element->{ga},$element->{Befehl},1);
+ knx_write($element->{ga},$element->{Wert},$element->{DPT});
}
next;
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sw...@us...> - 2011-07-03 14:41:41
|
Revision: 379
http://openautomation.svn.sourceforge.net/openautomation/?rev=379&view=rev
Author: swiss1
Date: 2011-07-03 14:41:35 +0000 (Sun, 03 Jul 2011)
Log Message:
-----------
In der neusten Version sind nun auch Schaltpunkte in bestimmten Monaten oder Kalenderwochen m?\195?\182glich. Version 0.3 BETA
Modified Paths:
--------------
wiregate/plugin/generic/schaltuhr.pl
Modified: wiregate/plugin/generic/schaltuhr.pl
===================================================================
--- wiregate/plugin/generic/schaltuhr.pl 2011-07-03 14:04:15 UTC (rev 378)
+++ wiregate/plugin/generic/schaltuhr.pl 2011-07-03 14:41:35 UTC (rev 379)
@@ -1,5 +1,5 @@
# Plugin zum Zeit abh\xE4ngigem schaten von GA's (Schaltuhr)
-# Version 0.2 03.07.2011
+# Version 0.3 BETA 03.07.2011
# Copyright: swiss (http://knx-user-forum.de/members/swiss.html)
# License: GPL (v2)
# Aufbau m\xF6glichst so, dass man unterhalb der Einstellungen nichts ver\xE4ndern muss!
@@ -12,9 +12,9 @@
#Pro Schaltpunkt einfach den unten stehenden Eintrag kopieren und anpassen.
-push @Schaltzeiten, { name => "bew\xE4sserung_ein", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 15, Minuten => 45, Wert => 1, DPT => 1, ga => '2/0/0' };
+push @Schaltzeiten, { name => "bew\xE4sserung_ein", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 15, Minuten => 45, Wert => 1, DPT => 1, ga => '2/0/0', KW => '', Monat => '' };
-push @Schaltzeiten, { name => "bew\xE4sserung_aus", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 15, Minuten => 46, Wert => 0, DPT => 1, ga => '2/0/0' };
+push @Schaltzeiten, { name => "bew\xE4sserung_aus", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 15, Minuten => 46, Wert => 0, DPT => 1, ga => '2/0/0', KW => '', Monat => '' };
######################
##ENDE Einstellungen##
@@ -41,11 +41,26 @@
foreach my $element (@Schaltzeiten) {
-($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
+ ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year += 1900;
- if ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min) {
+ if ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} ne '') {
+ if ($element->{KW} == $yday) {
+ knx_write($element->{ga},$element->{Wert},$element->{DPT});
+ next;
+ } else {
+ next;
+ }
+ } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{Monat} ne '') {
+ if ($element->{Monat} == $mon) {
+ knx_write($element->{ga},$element->{Wert},$element->{DPT});
+ next;
+ } else {
+ next;
+ }
+ } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} eq '' && $element->{Monat} eq '') {
knx_write($element->{ga},$element->{Wert},$element->{DPT});
- }
+ next;
+ }
next;
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sw...@us...> - 2011-07-03 18:35:40
|
Revision: 380
http://openautomation.svn.sourceforge.net/openautomation/?rev=380&view=rev
Author: swiss1
Date: 2011-07-03 18:35:33 +0000 (Sun, 03 Jul 2011)
Log Message:
-----------
Es wurde die Berechnung der Kalenderwoche erg?\195?\164nzt, da diese nicht ?\195?\188ber localtime ausgegeben wird. Das Plugin wurde gr?\195?\188ndlich auf Funktion getestet. Version 0.4 BETA
Modified Paths:
--------------
wiregate/plugin/generic/schaltuhr.pl
Modified: wiregate/plugin/generic/schaltuhr.pl
===================================================================
--- wiregate/plugin/generic/schaltuhr.pl 2011-07-03 14:41:35 UTC (rev 379)
+++ wiregate/plugin/generic/schaltuhr.pl 2011-07-03 18:35:33 UTC (rev 380)
@@ -1,5 +1,5 @@
# Plugin zum Zeit abh\xE4ngigem schaten von GA's (Schaltuhr)
-# Version 0.3 BETA 03.07.2011
+# Version 0.4 BETA 03.07.2011
# Copyright: swiss (http://knx-user-forum.de/members/swiss.html)
# License: GPL (v2)
# Aufbau m\xF6glichst so, dass man unterhalb der Einstellungen nichts ver\xE4ndern muss!
@@ -12,40 +12,44 @@
#Pro Schaltpunkt einfach den unten stehenden Eintrag kopieren und anpassen.
-push @Schaltzeiten, { name => "bew\xE4sserung_ein", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 15, Minuten => 45, Wert => 1, DPT => 1, ga => '2/0/0', KW => '', Monat => '' };
+push @Schaltzeiten, { name => "bew\xE4sserung_ein", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 20, Minuten => 30, Wert => 1, DPT => 1, ga => '2/0/0', KW => '', Monat => '' };
-push @Schaltzeiten, { name => "bew\xE4sserung_aus", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 15, Minuten => 46, Wert => 0, DPT => 1, ga => '2/0/0', KW => '', Monat => '' };
+push @Schaltzeiten, { name => "bew\xE4sserung_aus", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 20, Minuten => 31, Wert => 0, DPT => 1, ga => '2/0/0', KW => '', Monat => '' };
######################
##ENDE Einstellungen##
######################
use POSIX;
+use Time::Local;
-# Eigenen Aufruf-Zyklus auf 30sek. setzen
-$plugin_info{$plugname.'_cycle'} = 30;
+# Eigenen Aufruf-Zyklus auf 20sek. setzen
+$plugin_info{$plugname.'_cycle'} = 20;
#Hier wird ein Array angelegt, um die Wochentagsnummer von localtime zu \xFCbersetzen
my @Wochentag = ('sonntag', 'montag', 'dienstag', 'mittwoch', 'donnerstag', 'freitag', 'samstag');
-my $sec;
-my $min;
-my $hour;
-my $mday;
-my $mon;
-my $year;
-my $wday;
-my $yday;
+my $sec; #Sekunde
+my $min; # Minute
+my $hour; #Stunde
+my $mday; #Monatstag
+my $mon; #Monatsnummer
+my $year; #Jahr
+my $wday; #Wochentag 0-6
+my $yday; #Tag ab 01.01.xxxx
my $isdst;
+($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
+$year += 1900;
+$mon += 1;
+my $kw = getWeekNumber($year, $mon, $mday);
+$plugin_info{$plugname.'_debug'} = $kw;
+
foreach my $element (@Schaltzeiten) {
- ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
- $year += 1900;
-
if ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} ne '') {
- if ($element->{KW} == $yday) {
+ if ($element->{KW} == $kw) {
knx_write($element->{ga},$element->{Wert},$element->{DPT});
next;
} else {
@@ -63,4 +67,68 @@
next;
}
next;
+}
+
+sub getWeekNumber {
+my ($year, $month, $day) = @_;
+my $weekNumber = checkWeekNumber($year, $month, $day);
+# wenn Wochennummer gleich 0, dann ist das aktuelle Datum
+# in der Woche vor dem 4. Januar
+# also in der letzten Woche des letzten Jahres
+if ($weekNumber eq 0)
+{
+# Wochennummer des letzten Woche des letzten Jahres suchen
+$weekNumber = checkWeekNumber(($year - 1), 12, 31);
+
+# wenn die Wochennummer gr\xF6\xDFer als 52 ist
+# dann pr\xFCfen ob diese Wochennummer korrekt ist oder
+# sie bereits die erste Woche des aktuellen Jahres ist
+if ($weekNumber gt 52)
+{
+$weekNumber = checkWeekNumber($year, 1, 1);
+# wenn der 1. Januar des aktuellen Jahres in der Woche 0 liegt
+# dann ist es die Woche 53
+if ($weekNumber eq 0)
+{
+$weekNumber = 53;
+}
+}
+}
+# wenn die Wochennummer gr\xF6\xDFer als 52 ist
+# dann pr\xFCfen ob diese Wochennummer korrekt ist oder
+# sie bereits die erste Woche des n\xE4chsten Jahres ist
+elsif ($weekNumber gt 52)
+{
+$weekNumber = checkWeekNumber(($year + 1), 1, 1);
+# wenn der 1. Januar des n\xE4chsten Jahres in der Woche 0 liegt
+# dann ist es die Woche 53
+if ($weekNumber eq 0)
+{
+$weekNumber = 53;
+}
+}
+
+return ($weekNumber);
+}
+
+sub checkWeekNumber {
+my ($year, $month, $day) = @_;
+
+# 4. Januar als erste Woche erstellen
+my $firstDateTime = timelocal(0, 0, 12, 4, 0, $year);
+# Wochentag des 4. Januar ermitteln
+my $dayOfWeek = (localtime($firstDateTime))[6];
+$dayOfWeek = abs((($dayOfWeek + 6) % 7));
+# geh zu Wochenanfang (Montag) zur\xFCck
+$firstDateTime -= ($dayOfWeek * 3600 * 24);
+
+# aktuelles Datum erstellen
+my $currentDateTime = timelocal(0, 0, 14, $day, ($month - 1),$year);
+
+# Differenz in Tagen berechnen
+my $diffInDay = ($currentDateTime - $firstDateTime) / 3600 / 24;
+# Anzahl der Wochen zwischen aktuellem Datum und 4. Januar berechnen
+my $weekNumber = floor($diffInDay / 7) + 1;
+
+return ($weekNumber);
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sw...@us...> - 2011-07-03 19:17:33
|
Revision: 382
http://openautomation.svn.sourceforge.net/openautomation/?rev=382&view=rev
Author: swiss1
Date: 2011-07-03 19:17:27 +0000 (Sun, 03 Jul 2011)
Log Message:
-----------
Ein BUG im Plugin sorgte daf?\195?\188r, dass jeder Schaltbefehl 3 mal pro Minute ausgef?\195?\188hrt wurde. Das ist nun behoben. Es wird nurnoch gesendet wenn der Wert im Aktor nicht mit dem Wert des Schaltpunkes ?\195?\188berein stimmt. Version 0.5 BETA
Modified Paths:
--------------
wiregate/plugin/generic/schaltuhr.pl
Modified: wiregate/plugin/generic/schaltuhr.pl
===================================================================
--- wiregate/plugin/generic/schaltuhr.pl 2011-07-03 19:14:00 UTC (rev 381)
+++ wiregate/plugin/generic/schaltuhr.pl 2011-07-03 19:17:27 UTC (rev 382)
@@ -1,5 +1,5 @@
# Plugin zum Zeit abh\xE4ngigem schaten von GA's (Schaltuhr)
-# Version 0.4 BETA 03.07.2011
+# Version 0.5 BETA 03.07.2011
# Copyright: swiss (http://knx-user-forum.de/members/swiss.html)
# License: GPL (v2)
# Aufbau m\xF6glichst so, dass man unterhalb der Einstellungen nichts ver\xE4ndern muss!
@@ -12,9 +12,9 @@
#Pro Schaltpunkt einfach den unten stehenden Eintrag kopieren und anpassen.
-push @Schaltzeiten, { name => "bew\xE4sserung_ein", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 20, Minuten => 30, Wert => 1, DPT => 1, ga => '2/0/0', KW => '', Monat => '' };
+push @Schaltzeiten, { name => "bew\xE4sserung_ein", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 21, Minuten => 02, Wert => 1, DPT => 1, ga => '2/0/0', KW => '', Monat => '' };
-push @Schaltzeiten, { name => "bew\xE4sserung_aus", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 20, Minuten => 31, Wert => 0, DPT => 1, ga => '2/0/0', KW => '', Monat => '' };
+push @Schaltzeiten, { name => "bew\xE4sserung_aus", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 21, Minuten => 03, Wert => 0, DPT => 1, ga => '2/0/0', KW => '', Monat => '' };
######################
##ENDE Einstellungen##
@@ -44,27 +44,27 @@
$mon += 1;
my $kw = getWeekNumber($year, $mon, $mday);
-$plugin_info{$plugname.'_debug'} = $kw;
foreach my $element (@Schaltzeiten) {
-
- if ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} ne '') {
- if ($element->{KW} == $kw) {
+ if (knx_read($element->{ga},0,$element->{DPT}) ne $element->{Wert}) {
+ if ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} ne '') {
+ if ($element->{KW} == $kw) {
+ knx_write($element->{ga},$element->{Wert},$element->{DPT});
+ next;
+ } else {
+ next;
+ }
+ } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{Monat} ne '') {
+ if ($element->{Monat} == $mon) {
+ knx_write($element->{ga},$element->{Wert},$element->{DPT});
+ next;
+ } else {
+ next;
+ }
+ } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} eq '' && $element->{Monat} eq '') {
knx_write($element->{ga},$element->{Wert},$element->{DPT});
next;
- } else {
- next;
}
- } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{Monat} ne '') {
- if ($element->{Monat} == $mon) {
- knx_write($element->{ga},$element->{Wert},$element->{DPT});
- next;
- } else {
- next;
- }
- } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} eq '' && $element->{Monat} eq '') {
- knx_write($element->{ga},$element->{Wert},$element->{DPT});
- next;
}
next;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sw...@us...> - 2012-02-29 19:33:42
|
Revision: 716
http://openautomation.svn.sourceforge.net/openautomation/?rev=716&view=rev
Author: swiss1
Date: 2012-02-29 19:33:36 +0000 (Wed, 29 Feb 2012)
Log Message:
-----------
Astro Funktion by ZeitlerW integriert und auf Version 0.6 BETA aktualisiert
Modified Paths:
--------------
wiregate/plugin/generic/schaltuhr.pl
Modified: wiregate/plugin/generic/schaltuhr.pl
===================================================================
--- wiregate/plugin/generic/schaltuhr.pl 2012-02-25 18:43:35 UTC (rev 715)
+++ wiregate/plugin/generic/schaltuhr.pl 2012-02-29 19:33:36 UTC (rev 716)
@@ -1,27 +1,45 @@
-# Plugin zum Zeit abh\xE4ngigem schaten von GA's (Schaltuhr)
-# Version 0.5 BETA 03.07.2011
+# Plugin zum Zeit abh\xE4ngigem schalten von GA's (Schaltuhr)
+# Version 0.6 BETA 29.02.2012
# Copyright: swiss (http://knx-user-forum.de/members/swiss.html)
# License: GPL (v2)
# Aufbau m\xF6glichst so, dass man unterhalb der Einstellungen nichts ver\xE4ndern muss!
+# -Erweitert um Sonnenauf / - untergang von ZeitlerW (http://knx-user-forum.de/members/zeitlerw.html)
+# -Inspiriert von kleinklausi's Rolladen - Plugin
####################
###Einstellungen:###
####################
+
+# Die Standortdaten
+# Die Koordinaten des Hauses. Sehr einfach \xFCber http://www.getlatlon.com/ zu ermitteln.
+my ($lat, $lon) = (
+ 50.27816466477597, # Breitengrad in Grad
+ 11.64325475692749 # L\xE4ngengrad in Grad
+ );
+
+#Winkel f\xFCr Beginn der D\xE4mmerung
+# siehe auch: http://search.cpan.org/~rkhill/Astro-Sunrise-0.91/Sunrise.pm#DESCRIPTION
+my $winkel=-3;
my @Schaltzeiten;
+
#Pro Schaltpunkt einfach den unten stehenden Eintrag kopieren und anpassen.
+#Sollen Schaltzeiten astronomisch geschaltet werden, so mu\xDF bei Astro 'a' f\xFCr Sonnenaufgang
+#und 'u' f\xFCr Sonnenuntergang eingetragen werden. Der Stunden und Minutenwert wird dann ignoriert.
-push @Schaltzeiten, { name => "bew\xE4sserung_ein", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 21, Minuten => 02, Wert => 1, DPT => 1, ga => '2/0/0', KW => '', Monat => '' };
+push @Schaltzeiten, { name => "weckzeit", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 0, Stunden => 05, Minuten => 45, Wert => 1, DPT => 1, ga => '1/5/4', KW => '', Monat => '', Astro => '' };
-push @Schaltzeiten, { name => "bew\xE4sserung_aus", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 1, Stunden => 21, Minuten => 03, Wert => 0, DPT => 1, ga => '2/0/0', KW => '', Monat => '' };
+
######################
##ENDE Einstellungen##
######################
use POSIX;
use Time::Local;
+# Wir brauchen auch Sonnenstandsberechnung
+use Astro::Sunrise;
# Eigenen Aufruf-Zyklus auf 20sek. setzen
$plugin_info{$plugname.'_cycle'} = 20;
@@ -47,6 +65,15 @@
foreach my $element (@Schaltzeiten) {
if (knx_read($element->{ga},0,$element->{DPT}) ne $element->{Wert}) {
+ if ($element->{Astro} ne '') {
+ if ($element->{Astro} eq 'a') {
+ $element->{Stunden}=$sunrise[0];
+ $element->{Minuten}=$sunrise[1];
+ } elsif ($element->{Astro} eq 'u') {
+ $element->{Stunden}=$sunset[0];
+ $element->{Minuten}=$sunset[1];
+ }
+ }
if ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} ne '') {
if ($element->{KW} == $kw) {
knx_write($element->{ga},$element->{Wert},$element->{DPT});
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sw...@us...> - 2012-03-25 20:54:09
|
Revision: 731
http://openautomation.svn.sourceforge.net/openautomation/?rev=731&view=rev
Author: swiss1
Date: 2012-03-25 20:54:02 +0000 (Sun, 25 Mar 2012)
Log Message:
-----------
Sommerzeit f?\195?\188r die Austrofunktion nachger?\195?\188stet
Modified Paths:
--------------
wiregate/plugin/generic/schaltuhr.pl
Modified: wiregate/plugin/generic/schaltuhr.pl
===================================================================
--- wiregate/plugin/generic/schaltuhr.pl 2012-03-18 16:01:50 UTC (rev 730)
+++ wiregate/plugin/generic/schaltuhr.pl 2012-03-25 20:54:02 UTC (rev 731)
@@ -1,10 +1,10 @@
# Plugin zum Zeit abh\xE4ngigem schalten von GA's (Schaltuhr)
-# Version 0.6 BETA 29.02.2012
+# Version 0.6 BETA 25.03.2012
# Copyright: swiss (http://knx-user-forum.de/members/swiss.html)
# License: GPL (v2)
# Aufbau m\xF6glichst so, dass man unterhalb der Einstellungen nichts ver\xE4ndern muss!
-# -Erweitert um Sonnenauf / - untergang von ZeitlerW (http://knx-user-forum.de/members/zeitlerw.html)
-# -Inspiriert von kleinklausi's Rolladen - Plugin
+# Erweitert um Sonnenauf / - untergang von ZeitlerW (http://knx-user-forum.de/members/zeitlerw.html)
+# Inspiriert von kleinklausi's Rolladen - Plugin
####################
@@ -21,17 +21,20 @@
#Winkel f\xFCr Beginn der D\xE4mmerung
# siehe auch: http://search.cpan.org/~rkhill/Astro-Sunrise-0.91/Sunrise.pm#DESCRIPTION
my $winkel=-3;
+
my @Schaltzeiten;
-
-
#Pro Schaltpunkt einfach den unten stehenden Eintrag kopieren und anpassen.
#Sollen Schaltzeiten astronomisch geschaltet werden, so mu\xDF bei Astro 'a' f\xFCr Sonnenaufgang
#und 'u' f\xFCr Sonnenuntergang eingetragen werden. Der Stunden und Minutenwert wird dann ignoriert.
-push @Schaltzeiten, { name => "weckzeit", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 0, Stunden => 05, Minuten => 45, Wert => 1, DPT => 1, ga => '1/5/4', KW => '', Monat => '', Astro => '' };
-
-
-
+push @Schaltzeiten, { name => "Stern_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 16, Minuten => 00, Wert => 1, DPT => 1, ga => '0/0/34', KW => '', Monat => '', Astro => 'u' };
+push @Schaltzeiten, { name => "Stern_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 23, Minuten => 00, Wert => 0, DPT => 1, ga => '0/0/34', KW => '', Monat => '', Astro => '' };
+push @Schaltzeiten, { name => "Stern_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 06, Minuten => 00, Wert => 1, DPT => 1, ga => '0/0/34', KW => '', Monat => '', Astro => '' };
+push @Schaltzeiten, { name => "Stern_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 8, Minuten => 30, Wert => 0, DPT => 1, ga => '0/0/34', KW => '', Monat => '', Astro => 'a' };
+push @Schaltzeiten, { name => "Glasvase_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 16, Minuten => 00, Wert => 1, DPT => 1, ga => '0/0/35', KW => '', Monat => '', Astro => 'u' };
+push @Schaltzeiten, { name => "Glasvase_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 23, Minuten => 00, Wert => 0, DPT => 1, ga => '0/0/35', KW => '', Monat => '', Astro => '' };
+push @Schaltzeiten, { name => "Glasvase_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 06, Minuten => 00, Wert => 1, DPT => 1, ga => '0/0/35', KW => '', Monat => '', Astro => '' };
+push @Schaltzeiten, { name => "Glasvase_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 8, Minuten => 30, Wert => 0, DPT => 1, ga => '0/0/35', KW => '', Monat => '', Astro => 'a' };
######################
##ENDE Einstellungen##
######################
@@ -41,12 +44,15 @@
# Wir brauchen auch Sonnenstandsberechnung
use Astro::Sunrise;
+
# Eigenen Aufruf-Zyklus auf 20sek. setzen
$plugin_info{$plugname.'_cycle'} = 20;
#Hier wird ein Array angelegt, um die Wochentagsnummer von localtime zu \xFCbersetzen
my @Wochentag = ('sonntag', 'montag', 'dienstag', 'mittwoch', 'donnerstag', 'freitag', 'samstag');
+my @sunrise=split(/:/,sun_rise($lon,$lat,$winkel));
+my @sunset=split(/:/,sun_set($lon,$lat,$winkel));
my $sec; #Sekunde
my $min; # Minute
my $hour; #Stunde
@@ -64,35 +70,44 @@
my $kw = getWeekNumber($year, $mon, $mday);
foreach my $element (@Schaltzeiten) {
- if (knx_read($element->{ga},0,$element->{DPT}) ne $element->{Wert}) {
- if ($element->{Astro} ne '') {
- if ($element->{Astro} eq 'a') {
- $element->{Stunden}=$sunrise[0];
- $element->{Minuten}=$sunrise[1];
- } elsif ($element->{Astro} eq 'u') {
- $element->{Stunden}=$sunset[0];
- $element->{Minuten}=$sunset[1];
- }
- }
- if ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} ne '') {
- if ($element->{KW} == $kw) {
- knx_write($element->{ga},$element->{Wert},$element->{DPT});
- next;
- } else {
- next;
- }
- } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{Monat} ne '') {
- if ($element->{Monat} == $mon) {
- knx_write($element->{ga},$element->{Wert},$element->{DPT});
- next;
- } else {
- next;
- }
- } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} eq '' && $element->{Monat} eq '') {
- knx_write($element->{ga},$element->{Wert},$element->{DPT});
- next;
- }
- }
+ if (knx_read($element->{ga},0,$element->{DPT}) ne $element->{Wert}) {
+ if ($element->{Astro} ne '') {
+ if ($element->{Astro} eq 'a') {
+ if ($isdst) {
+ $element->{Stunden}=$sunrise[0]+1;
+ } else {
+ $element->{Stunden}=$sunrise[0];
+ }
+ $element->{Minuten}=$sunrise[1];
+ } elsif ($element->{Astro} eq 'u') {
+ if ($isdst) {
+ $element->{Stunden}=$sunset[0]+1;
+ } else {
+ $element->{Stunden}=$sunset[0];
+ }
+ $element->{Minuten}=$sunset[1];
+ }
+ }
+
+ if ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} ne '') {
+ if ($element->{KW} == $kw) {
+ knx_write($element->{ga},$element->{Wert},$element->{DPT});
+ next;
+ } else {
+ next;
+ }
+ } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{Monat} ne '') {
+ if ($element->{Monat} == $mon) {
+ knx_write($element->{ga},$element->{Wert},$element->{DPT});
+ next;
+ } else {
+ next;
+ }
+ } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} eq '' && $element->{Monat} eq '') {
+ knx_write($element->{ga},$element->{Wert},$element->{DPT});
+ next;
+ }
+ }
next;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sw...@us...> - 2012-03-26 15:17:52
|
Revision: 734
http://openautomation.svn.sourceforge.net/openautomation/?rev=734&view=rev
Author: swiss1
Date: 2012-03-26 15:17:41 +0000 (Mon, 26 Mar 2012)
Log Message:
-----------
Plugin wurde auf die Vorg?\195?\164ngerversion zur?\195?\188ckgesetzt da sich ein BUG eingeschlichen hatte.
Modified Paths:
--------------
wiregate/plugin/generic/schaltuhr.pl
Modified: wiregate/plugin/generic/schaltuhr.pl
===================================================================
--- wiregate/plugin/generic/schaltuhr.pl 2012-03-26 14:43:20 UTC (rev 733)
+++ wiregate/plugin/generic/schaltuhr.pl 2012-03-26 15:17:41 UTC (rev 734)
@@ -1,10 +1,10 @@
# Plugin zum Zeit abh\xE4ngigem schalten von GA's (Schaltuhr)
-# Version 0.6 BETA 25.03.2012
+# Version 0.6 BETA 29.02.2012
# Copyright: swiss (http://knx-user-forum.de/members/swiss.html)
# License: GPL (v2)
# Aufbau m\xF6glichst so, dass man unterhalb der Einstellungen nichts ver\xE4ndern muss!
-# Erweitert um Sonnenauf / - untergang von ZeitlerW (http://knx-user-forum.de/members/zeitlerw.html)
-# Inspiriert von kleinklausi's Rolladen - Plugin
+# -Erweitert um Sonnenauf / - untergang von ZeitlerW (http://knx-user-forum.de/members/zeitlerw.html)
+# -Inspiriert von kleinklausi's Rolladen - Plugin
####################
@@ -12,29 +12,26 @@
####################
# Die Standortdaten
-# Die Koordinaten des Hauses. Sehr einfach \xFCber http://www.getlatlon.com/ zu ermitteln.
+# Die Koordinaten des Hauses. Sehr einfach ?ber http://www.getlatlon.com/ zu ermitteln.
my ($lat, $lon) = (
50.27816466477597, # Breitengrad in Grad
- 11.64325475692749 # L\xE4ngengrad in Grad
+ 11.64325475692749 # L?ngengrad in Grad
);
#Winkel f\xFCr Beginn der D\xE4mmerung
# siehe auch: http://search.cpan.org/~rkhill/Astro-Sunrise-0.91/Sunrise.pm#DESCRIPTION
my $winkel=-3;
-
my @Schaltzeiten;
+
+
#Pro Schaltpunkt einfach den unten stehenden Eintrag kopieren und anpassen.
-#Sollen Schaltzeiten astronomisch geschaltet werden, so mu\xDF bei Astro 'a' f\xFCr Sonnenaufgang
+#Sollen Schaltzeiten astronomisch geschaltet werden, so muss bei Astro 'a' f\xFCr Sonnenaufgang
#und 'u' f\xFCr Sonnenuntergang eingetragen werden. Der Stunden und Minutenwert wird dann ignoriert.
-push @Schaltzeiten, { name => "Stern_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 16, Minuten => 00, Wert => 1, DPT => 1, ga => '0/0/34', KW => '', Monat => '', Astro => 'u' };
-push @Schaltzeiten, { name => "Stern_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 23, Minuten => 00, Wert => 0, DPT => 1, ga => '0/0/34', KW => '', Monat => '', Astro => '' };
-push @Schaltzeiten, { name => "Stern_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 06, Minuten => 00, Wert => 1, DPT => 1, ga => '0/0/34', KW => '', Monat => '', Astro => '' };
-push @Schaltzeiten, { name => "Stern_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 8, Minuten => 30, Wert => 0, DPT => 1, ga => '0/0/34', KW => '', Monat => '', Astro => 'a' };
-push @Schaltzeiten, { name => "Glasvase_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 16, Minuten => 00, Wert => 1, DPT => 1, ga => '0/0/35', KW => '', Monat => '', Astro => 'u' };
-push @Schaltzeiten, { name => "Glasvase_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 23, Minuten => 00, Wert => 0, DPT => 1, ga => '0/0/35', KW => '', Monat => '', Astro => '' };
-push @Schaltzeiten, { name => "Glasvase_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 06, Minuten => 00, Wert => 1, DPT => 1, ga => '0/0/35', KW => '', Monat => '', Astro => '' };
-push @Schaltzeiten, { name => "Glasvase_Wohnzimmer", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 8, Minuten => 30, Wert => 0, DPT => 1, ga => '0/0/35', KW => '', Monat => '', Astro => 'a' };
+push @Schaltzeiten, { name => "weckzeit", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 0, Stunden => 05, Minuten => 45, Wert => 1, DPT => 1, ga => '1/5/4', KW => '', Monat => '', Astro => '' };
+
+
+
######################
##ENDE Einstellungen##
######################
@@ -44,15 +41,12 @@
# Wir brauchen auch Sonnenstandsberechnung
use Astro::Sunrise;
-
# Eigenen Aufruf-Zyklus auf 20sek. setzen
$plugin_info{$plugname.'_cycle'} = 20;
#Hier wird ein Array angelegt, um die Wochentagsnummer von localtime zu \xFCbersetzen
my @Wochentag = ('sonntag', 'montag', 'dienstag', 'mittwoch', 'donnerstag', 'freitag', 'samstag');
-my @sunrise=split(/:/,sun_rise($lon,$lat,$winkel));
-my @sunset=split(/:/,sun_set($lon,$lat,$winkel));
my $sec; #Sekunde
my $min; # Minute
my $hour; #Stunde
@@ -70,44 +64,35 @@
my $kw = getWeekNumber($year, $mon, $mday);
foreach my $element (@Schaltzeiten) {
- if (knx_read($element->{ga},0,$element->{DPT}) ne $element->{Wert}) {
- if ($element->{Astro} ne '') {
- if ($element->{Astro} eq 'a') {
- if ($isdst) {
- $element->{Stunden}=$sunrise[0]+1;
- } else {
- $element->{Stunden}=$sunrise[0];
- }
- $element->{Minuten}=$sunrise[1];
- } elsif ($element->{Astro} eq 'u') {
- if ($isdst) {
- $element->{Stunden}=$sunset[0]+1;
- } else {
- $element->{Stunden}=$sunset[0];
- }
- $element->{Minuten}=$sunset[1];
- }
- }
-
- if ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} ne '') {
- if ($element->{KW} == $kw) {
- knx_write($element->{ga},$element->{Wert},$element->{DPT});
- next;
- } else {
- next;
- }
- } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{Monat} ne '') {
- if ($element->{Monat} == $mon) {
- knx_write($element->{ga},$element->{Wert},$element->{DPT});
- next;
- } else {
- next;
- }
- } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} eq '' && $element->{Monat} eq '') {
- knx_write($element->{ga},$element->{Wert},$element->{DPT});
- next;
- }
- }
+ if (knx_read($element->{ga},0,$element->{DPT}) ne $element->{Wert}) {
+ if ($element->{Astro} ne '') {
+ if ($element->{Astro} eq 'a') {
+ $element->{Stunden}=$sunrise[0];
+ $element->{Minuten}=$sunrise[1];
+ } elsif ($element->{Astro} eq 'u') {
+ $element->{Stunden}=$sunset[0];
+ $element->{Minuten}=$sunset[1];
+ }
+ }
+ if ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} ne '') {
+ if ($element->{KW} == $kw) {
+ knx_write($element->{ga},$element->{Wert},$element->{DPT});
+ next;
+ } else {
+ next;
+ }
+ } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{Monat} ne '') {
+ if ($element->{Monat} == $mon) {
+ knx_write($element->{ga},$element->{Wert},$element->{DPT});
+ next;
+ } else {
+ next;
+ }
+ } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} eq '' && $element->{Monat} eq '') {
+ knx_write($element->{ga},$element->{Wert},$element->{DPT});
+ next;
+ }
+ }
next;
}
@@ -122,7 +107,7 @@
# Wochennummer des letzten Woche des letzten Jahres suchen
$weekNumber = checkWeekNumber(($year - 1), 12, 31);
-# wenn die Wochennummer gr\xF6\xDFer als 52 ist
+# wenn die Wochennummer gr??er als 52 ist
# dann pr\xFCfen ob diese Wochennummer korrekt ist oder
# sie bereits die erste Woche des aktuellen Jahres ist
if ($weekNumber gt 52)
@@ -136,7 +121,7 @@
}
}
}
-# wenn die Wochennummer gr\xF6\xDFer als 52 ist
+# wenn die Wochennummer gr\xF6sser als 52 ist
# dann pr\xFCfen ob diese Wochennummer korrekt ist oder
# sie bereits die erste Woche des n\xE4chsten Jahres ist
elsif ($weekNumber gt 52)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sw...@us...> - 2012-12-02 08:53:40
|
Revision: 1181
http://openautomation.svn.sourceforge.net/openautomation/?rev=1181&view=rev
Author: swiss1
Date: 2012-12-02 08:53:34 +0000 (Sun, 02 Dec 2012)
Log Message:
-----------
Aktualisiert zu Version 0.8 BETA
Modified Paths:
--------------
wiregate/plugin/generic/schaltuhr.pl
Modified: wiregate/plugin/generic/schaltuhr.pl
===================================================================
--- wiregate/plugin/generic/schaltuhr.pl 2012-11-30 21:45:00 UTC (rev 1180)
+++ wiregate/plugin/generic/schaltuhr.pl 2012-12-02 08:53:34 UTC (rev 1181)
@@ -1,11 +1,12 @@
# Plugin zum Zeit abh\xE4ngigem schalten von GA's (Schaltuhr)
-# Version 0.6 BETA 29.02.2012
+# Version 0.8 BETA 03.10.2012
# Copyright: swiss (http://knx-user-forum.de/members/swiss.html)
# License: GPL (v2)
# Aufbau m\xF6glichst so, dass man unterhalb der Einstellungen nichts ver\xE4ndern muss!
# -Erweitert um Sonnenauf / - untergang von ZeitlerW (http://knx-user-forum.de/members/zeitlerw.html)
# -Inspiriert von kleinklausi's Rolladen - Plugin
+my @Schaltzeiten;
####################
###Einstellungen:###
@@ -14,24 +15,25 @@
# Die Standortdaten
# Die Koordinaten des Hauses. Sehr einfach ?ber http://www.getlatlon.com/ zu ermitteln.
my ($lat, $lon) = (
- 50.27816466477597, # Breitengrad in Grad
- 11.64325475692749 # L?ngengrad in Grad
+ 51.66787081407156, # Breitengrad in Grad
+ 13.64227294921875 # L?ngengrad in Grad
);
#Winkel f\xFCr Beginn der D\xE4mmerung
# siehe auch: http://search.cpan.org/~rkhill/Astro-Sunrise-0.91/Sunrise.pm#DESCRIPTION
my $winkel=-3;
-my @Schaltzeiten;
#Pro Schaltpunkt einfach den unten stehenden Eintrag kopieren und anpassen.
#Sollen Schaltzeiten astronomisch geschaltet werden, so muss bei Astro 'a' f\xFCr Sonnenaufgang
#und 'u' f\xFCr Sonnenuntergang eingetragen werden. Der Stunden und Minutenwert wird dann ignoriert.
-push @Schaltzeiten, { name => "weckzeit", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 0, Stunden => 05, Minuten => 45, Wert => 1, DPT => 1, ga => '1/5/4', KW => '', Monat => '', Astro => '' };
+push @Schaltzeiten, { name => "test", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 0, Stunden => 21, Minuten => 10, Wert => 1, DPT => 1, ga => '1/0/0', KW => '', Monat => '', Astro => '' };
+push @Schaltzeiten, { name => "test1", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 0, Stunden => 21, Minuten => 11, Wert => 0, DPT => 1, ga => '1/0/0', KW => '', Monat => '', Astro => '' };
+push @Schaltzeiten, { name => "test2", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 0, Stunden => 21, Minuten => 10, Wert => 1, DPT => 1, ga => '1/0/25', KW => '', Monat => '', Astro => '' };
+push @Schaltzeiten, { name => "test3", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 0, sonntag => 0, Stunden => 21, Minuten => 12, Wert => 0, DPT => 1, ga => '1/0/25', KW => '', Monat => '', Astro => '' };
-
######################
##ENDE Einstellungen##
######################
@@ -47,6 +49,8 @@
#Hier wird ein Array angelegt, um die Wochentagsnummer von localtime zu \xFCbersetzen
my @Wochentag = ('sonntag', 'montag', 'dienstag', 'mittwoch', 'donnerstag', 'freitag', 'samstag');
+my @sunrise=split(/:/,sun_rise($lon,$lat,$winkel));
+my @sunset=split(/:/,sun_set($lon,$lat,$winkel));
my $sec; #Sekunde
my $min; # Minute
my $hour; #Stunde
@@ -63,37 +67,56 @@
my $kw = getWeekNumber($year, $mon, $mday);
-foreach my $element (@Schaltzeiten) {
- if (knx_read($element->{ga},0,$element->{DPT}) ne $element->{Wert}) {
- if ($element->{Astro} ne '') {
- if ($element->{Astro} eq 'a') {
- $element->{Stunden}=$sunrise[0];
- $element->{Minuten}=$sunrise[1];
- } elsif ($element->{Astro} eq 'u') {
- $element->{Stunden}=$sunset[0];
- $element->{Minuten}=$sunset[1];
- }
- }
- if ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} ne '') {
- if ($element->{KW} == $kw) {
- knx_write($element->{ga},$element->{Wert},$element->{DPT});
- next;
- } else {
- next;
- }
- } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{Monat} ne '') {
- if ($element->{Monat} == $mon) {
- knx_write($element->{ga},$element->{Wert},$element->{DPT});
- next;
- } else {
- next;
- }
- } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} eq '' && $element->{Monat} eq '') {
- knx_write($element->{ga},$element->{Wert},$element->{DPT});
- next;
- }
- }
-next;
+if(($plugin_info{$plugname.'_time'}+60) <= $plugin_info{$plugname.'_last'}){
+ foreach my $element (@Schaltzeiten) {
+ if ($element->{Astro} ne '') {
+ if ($element->{Stunden} ne '' or $element->{Minuten} ne '') {
+ if ($element->{Astro} eq 'a') {
+ $element->{Stunden}+=$sunrise[0];
+ $element->{Minuten}+=$sunrise[1];
+ } elsif ($element->{Astro} eq 'u') {
+ $element->{Stunden}+=$sunset[0];
+ $element->{Minuten}+=$sunset[1];
+ }
+ }else{
+ if ($element->{Astro} eq 'a') {
+ $element->{Stunden}=$sunrise[0];
+ $element->{Minuten}=$sunrise[1];
+ } elsif ($element->{Astro} eq 'u') {
+ $element->{Stunden}=$sunset[0];
+ $element->{Minuten}=$sunset[1];
+ }
+ }
+
+ }
+ if ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} ne '') {
+ $plugin_info{$plugname.'_time'} = time();
+ if ($element->{KW} == $kw) {
+ knx_write($element->{ga},$element->{Wert},$element->{DPT});
+ plugin_log($plugname,'Schaltpunkt: ' . $element->{name} . ' ausgef\xFChrt. Wert: ' . $element->{Wert} . ' an Gruppenadresse ' . $element->{ga} . ' gesendet');
+ next;
+ } else {
+ next;
+ }
+ } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{Monat} ne '') {
+ $plugin_info{$plugname.'_time'} = time();
+ if ($element->{Monat} == $mon) {
+ knx_write($element->{ga},$element->{Wert},$element->{DPT});
+ plugin_log($plugname,'Schaltpunkt: ' . $element->{name} . ' ausgef\xFChrt. Wert: ' . $element->{Wert} . ' an Gruppenadresse ' . $element->{ga} . ' gesendet');
+ next;
+ } else {
+ next;
+ }
+ } elsif ($element->{$Wochentag[$wday]} == 1 && $element->{Stunden} == $hour && $element->{Minuten} == $min && $element->{KW} eq '' && $element->{Monat} eq '') {
+ $plugin_info{$plugname.'_time'} = time();
+ knx_write($element->{ga},$element->{Wert},$element->{DPT});
+ plugin_log($plugname,'Schaltpunkt: ' . $element->{name} . ' ausgef\xFChrt. Wert: ' . $element->{Wert} . ' an Gruppenadresse ' . $element->{ga} . ' gesendet');
+ next;
+ }
+ next;
+ }
+}else{
+ return;
}
sub getWeekNumber {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|