...noch ne Sache, die ich nicht verstehe.
in den KNX Grundeinstellungen des WG ist als lokale KNX Adresse 1.1.254 eingetrtagen.
Wenni ch ejtzt in der ETS den Gruppenmonitor mitlaufen lasse, protokolliert dieser aber, dass die Befehle von 15.15.11 abgesetzt werden.
Prinzipiell nicht schlimm, aber woher rührts ?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Zeitschaltuhrplugin
Einklappen
Dieses Thema ist geschlossen.
X
X
-
...der FEHLER war, dass die 8 eine führende 0 voran hatte, was sie...warum auch immer.... nicht haben darf !
puh
Einen Kommentar schreiben:
-
Du hast die Urälteste Version erwischt die es von dem Plugin gibt...
Ich würde mal die etwas neuere Version 0.5 versuchen:
Die Version 0.1 hatte noch einige Fehler drin...Code:# Plugin zum Zeit abhängigem schaten von GA's (Schaltuhr) # Version 0.5 BETA 03.07.2011 # Copyright: swiss (https://knx-user-forum.de/members/swiss.html) # License: GPL (v2) # Aufbau möglichst so, dass man unterhalb der Einstellungen nichts verändern muss! #################### ###Einstellungen:### #################### my @Schaltzeiten; #Pro Schaltpunkt einfach den unten stehenden Eintrag kopieren und anpassen. push @Schaltzeiten, { name => "bewässerung_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ässerung_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; # Eigenen Aufruf-Zyklus auf 20sek. setzen $plugin_info{$plugname.'_cycle'} = 20; #Hier wird ein Array angelegt, um die Wochentagsnummer von localtime zu übersetzen my @Wochentag = ('sonntag', 'montag', 'dienstag', 'mittwoch', 'donnerstag', 'freitag', 'samstag'); 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); foreach my $element (@Schaltzeiten) { 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; } } 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ößer als 52 ist # dann prüfen 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ößer als 52 ist # dann prüfen ob diese Wochennummer korrekt ist oder # sie bereits die erste Woche des nächsten Jahres ist elsif ($weekNumber gt 52) { $weekNumber = checkWeekNumber(($year + 1), 1, 1); # wenn der 1. Januar des nächsten 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ück $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); }
Einen Kommentar schreiben:
-
Habs jetzt gerade nochmal mit dem ursprünglichen Plugin versucht,
https://knx-user-forum.de/forum/supp...wiregate/15278
selbst da tut sich nix, gestern abend hat das jedoch funktioniert...
Das Wiregate setzt auch immer 60 sekunden als ausführungszeit, anstelle der 20
Ich verstehe es nicht, warum das WG mich nicht mag
Einen Kommentar schreiben:
-
Hallo. Das nix passiert ist seltsam... Aber diw Ausführungszeit von 20 Sekunden solltest du auf keinen Fall ändern. Das Plugin wird dabei sehr wohl alle 20 Sekunden aufgerufen aber nur 1 mal pro Minute abgearbeitet. Das ist bewusst so gelöst. Aber das ausfürlich zu erklären ist am Handy echt mühsam einzutippen...
Das Problem wird daran liegen, dass du Sonderzeichen (scharfes Doppel s) verwendet hast. Erlaubt sind nur UTF-8 zeichen ohne Umlaute und Sonderzeichen.
Einen Kommentar schreiben:
-
Zeitschaltuhrplugin
Hallo, habe versucht gestern abend das Zeitschaltuhrplugin für meine Rolladen zu verwenden.
Später möchte ich es ggf. erweitern um auf der Südseite die Rolladen auf ca 50% fahren zu können, wenn die Sonne einen gewissen Wert erreicht hat (da weiss ich noch nicht wie)
Heute morgen passierte NIX
Davon abgesehen scheint es dem Wiregate egal zu sein, ob da Scriptausführungszeit 20 oder 60 Sekunden steht, denn er führt es trotzdem alle 60 aus...
Code:# Plugin zum Zeit abhängigem schaten von GA's (Schaltuhr) # Version 0.1 03.07.2011 # Copyright: swiss (https://knx-user-forum.de/members/swiss.html) # License: GPL (v2) # Aufbau möglichst so, dass man unterhalb der Einstellungen nichts verändern muss! #################### ###Einstellungen:### #################### my @Schaltzeiten; push @Schaltzeiten, { name => "Wohnzimmer groß", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 08, Minuten => 00, Befehl => 0, ga => '5/0/4' }; push @Schaltzeiten, { name => "Wohnzimmer groß", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 19, Minuten => 00, Befehl => 1, ga => '5/0/4' }; push @Schaltzeiten, { name => "Wohnzimmer links", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 08, Minuten => 00, Befehl => 0, ga => '5/0/8' }; push @Schaltzeiten, { name => "Wohnzimmer links", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 19, Minuten => 00, Befehl => 1, ga => '5/0/8' }; push @Schaltzeiten, { name => "Wohnzimmer mitte", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 08, Minuten => 00, Befehl => 0, ga => '5/0/12' }; push @Schaltzeiten, { name => "Wohnzimmer mitte", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 19, Minuten => 00, Befehl => 1, ga => '5/0/12' }; push @Schaltzeiten, { name => "Wohnzimmer rechts", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 08, Minuten => 00, Befehl => 0, ga => '5/0/16' }; push @Schaltzeiten, { name => "Wohnzimmer rechts", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 19, Minuten => 00, Befehl => 1, ga => '5/0/16' }; push @Schaltzeiten, { name => "Küche", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 08, Minuten => 00, Befehl => 0, ga => '5/0/20' }; push @Schaltzeiten, { name => "Küche", montag => 1, dienstag => 1, mittwoch => 1, donnerstag => 1, freitag => 1, samstag => 1, sonntag => 1, Stunden => 19, Minuten => 00, Befehl => 1, ga => '5/0/20' }; ###################### ##ENDE Einstellungen## ###################### use POSIX; # Eigenen Aufruf-Zyklus auf 20sek. setzen $plugin_info{$plugname.'_cycle'} = 20; #Hier wird ein Array angelegt, um die Wochentagsnummer von localtime zu übersetzen 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; }Stichworte: -


Einen Kommentar schreiben: