NEWS
Javaskript: Auf Listeneintrag triggern
-
@paul53
Super.
Jetzt nur noch ein kleines Problem:Wie kann ich der Funktion xlog die Variable obj mitgeben?
on({id: Target_Raum, change: "ne"}, xlog(obj)) funktioniert nichton({id: Target_Raum, change: "ne"}, xlog) function xlog(obj){ let index = S_Raum.indexOf(obj.id) let SollTemp_akt = obj.state.val log('Neue '+obj.channelName+' Temperatur: '+SollTemp_akt) // ID: "alexa2.0.Smart-Home-Devices.bf2c0ac3-ee45-47ab-9151-d003cb270374" log('Index: '+index+' Raum: '+D_Raum[index]) }
-
@hanss said: Wie kann ich der Funktion xlog die Variable obj mitgeben?
Genau so, wenn Target_Raum das Array of IDs ist. Der Index muss dann auch von Target_Raum ermittelt werden.
on({id: Target_Raum, change: "ne"}, xlog);
Wenn xlog() auf mehrere Arrays anwendbar sein soll:
on({id: Target_Raum, change: "ne"}, function(obj) { xlog(obj, Target_Raum); });
-
@paul53
Das wäre ja genauso wie in meinem Beispiel.
Wenn ich das so mache, dann wird index -1. -
@hanss said: Wenn ich das so mache, dann wird index -1.
Ja, wenn Trigger-Array und Index-Array nicht identisch sind. Versuche es mal so:
function xlog(obj, index, names){ let SollTemp_akt = obj.state.val log('Neue '+obj.channelName+' Temperatur: '+SollTemp_akt) // ID: "alexa2.0.Smart-Home-Devices.bf2c0ac3-ee45-47ab-9151-d003cb270374" log('Index: '+index+' Raum: '+names[index]) } on({id: Target_Raum, change: "ne"}, function(obj) { xlog(obj, Target_Raum.indexOf(obj.id), D_Raum); });
-
@paul53 said in Javaskript: Auf Listeneintrag triggern:
@hanss said: Wie kann ich der Funktion xlog die Variable obj mitgeben?
Genau so, wenn Target_Raum das Array of IDs ist. Der Index muss dann auch von Target_Raum ermittelt werden.
on({id: Target_Raum, change: "ne"}, xlog);
Wenn xlog() auf mehrere Arrays anwendbar sein soll:
on({id: Target_Raum, change: "ne"}, function(obj) { xlog(obj, Target_Raum); });
Nur aus Interesse, für mich ist das sehr verwirrend:
Gibt es dafür einen Grund, dass man bei on( callback zwar bei function(obj) einen Parameter angeben
kann, aber nicht, wenn eine andere Funktion aufgerufen wird xlog? -
@hanss said: nicht, wenn eine andere Funktion aufgerufen wird xlog?
Das musste ich zu Anfang auch lernen: Das ist kein Funktionsaufruf, sondern eine Funktions-Referenz. Was an die Callback-Funktion übergeben wird, bestimmt die aufrufende Funktion on(id, callback).
function(obj) {}
ist eine anonyme Callback-Funktion, bei der angegeben wird, mit welchem Bezeichner (obj) die Übergabe von Parametern an die Funktion erfolgt.
-
@paul53 sagte in Javaskript: Auf Listeneintrag triggern:
Hallo paul53,
on({id: Target_Raum, change: "ne"}Der Trigger wird offensichtlich ausgelöst, wenn nicht alle Target_Raum gleich sind.
Wie erhalte ich einen Trigger, der nur dann auslöst, wenn sich ein oder mehrere Target_Raum verändert haben?
Also:
kein Trigger bei- Target_Raum [1,2,3,4,5,6,7,8]
- Target_Raum [1,2,3,4,5,6,7,8]
1* Trigger bei
- Target_Raum [1,2,3,4,5,6,7,8]
- Target_Raum [5,2,3,4,5,6,7,8]
1* Trigger bei
- Target_Raum [1,2,3,4,5,6,7,8]
- Target_Raum [5,0,9,4,5,6,7,8]
-
@hanss sagte: wenn sich ein oder mehrere Target_Raum verändert haben?
Verstehe ich nicht. Getriggert wird, wenn sich in einem Target_Raum der Wert (targetSetpoint) ändert.
-
Das Beispiel ist so gemeint:
00:01 Uhr Target_Raum1 = 1; Target_Raum2 = 2; Target_Raum3 = 3 .....
00:02 Uhr Target_Raum1' Target_Raum2'Target_Raum3' ......KEIN Trigger, wenn Target_Raum1 == Target_Raum1' && Target_Raum2 == Target_Raum2' ....
Trigger, wenn Target_Raum1 != Target_Raum1' || Target_Raum2 != Target_Raum2' ....Es wird aber offensichtlich ein Trigger ausgelöst, wenn Target_Raum1 != Target_Raum2
d.h. change: "ne" soll nur jeweils den selben Raum betreffen.
kein Trigger bei
00:01 Uhr Target_Raum [1,2,3,4,5,6,7,8]
00:02 Uhr Target_Raum' [1,2,3,4,5,6,7,8]1* Trigger bei
00:01 Uhr Target_Raum [1,2,3,4,5,6,7,8]
00:02 Uhr Target_Raum' [5,2,3,4,5,6,7,8]1* Trigger bei
00:01 Uhr Target_Raum [1,2,3,4,5,6,7,8]
00:02 Uhr Target_Raum' [5,0,9,4,5,6,7,8]Bitte um Nachricht, wenn es immer noch nicht klar ist, dann muß ich ein Beispiel programmieren.
-
@paul53
Entschuldige bitte, ich bin da einem Irrtum aufgesessen.
der on({id: Target_Raum, change: "ne"} Trigger bezieht sich tatsächlich
nur auf einen Target_Raum, so wie er soll.