NEWS
[gelöst] timeout in der Schleife
-
Guten Abend,
ich habe eine Verständnisfrage: Werden innerhalb eines ON-Triggers enthaltene Funktionen oder Variablen instanziert, also als eigene Funktion gesehen?
Ein Beispiel:
var SonoffAlertDevices = [ {Name: '3D Drucker', Objekt: 'sonoff.0.Ender.ENERGY_Power', ThresholdOn: 30, ThresholdOff: 5}, {Name: 'Test', Objekt 'sonoff.0.Test.ENERGY_Power', ThresholdOn: 30, ThresholdOff: 2} ]; for (var i=0; i<SonoffAlertDevices.length;i++) { on({id: SonoffAlertDevices[i].Objekt, change: 'ne'}, function (obj) { /*Device zerlegen*/ var objArr = obj.id.match(/(^.+)\.(.+)\.(.+)$/, ""); //Aufteilung in Pfad + Device + CMD var DeviceID=objArr[1]+"."+objArr[2]; var SonoffAlertDevice = SonoffAlertDevices.find(x => x.ObjektBase === DeviceID); //Im Array den richtigen Wert finden if (obj.state.val > SonoffAlertDevice.ThresholdOn) { log("läuft"); //hier mit cleartimeout(timeout) den timeout löschen } if (obj.state.val < SonoffAlertDevice.ThresholdOff) ) { log("fertig"); //hier timeout=timeout(...) setzen } }); }Ich möchte nun bei >log ("fertig")< mit Hilfe von timeout eine Abschaltung nach 10 Minuten realisieren, sofern nicht über das erste if-Statement erkannt wurde, dass wieder Strom verbraucht wird.
Wenn ich nun mit timeout=timeout(...) eine Variable setze, ist die dann beim erneuten Aufruf des on-Triggers innerhalb dieser Funktion eindeutig?
Oder anders gefragt: Ich habe im Array zwei Geräte deklariert. Würde, wenn das Gerät "Test" los läuft, die bereits gesetzte Variable "timeout" des Gerätes "3D Drucker" löschen?Vielen Dank
-
Guten Abend,
ich habe eine Verständnisfrage: Werden innerhalb eines ON-Triggers enthaltene Funktionen oder Variablen instanziert, also als eigene Funktion gesehen?
Ein Beispiel:
var SonoffAlertDevices = [ {Name: '3D Drucker', Objekt: 'sonoff.0.Ender.ENERGY_Power', ThresholdOn: 30, ThresholdOff: 5}, {Name: 'Test', Objekt 'sonoff.0.Test.ENERGY_Power', ThresholdOn: 30, ThresholdOff: 2} ]; for (var i=0; i<SonoffAlertDevices.length;i++) { on({id: SonoffAlertDevices[i].Objekt, change: 'ne'}, function (obj) { /*Device zerlegen*/ var objArr = obj.id.match(/(^.+)\.(.+)\.(.+)$/, ""); //Aufteilung in Pfad + Device + CMD var DeviceID=objArr[1]+"."+objArr[2]; var SonoffAlertDevice = SonoffAlertDevices.find(x => x.ObjektBase === DeviceID); //Im Array den richtigen Wert finden if (obj.state.val > SonoffAlertDevice.ThresholdOn) { log("läuft"); //hier mit cleartimeout(timeout) den timeout löschen } if (obj.state.val < SonoffAlertDevice.ThresholdOff) ) { log("fertig"); //hier timeout=timeout(...) setzen } }); }Ich möchte nun bei >log ("fertig")< mit Hilfe von timeout eine Abschaltung nach 10 Minuten realisieren, sofern nicht über das erste if-Statement erkannt wurde, dass wieder Strom verbraucht wird.
Wenn ich nun mit timeout=timeout(...) eine Variable setze, ist die dann beim erneuten Aufruf des on-Triggers innerhalb dieser Funktion eindeutig?
Oder anders gefragt: Ich habe im Array zwei Geräte deklariert. Würde, wenn das Gerät "Test" los läuft, die bereits gesetzte Variable "timeout" des Gerätes "3D Drucker" löschen?Vielen Dank
@Gwenselah
Ich habe das bisher mit einem Array für die Timer-Variablen gemacht.Die Zeilen 10 bis 14 verstehe ich nicht. Was soll dort erreicht werden ? Zeile 16 sollte so funktionieren:
if (obj.state.val > SonoffAlertDevices[i].ThresholdOn) { -
@Gwenselah
Ich habe das bisher mit einem Array für die Timer-Variablen gemacht.Die Zeilen 10 bis 14 verstehe ich nicht. Was soll dort erreicht werden ? Zeile 16 sollte so funktionieren:
if (obj.state.val > SonoffAlertDevices[i].ThresholdOn) {Danke für die schnelle Antwort, ich werds mal über ein Array probieren
Zeile 10-14 ermittelt den Objektpfad des TriggersBezüglich "if (obj.state.val > SonoffAlertDevices[i].ThresholdOn) {"
Bist Du sicher, dass Variable i noch zur Verfügung steht, wenn der Trigger losläuft? -
Danke für die schnelle Antwort, ich werds mal über ein Array probieren
Zeile 10-14 ermittelt den Objektpfad des TriggersBezüglich "if (obj.state.val > SonoffAlertDevices[i].ThresholdOn) {"
Bist Du sicher, dass Variable i noch zur Verfügung steht, wenn der Trigger losläuft?@Gwenselah sagte:
Bist Du sicher, dass Variable i noch zur Verfügung steht, wenn der Trigger losläuft?
Mal kurz getestet:

Javascript / Node.js kennt offenbar keine Unterprogramme, sondern kopiert alles. Deshalb auch der enorme RAM-Verbrauch.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden