Guten Abend
Also ich hab jetzt das Plugin von Plusch getestet -> funktioniert
und dann mit den geänderten Werten das von hier:
SourceForge.net Repository - [openautomation] Log of /wiregate/plugin/generic/Nacht-Nachdimmen
-> funkt auch
das einzige was ich ändern hab müssen:
von $msg{'value'} == '1'
auf $msg{'value'} == '$01'
jetzt funktioniert es
danke und lg rene
Ankündigung
Einklappen
Keine Ankündigung bisher.
- √ - Nachdimmen Plugin funktioniert nicht
Einklappen
Dieses Thema ist geschlossen.
X
X
-
Dann sollten wir das doch als "funktioniert einfach ohne Tricks und Kniffe" auch ins SVN legen ?
Makki
Einen Kommentar schreiben:
-
Wenn Du das Plugin von Sourceforge hast funktioniert es nicht. Dies steht allerdings auch als Kommentar direkt dahinter.
Unten stehend mal mein funktionierendes Plugin. Kannst ja mal dieses testen.
Hat dein WG denn die aktuelle Uhrzeit? Hast Du eine Verbindung ins Internet?
Das WG sollte, so weit ich Makki kenne, zwar auch ohne eine Verbindung die genaue Uhrzeit kennen, aber überprüfen kann man es ja mal.
Gruß Plusch
Code:### Definitionen ### Hier werden die Werte/Gruppenadressen definiert my $lichtein_ga = "3/2/31"; # Gruppenadresse Licht Ein/Aus my $lichtdim_ga = "3/2/7"; # Gruppenadresse Licht Dimmwert my $dimvalue = 2; # Dimmwert my $starthour = 23; # Stunde, ab der gedimmt werden soll my $endhour = 6; # Stunde, ab der nicht mehr gedimmt werden soll ### Ende Definitionen my ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings); ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime(); # Eigenen Aufruf-Zyklus auf 1x täglich setzen, hört ja auf GA $plugin_info{$plugname.'_cycle'} = 86400; # Plugin an Gruppenadresse "anmelden" $plugin_subscribe{$lichtein_ga}{$plugname} = 1; # Nur bei einer gesendeten 1 reagieren # Nur bei einer gesendeten 1 reagieren if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $lichtein_ga && $msg{'value'} == '1' ) { if ($hour >= $starthour || $hour <$endhour) { knx_write($lichtdim_ga,$dimvalue,5); # Dimmwert senden return "Gedimmt $hour Uhr"; } } # Kein Log return 0;
Einen Kommentar schreiben:
-
Guten Morgen,
Leider bekomme ich das Plugin nicht zum Laufen
Zur Theorie: das Plugin überwacht den Busverkehr und schickt bei Erkennen einer in der .conf-Datei definierten GA einen Dimmwert hinterher - verstehe ich das richtig.
Im Busmonitor erkennt ich jedoch kein solches Verhalten - Es wird lediglich die Aktion vom PM registriert.
Muss ich bei der Installation des Plugins noch etwas beachten (aktivieren)?
Ich habe den Plugin-Code unter dem Namen "DALI Abend gedimmt" und den Konfigurationscode in "config" gespeichert.
Eine mögliche Ursache:
In den "Plugin Debug-Infos":
Datum Uhrzeit vom Bus_last ->
1304319419.87022
Datum Uhrzeit vom Bus_result ->
Fehler beim lesen von Datum/Uhrzeit von 0/0/2 / 0/0/1!
Bitte um Hilfe
lg Rene
Einen Kommentar schreiben:
-
Neue Version für minutengenaues Einstellen der Start- und Endzeit liegt im SVN.
Also 11:25 - 22:30 und 20:15 - 6:15 ist jetzt auch möglich.
Gruß Mirko
Einen Kommentar schreiben:
-
o.k. ... er will also partout das
Hätte gedacht das ist schon im wiregated implementiert.Code:use Time::Local;
Damit läufts nun.
Einen Kommentar schreiben:
-
Der wesentliche Punkt im o.g. Code ist doch:
ist das gleiche wie mein:Code:my $time = timelocal($sec,$min,$hour,$mday,$mon-1,$year);
Auf den falschen Monat ist jetzt mal gesch....Code:my $su = timelocal (0,$sm,$sh,$day,$mon,$year);

Oder seh ich das falsch?
Das bringt mir eben den o.g. Fehler
0 entspricht der $sec
$sm lege ich fest (Start-Minute)
$sh lege ich fest (Start-Stunde)
$day kommt aus localtime()
$mon kommt aus localtime()
$year kommt aus localtime()
Jetzt erschlagt mich aber ich sehe da keinen Fehler...bis auf den Monat...
Einen Kommentar schreiben:
-
Na gut
Hab ich da gefundenCode:use Time::Local; my $date = '23.10.2011 11:35:00'; my ($mday,$mon,$year,$hour,$min,$sec) = split(/[\s.:]+/, $date); my $time = timelocal($sec,$min,$hour,$mday,$mon-1,$year); return $time . " as unix timestamp is " . scalar localtime $time;

