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