NEWS
wie subscribe ?
-
Hallo liebe Programmergemeinde,
wie mache ich am Besten einen subscribe richtig, wenn ich möchte daß erst ausgelöst wird, wenn sich der neue Werte um mehr als 200 vom vorherigen unterscheidet ?
on({id: 'hm-rpc.0.xxx.1.LUX', ??? , change: 'ne', logic: 'and' }, function (obj) { ... });
Danke im Voraus für die Antwort !
und LG
Andreas -
@Zamanis sagte:
wenn sich der neue Werte um mehr als 200 vom vorherigen unterscheidet ?
on('hm-rpc.0.xxx.1.LUX', function (dp) { // triggert bei Wertänderung if(Math.abs(dp.state.val - dp.oldState.val) > 200) { ... } });
-
Das geht natürlich, aber jetzt wird bei jeder Änderung ausgelöst und dann erst geprüft, ober der Wert mehr als 200 unterscheidlich ist. Das möchte ich nicht, sondern dass er erst auslöst, wenn Wert unterschiedlich 200 zu altem Wert...
-
@Zamanis sagte in wie subscribe ?:
dass er erst auslöst, wenn Wert unterschiedlich 200 zu altem Wert...
Du erwartest zu viel von der Trigger-Funktion. Außerdem bedeutet es, dass ein Sprung von > 200 Lux erfolgen muss, damit getriggert wird.
Wenn allerdings die Aktion ausgeführt werden soll, wenn die Wertdifferenz zur letzten Aktion > 200 Lux beträgt, kann man ohnehin nicht auf die Trigger-Werte zurückgreifen.var lux = getState('hm-rpc.0.xxx.1.LUX').val; on('hm-rpc.0.xxx.1.LUX', function (dp) { // triggert bei Wertänderung if(Math.abs(dp.state.val - lux) > 200) { lux = dp.state.val; ... } });
-
@Zamanis sagte in wie subscribe ?:
Das geht natürlich, aber jetzt wird bei jeder Änderung ausgelöst und dann erst geprüft, ober der Wert mehr als 200 unterscheidlich ist. Das möchte ich nicht
Aber genau das macht der Adapter hinter den Kulissen für die anderen Trigger-Bedingungen auch. Wenn du Logik möchtest, die der Adapter nicht selbst kann, musst du dich also selbst drum kümmern.
-
@ AlCalzone : Mir geht es um resourcenschonende Programmierung. Wenn letztendlich der Adapter hinter den Kulissen das Gleiche tut, gebe ich Dir recht, dann macht es keinen Unterschied, ob der Adapter dies prüft oder ich in der Programmierung...
-
@paul53 :
Danke Dir für die Antworten. So wie Dein code-Beispiel ist, hattee ich es im Vorfeld auch schon gelöst. Ich wollte nur wissen, ob es einen 'besseren' Weg gibt, da mir nicht klar ist, wie die Datenbanktrigger ablaufen...
LG