NEWS
On ID Grundlage
-
Danke, das funktioniert. Dann muß ich das on id / Flankenerkennung in eine extra Script auslagern.
-
Das funktioniert. Habe ich schon getestet. In dem Script mit dem "interval" werden aber auch die vielen Befehle im Millisekundenbereich erzeugt. Ich habe jetzt die "on id"in ein kurzes Script ausgelagert. Da brauche ich eben ein paar Variablen/Objekte mehr. Das macht dem Raspi aber nichts aus. Wie es aussieht.
-
Das Beispiel von @paul53 macht genau das.
val: false, change 'ne'
Der Wert muss false (val: false) sein, und geändert (change 'ne') worden sein.Wird er zwischendurch nicht auf true gesetzt, gibt es keine fallende Flanke.
-
-
Es funktionieren beide Varianten. Nur eben nicht in meinem Hauptscript mit "interval".
Im extra Script kein Problem.@Laser sagte: mit "interval".
Wenn nicht per Trigger, sondern per Polling auf die Flanke reagiert werden soll, benötigt man eine Hilfsvariable:
const id = '0_userdata.0.Logik.TestZustand'; var lastVal = getState(id).val; function abfrage() { const val = getState(id).val; if(!val && lastVal) { // Aktion bei Flanke true --> false } lastVal = val; } setInterval(abfrage,2000); -
Ja, das Ganze kann man natürlich auch so machen. Ohne die tolle "on id" mit "change" ging es ja früher auch.
-
@paul53
dafür ist das ack da.const DP ="0_userdata.0.Logik.TestZustand"; createState(DP, 0, false, { // Datenpunkt wird angelegt name: 'TestZustand', desc: 'Logik.TestZustand', type: 'boolean', def: 'false', role: 'value' }); /*So macht man es, wenn die Flanke wechselt (true - false - true*/ on({id:DP,val:false,change: 'ne'}, function(dp){ console.log("fallende Flanke"); }); /*So macht man es, wenn die Flanke NICHT wechselt (false - false - false)*/ on({id:DP,val:false,change: 'any'}, function(dp){ if(!dp.state.ack){ console.log("fallende Flanke"); setState(DP, false , true); //ack setzen. } });