NEWS
[gelöst]Mit Verzögerung Wert schreiben
-
Hallo Zusammen,
ich habe die Logik mit dem timeout immer noch nicht ganz verstanden. Ich lasse mir alle 5min einen Wert aus dem Internet abrufen und schreibe mir den in eine Variable WERT (Zahl). Wenn ich diesen in eine Datenbank schreibe, dann sehe ich, dass nicht nur der tatsächliche Wert, sondern auch immer ein Wert 0 mitübertragen wird. Den würde ich gerne "abfangen".
Problem: Der Wert kann auch tatsächlich 0 sein.
Idee: Mein Ansatz wäre jetzt, ich würde den Wert zeitersetzt schreiben. Wie muss der Code-Schnipsel aussehen, wenn ich den Wert 0 nur in die Variable WERT schreiben will, wenn dieser sich z.B. für 5sek nicht ändert? Ansonsten setze den realen Wert.danke
Marcus -
@mguenther
du versuchst mE ein Symptom zu behandeln, anstatt doe ursache zu finden.
Warum schreibt es den immer 0. Den Zeitwerten nach schreibt er genau 1ms immer vorher die 0 bevor er den richtigen Wert schreibt.
Zeig mal deinen Code. Evtl. ist da etwas krumm.
Falls es tatsächlich nicht beheben lässt, überlege dir mal anhand welcher Kriterien der Code feststellen kann welches nun der richtige Wert ist.
bspw 0 oder 1259. du hast ja geschrieben 0 kann auch sein. -
@OliverIO
der Wert wird über den Adapter tankerkoenig so übermittelt - und ich reagiere bei Änderung des Wertes. Und der Wert wird alle 5min übertragen und springt am Anfang immer auf den Wert 0 - da kann ich gar nichts anpassen. -
@OliverIO
und der erste Wert ist immer die "falsche" 0, der richtige Wert ist immer der 2. -
@mguenther sagte in Mit Verzögerung Wert schreiben:
da kann ich gar nichts anpassen.
sicher???
Wie sieht denn deine Konfig hier aus?
-
@Homoran
natürlich nicht so... Der Haken beim Zurücksetzen war noch drin.... Ich habe ihn rausgenommen und teste. Glaubt mir, ich habe alle Einstellmöglichkeiten und Anleitungen zum Adapter gelesen und war mir sicher, alles richtig eingestellt zu haben Man sieht den Wald vor lauter Bäumen nicht...Unabhängig davon, wie kann ich denn einen Wert, wenn er sich nicht ändert, erst nach einer gewissen Zeit schreiben?
-
@mguenther sagte in Mit Verzögerung Wert schreiben:
wie kann ich denn einen Wert, wenn er sich nicht ändert, erst nach einer gewissen Zeit schreiben?
wenn ich wüsste was du GENAU willst.
Im History Adapter z.B. kann man einstellen: "nur Änderungen loggen" und dann noch "trotzdem alle x Sekunden bei gleichem Wert"
-
@Homoran
ich meinte eigentlich einen datenpunkt schreiben. Geht mir gar nicht so um die Darstellung mittels der Daten aus history oder sql. Ich habe die Logik bei javascript an der Stelle einfach noch nicht verstanden, wie ich z.B. über einen "timer" erst nach einer Weile einen sich nicht ändernden Wert schreibe.
Bsp. Ein Sensor hat den Wert 5. Jetzt ändert sich dieser Wert für z.B. 10sec nicht, dann soll er in eine Variable bzw. datenpunkt geschrieben werden. Ändert er sich aber innerhalb der 10sec, dann nicht.Jetzt klarer?
-
@mguenther sagte in Mit Verzögerung Wert schreiben:
Jetzt klarer?
Ja
Ich bin weiß Gott nicht der Skripter vor dem Herrn.
Aber ich fürchte du musst dann alle 10 Sekunden den Wert abfragen und mit dem letzten Wert vergleichen.Die Verzögerung schreibt nur Verzögert den "alten" Wert.
Oder du musst auf Änderung triggern und die Zeit zwischen den Änderungen berechnen.
-
@mguenther sagte in Mit Verzögerung Wert schreiben:
ändert sich dieser Wert für z.B. 10sec nicht, dann soll er in eine Variable bzw. datenpunkt geschrieben werden. Ändert er sich aber innerhalb der 10sec, dann nicht.
var timer; on(idQuelle, function(dp) { // triggert auf Wertänderung if(timer) clearTimeout(timer); // stoppt Timeout, wenn Wertänderung innerhalb der Verzögerungszeit timer = setTimeout(function() { setState(idZiel, dp.state.val); }, 10000); });
-
@paul53
danke - verflucht nochmal...