NEWS
[Frage] Subscription bei gleichem Werten vom Adapter?
-
Ich glaube man muss mich komplett neu anlernen
Ich möchte ein Subscription ausführen, wenn vom Parser Adapter ein Wert neu im Objekt abgelegt wurde, auch wenn der Wert identisch ist mit dem vorherigen.
D.h. auf Änderung change: 'any' reagieren.
Der Code:
on({id: idParser, change: "any"}, function (obj) { // irgendetwas }
reagiert allerdings nur, wenn sich der Wert geändert hat.
Wenn man History für das Objekt aktiviert, sieht man, dass im eingestellten Zyklus vom Parser Adapter immer der gleiche Wert ins Objekt geschrieben wird.
-
on({id: idParser, change: "any"}, function (obj) { // irgendetwas }
reagiert allerdings nur, wenn sich der Wert geändert hat. `
Ändert sich der Zeitstempel (ts) des Datenpunktes ?Wenn ja, sollte getriggert werden.
Mein Test:
on({id: "javascript.1.Test.Checkbox"/*Test.Checkbox*/}, function(dp) { log(dp.state.val + ' ' + dp.state.ts); });
21:27:33.810 [info] javascript.1 script.js.common.Tests: registered 1 subscription and 0 schedules 21:27:53.320 [info] javascript.1 script.js.common.Tests: false 1513196873320 21:28:20.503 [info] javascript.1 script.js.common.Tests: false 1513196900503 21:33:08.224 [info] javascript.1 script.js.common.Tests: false 1513197188220
-
Ändert sich der Zeitstempel (ts) des Datenpunktes ?
Wenn ja, sollte getriggert werden. `
Der Zeitstempel ändert sich nicht.
Nach jedem Abfragezyklus taucht aber ein neuer Wert im History auf. D.h. vom Adapter kommt was.
Irgendetwas mit ACK oder von wo was kommt (vom Adapter) noch in der Subscription ergänzen?
-
Mein Test:
on({id: "javascript.1.Test.Checkbox"/*Test.Checkbox*/}, function(dp) { log(dp.state.val + ' ' + dp.state.ts); }); ```` `
Bei Skripten funktioniert es bei mir auch.
Ich habe eine Abfrage (Version Navigations-SW) vom Skript auf den Parser Adapter umgestellt (nur eine Zeile statt ein Skript. Keine Gefahr, dass beim Fehler im Skript der Javascript-Adapter neu startet). Vorher beim Skript hat das auch einwandfrei funktioniert, wie in zig anderen Skripten auch. Beim Adapter bin ich drüber gestolpert, dass es nicht funktioniert.
-
Der Zeitstempel ändert sich nicht. `
Solange der Zeitstempel konstant bleibt wird in <u>keinem Fall</u> getriggert.
@ruhr70:Nach jedem Abfragezyklus taucht aber ein neuer Wert im History auf. D.h. vom Adapter kommt was. `
Das kommt kommt bestimmt nicht vom Parser-Adapter. Die Zeiteinträge nimmt der History-Adapter vor.
@ruhr70:Irgendetwas mit ACK oder von wo was kommt (vom Adapter) noch in der Subscription ergänzen? `
Wenn irgend etwas am state des Datenpunktes verändert wird, wird auch der Zeitstempel aktualisiert. -
Solange der Zeitstempel konstant bleibt wird in <u>keinem Fall</u> getriggert.
@ruhr70:Nach jedem Abfragezyklus taucht aber ein neuer Wert im History auf. D.h. vom Adapter kommt was.
Das kommt kommt bestimmt nicht vom Parser-Adapter. Die Zeiteinträge nimmt der History-Adapter vor.
Hallo Paul, wie immer für Dein Engagement dankbar!
Anders formuliert. Das der History Adapter einen Eintrag vornimmt, inkl. Zeit, macht er meiner Meinung nach nur, wenn er auch einen Wert empfängt.
Ich bin der ganzen Sache noch nicht im Reinen. Das Verhalten Objekt und History passt nicht zusammen.
Ich glaube auch nicht, dass der History-Adapter vorher prüft, ob genau der Wert, der gerade von ihm ausgelesen wurde schon im Objekt steht und dann nicht wieder den gleichen Wert schreibt. Wie bei den anderen Adaptern sollte einfach wieder der gleiche Wert ins Objekt geschrieben werden.
-
Wenn Du in der History-Konfiguration des Datenpunktes unter "gleiche Werte aufzeichnen(s)" einen Wert ungleich 0 eingetragen hast, erzeugt History die Einträge. Dein Bild sieht so aus, als wäre eine 4 eingetragen.
-
Wenn Du in der History-Konfiguration des Datenpunktes unter "gleiche Werte aufzeichnen(s)" einen Wert ungleich 0 eingetragen hast, erzeugt History die Einträge. Dein Bild sieht so aus, als wäre eine 4 eingetragen. `
ups… :roll:
Danke Paul. Dann habe ich diese Einstellung beim History-Adapter mal endlich verstanden
-
Dann habe ich diese Einstellung beim History-Adapter mal endlich verstanden `
@[url=http://www.iobroker.net/docu/?page_id=144⟨=de#Default_Einstellungen_fuer_Zustaende:Doku"]gleiche Werte aufzeichnensollen bei gleichem Wert von Zeit zu Zeit trotzdem diese (unveränderten) Werte gespeichert werden, kann hier eine Zeitspanne in Sekunden festgelegt werden, wie häufig dieses geschehen soll. Dementsprechend bedeutet die Eingabe 0, dass kein doppelter Wert gespeichert werden soll. `
Gruß
Rainer