Makki
Einen Kommentar schreiben:
-
Geht trotzdem nicht:
->Undefined subroutine &main::mktimeCode:my $su = mktime (0,$sm,$sh,$day,$mon,$year); #Start-Zeit in Unixzeit
und
->Undefined subroutine &main::timelocalCode:my $su = timelocal (0,$sm,$sh,$day,$mon,$year); #Start-Zeit in Unixzeit
oder muss es dann DateTime sein, oder Date::Parse ???
Oder ist es dann das Suchergebnis 1432 ???
Ich frag nicht ohne bereits Google bemüht zu haben, aber wenn die ersten 100 Ergebnisse auf timelocal oder mktime verweisen ...
Einen Kommentar schreiben:
-
Nee schon o.k. Die Suchergebnisse 3 bis 7 waren ja schon von mir "Lila" angesurft.
Einen Kommentar schreiben:
-
Mit Verlaub, das kostet 2 Minuten gurgeln: Let me google that for you
Sollte man das kopieren oder einfach lesen?
Makki
Einen Kommentar schreiben:
-
Und wie in diesem Fall? Ich möchte aus Jahr, Monat, Tag, Stunde und Minute einen Unix Timestamp erzeugen.
Einen Kommentar schreiben:
-
Ich hab zwischen PL29-32 möglichst viele externe Module entfernt, weil die alle (leider ausnahmslos) alle k*** sind; Sorry.
Fehlende Funktionen lassen sich leicht nachbilden, wenn man weiss was.. Meist für 1/10 der Resourcen.
Makki
Einen Kommentar schreiben:
-
Ich hab mir das Plugin nochmal zur Brust genommen um eine Minutengenaue Schaltung zur realisieren.
Vorab es funktioniert, jedoch erhalte ich folgende Fehlermeldung:
Grund scheint mktime zu sein, beim entwickeln hat das Ergenis von mktime aber gestimmt und auch keine Fehlermeldung ausgegeben.PHP-Code:Undefined subroutine &main::mktime called at (eval 25) line 40
Wenn das behoben ist würde ich es wieder ins SVN schieben...und vielleicht noch eine .conf implementieren
Code:#return; #$plugin_info{$plugname.'_cycle'} = 0; # Nachts Licht nur gedimmt einschalten. # Plugin hört auf GA des Ein-Befehles und schickt Dimmwert hinterher. # V1.0 2012-07-20 # Minutengenaues dimmen möglich # JuMi2006 -> knx-user-forum.de ### Definitionen ### Hier werden die Werte/Gruppenadressen definiert my $lichtein_ga = "1/2/20"; # Gruppenadresse Licht Ein/Aus my $lichtdim_ga = "1/2/23"; # Gruppenadresse Licht Dimmwert my $dimvalue = 15; # Dimmwert my $start = "22:00"; # Uhrzeit, ab der gedimmt werden soll my $end = "06:30"; # Uhrzeit, ab der nicht mehr gedimmt werden soll ### Ende Definitionen my ($sec, $min, $hour, $day, $mon, $year, $wday, $yday) = localtime(); my ($sh,$sm,$eh,$em); # Eigenen Aufruf-Zyklus auf 1x täglich setzen, hört ja auf GA $plugin_info{$plugname.'_cycle'} = 86400; # Plugin an Gruppenadresse "anmelden" $plugin_subscribe{$lichtein_ga}{$plugname} = 1; if ($start =~/(\w{1,})\:(\w{1,})/) { $sh = $1; $sm = $2; } if ($end =~/(\w{1,})\:(\w{1,})/) { $eh = $1; $em = $2; } my $su = mktime (0,$sm,$sh,$day,$mon,$year); #Start-Zeit in Unixzeit my $eu = mktime (0,$em,$eh,$day,$mon,$year); #End-Zeit in Unixzeit my $time = time (); if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $lichtein_ga && $msg{'value'} == '1' ) { ###Startzeit vor Endzeit z.B. 14-18 Uhr if ($sh <= $eh) ###Startzeit vor Endzeit z.B. 14-18 Uhr { if ($time < $eu && $time > $su) { #DIMMEN return "Gedimmt $hour:$min Uhr"; knx_write($lichtdim_ga,$dimvalue,5); # Dimmwert senden }else{} if ($sm > $em && $sh == $eh) { #DIMMEN return "Gedimmt $hour:$min Uhr"; knx_write($lichtdim_ga,$dimvalue,5); # Dimmwert senden }else{} } ### Startzeit nach Endzeit z.B. 18-7 Uhr if ($sh > $eh) ### Startzeit nach Endzeit z.B. 18-7 Uhr { if ($time > $su) { #DIMMEN knx_write($lichtdim_ga,$dimvalue,5); # Dimmwert senden return "Gedimmt $hour:$min Uhr"; }else{} if ($time < $eu) { #DIMMEN knx_write($lichtdim_ga,$dimvalue,5); # Dimmwert senden return "Gedimmt $hour:$min Uhr"; }else{} } } return;
Einen Kommentar schreiben:
-
So, ist gefixed -> SourceForge.net Repository - [openautomation] Contents of /wiregate/plugin/generic/Nacht-Nachdimmen
Da war noch ein kleiner Bug ... oder Feature:
Hat bei $endhour = 7 bis 7:59 Uhr gedimmt, irgendwie unlogischCode:if ($crthour >= $starthour || $crthour <=$endhour)
Also jetzt:
Damit wird bei $endhour = 7 bis 6:59 gedimmt, finde ich schlüssiger.Code:if ($crthour >= $starthour || $crthour <$endhour)
Gruß
Einen Kommentar schreiben:


Einen Kommentar schreiben: