Hallo Christian,
danke für den Quellcode.
Funktioniert nun perfekt.
Danke für die Hilfe.
Ankündigung
Einklappen
Keine Ankündigung bisher.
- √ - Plugin soll pausieren!
Einklappen
Dieses Thema ist geschlossen.
X
X
-
Pausen in Plugins sind (wie in anderen ereignisgesteuerten Systemen) ungünstig und daher meist nicht erlaubt.
Ein pausierendes = stehendes Plugin stoppt den Perl-Prozess und hält alles andere an. Darum werden Plugins die länger als 10 Sekunden brauchen auch gekillt.
Daher Start-Zeitpunkt in eine GA "schreiben" und bei folgenden Durchläufen prüfen ob die Zeit schon rum ist für die nächste Aktion.
Das wurde bereits in einigen Beiträgen hier zu Plugins gepostet, wie dies korrekt zu lösen ist.
Edit: Christian war (viel) schneller.
lg
Stefan
Einen Kommentar schreiben:
-
Hallo Hartwig,
meines Wissens werden Plugins nach spätestens 10 Sekunden beendet, von daher wird Dein Plugin nicht fertig.
Ich würde es an Deiner Stelle mit einer Hilfsvariable lösen, die anzeigt, dass das Programm aktiv ist und den Zeitpunkt der Ausführung speichert.
Also in etwa so (ungetestet):
Code:if (!$plugin_info{$plugname."_AnzahlBewegung"}){ if ($senden ==1) { #Ausführungszyklus auf 1 Sekunde setzen $plugin_info{$plugname.'_cycle'} = 1; #Startzeit erfassen: $plugin_info{$plugname."_AnzahlBewegung"} = time(); # Daten werden gesendet knx_write($dreiwegeventil,$pos3wege,5); knx_write($brunnenventil,$brunnenventil_pos,5); knx_write($bachlaufventil,$bachlaufventil_pos,5); #Warten bis Ventile in Stellung knx_write($ventil_aktion,1,1); } elsif (time() - $plugin_info{$plugname."_AnzahlBewegung"} > 105) { knx_write($ventil_aktion,0,1); knx_write($rpm_wert,$rpm,9); delete($plugin_info{$plugname."_AnzahlBewegung"}); $plugin_info{$plugname.'_cycle'} = 300; #ursprünglicher Wert return "$pumpenszene,$pos3wege,$bachlaufventil_pos, $brunnenventil_pos, $rpm, $url_send"; } }
Einen Kommentar schreiben:
-
- √ - Plugin soll pausieren!
Hallo,
ich fahrte mit einem Plugin ein paar Ventile.
Wenn diese gefahren will ich eine Pumpe anfahren.
Die Verfahrzeit beträgt 105s
Ich habe dazu sleep(105); benutzt. Das Plugin wird bis zu dem Kommando vor Sleep ausgeführt, danach passiert aber nichts mehr.
Wie kann ich das Plugin für die Zeit x in der Ausführung anhalten?
[INFORMATION]
if ($senden ==1) {
# Daten werden gesendet
knx_write($dreiwegeventil,$pos3wege,5);
knx_write($brunnenventil,$brunnenventil_pos,5);
knx_write($bachlaufventil,$bachlaufventil_pos,5);
#Warten bis Ventile in Stellung
knx_write($ventil_aktion,1,1);
sleep (105);
knx_write($ventil_aktion,0,1);
knx_write($rpm_wert,$rpm,9);
return "$pumpenszene,$pos3wege,$bachlaufventil_pos, $brunnenventil_pos, $rpm, $url_send";
}
[/INFORMATION]Stichworte: -


Einen Kommentar schreiben: