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]###


Vielleicht lässt sich dein Ziel ja auch so erreichen. Aber ohne die genaue Fragestellung zu kennen ist eine "Beratung" schwierig.
Kommentar