Hi,
habe einen Baustein aus dem Forum hier und würde diesen gerne ändern für meine Bedürfnisse. Bevor ich diesen Baustein starte setze ich in der Visu jedesmal eine neue Zeit an E2. Hier würde ich gerne die Änderung haben das sollte sich der Wert an E2 ändern oder ich Edomi neustarten der Wert schon einmal an A2 ausgegeben wird aber die Zeit noch nicht runterläuft solanger der Baustein nicht gestartet wurde.
Was müsste hier wo geändert werden.
Grüße
habe einen Baustein aus dem Forum hier und würde diesen gerne ändern für meine Bedürfnisse. Bevor ich diesen Baustein starte setze ich in der Visu jedesmal eine neue Zeit an E2. Hier würde ich gerne die Änderung haben das sollte sich der Wert an E2 ändern oder ich Edomi neustarten der Wert schon einmal an A2 ausgegeben wird aber die Zeit noch nicht runterläuft solanger der Baustein nicht gestartet wurde.
Was müsste hier wo geändert werden.
Grüße
Code:
###[LBS]### <? function LB_LBSID($id) { if (($E=logic_getInputs($id)) && ($V=logic_getVars($id))) { if (logic_getState($id)==0) { if ($E[1]['value']!=0 && $E[1]['refresh']==1) { logic_setVar($id,1,(getMicrotime()+$E[2]['value'])); logic_setVar($id,2,getMicrotime()); //Zeitpunkt der letzten Restzeitausgabe merken logic_setOutput($id,1,1); //Neustart: A1=1 logic_setOutput($id,2,$E[2]['value']); //Neustart: A2=Restzeit logic_setOutput($id,3,""); //A3=leer logic_setState($id,1,1000,true); //1-Sekunden-Takt als kleinsten gemeinsamen Nenner (Timer und Restzeit) } } else { //Abbruch if ($E[1]['value']==0 && $E[1]['refresh']==1) { logic_setOutput($id,1,0); //A1=0 logic_setOutput($id,2,0); //A2=0 (keine Restzeit mehr vorhanden) logic_setOutput($id,3,1); //A3=1 logic_setState($id,0); } else { //Retriggern if ($E[1]['value']!=0 && $E[1]['refresh']==1) { logic_setVar($id,1,(getMicrotime()+$E[2]['value'])); logic_setVar($id,2,getMicrotime()); //Zeitpunkt der letzten Restzeitausgabe merken logic_setOutput($id,1,1); //A1=1 logic_setOutput($id,2,$E[2]['value']); //A2=Restzeit logic_setOutput($id,3,2); //A3=2 } else { if (getMicrotime()>=$V[1]) { //Zeit abgelaufen? logic_setOutput($id,1,0); //A1=0 logic_setOutput($id,2,0); //A2=0 (keine Restzeit mehr vorhanden) logic_setOutput($id,3,0); //A3=0 logic_setState($id,0); } else { //Restzeit im Sekundentakt ausgeben $tmp=getMicrotime(); if (($tmp-$V[2])>=1) { logic_setVar($id,2,getMicrotime()); //Zeitpunkt der letzten Restzeitausgabe merken logic_setOutput($id,2,intval($V[1]-$tmp)); //A2=Restzeit } } } } } } } ?> ###[/LBS]###
Kommentar