Nabend zusammen,
ich habe mich mal dran gemacht, den Verzögerungs-LBS 16000112 auf unsere Bedürfnisse anzupassen / abzuändern und daraus einen 3-fach Verzögerer/Wertsender zu machen.
Hintergrund:
Per Visu sollen Leuchten 3-stufig nach einer vorgegebenen Zeit gedimmt bzw. ausgeschaltet werden. Hier geht es vorrangig um das "Vorwarnen" zur Schlafenszeit für die kiddies.
So schaut es in der Visu aus:
b.JPG
(info: Daten aus Visu und Logik stimmen nicht überein, da der LBS auf ner VM läuft zum testen)
Und so in der Logik:
a.JPG
Im Grunde funktioniert der LBS.
Allerdings gibt es ein Problem, dass wenn der Rückmeldewert E2 bereits kleiner als alle der 3 Eingänge (E4, E6, E8) ist. Dann hängt der LBS in einer Dauerschleife.
Hat jemand eine Ahnung/Tipp wie man den Durchlauf dann beenden kann?
Danke und Gruß
ich habe mich mal dran gemacht, den Verzögerungs-LBS 16000112 auf unsere Bedürfnisse anzupassen / abzuändern und daraus einen 3-fach Verzögerer/Wertsender zu machen.
Hintergrund:
Per Visu sollen Leuchten 3-stufig nach einer vorgegebenen Zeit gedimmt bzw. ausgeschaltet werden. Hier geht es vorrangig um das "Vorwarnen" zur Schlafenszeit für die kiddies.
So schaut es in der Visu aus:
b.JPG
(info: Daten aus Visu und Logik stimmen nicht überein, da der LBS auf ner VM läuft zum testen)
Und so in der Logik:
a.JPG
Im Grunde funktioniert der LBS.
Allerdings gibt es ein Problem, dass wenn der Rückmeldewert E2 bereits kleiner als alle der 3 Eingänge (E4, E6, E8) ist. Dann hängt der LBS in einer Dauerschleife.
Hat jemand eine Ahnung/Tipp wie man den Durchlauf dann beenden kann?
Danke und Gruß
PHP-Code:
###[DEF]###
[name =Verzögerung 3-fach ]
[e#1 TRIGGER=Trigger ]
[e#2 =RM Wert ]
[e#3 =Dauer Verzögerung 1 ]
[e#4 =Wert nach Verzögerung 1 ]
[e#5 =Dauer Verzögerung 2 ]
[e#6 =Wert nach Verzögerung 2 ]
[e#7 =Dauer Verzögerung 3 ]
[e#8 =Wert nach Verzögerung 3 ]
[a#1 = ]
[a#2 = ]
[a#3 = ]
[v#1 =10000 ]
[v#2 =10000 ]
[v#3 =10000 ]
###[/DEF]###
###[HELP]###
###[/HELP]###
###[LBS]###
<?
function LB_LBSID($id) {
if ($E=logic_getInputs($id)) {
if (!isEmpty($E[1]['value']) && $E[1]['refresh']==1) {
logic_setVar($id,1,(getMicrotime()+($E[3]['value']/1000)));
logic_setVar($id,2,(getMicrotime()+($E[3]['value']/1000)+($E[5]['value']/1000)));
logic_setVar($id,3,(getMicrotime()+($E[3]['value']/1000)+($E[5]['value']/1000)+($E[7]['value']/1000)));
logic_setState($id,1,$E[3]['value']);
}
if (logic_getState($id)==1) {
if (getMicrotime()>=logic_getVar($id,1) and ($E[2]['value']>=$E[4]['value'])) {
logic_setOutput($id,1,$E[4]['value']);
logic_setState($id,1,$E[5]['value']);
}
if (logic_getState($id)==1) {
if (getMicrotime()>=logic_getVar($id,2) and ($E[2]['value']>=$E[6]['value'])) {
logic_setOutput($id,2,$E[6]['value']);
logic_setState($id,1,$E[7]['value']);
}
if (logic_getState($id)==1) {
if (getMicrotime()>=logic_getVar($id,3) and ($E[2]['value']>=$E[8]['value'])) {
logic_setOutput($id,3,$E[8]['value']);
logic_setState($id,0);
}
} }}
}
}
?>
###[/LBS]###
###[EXEC]###
<?
?>
###[/EXEC]###
Kommentar