Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst]Mit Verzögerung Wert schreiben

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst]Mit Verzögerung Wert schreiben

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mguenther last edited by mguenther

      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".
      84a34f0a-4ccf-4d76-b77f-a1c22a4cb1ef-grafik.png

      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

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @mguenther last edited by

        @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.

        M 2 Replies Last reply Reply Quote 0
        • M
          mguenther @OliverIO last edited by

          @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.

          Homoran 1 Reply Last reply Reply Quote 0
          • M
            mguenther @OliverIO last edited by mguenther

            @OliverIO
            und der erste Wert ist immer die "falsche" 0, der richtige Wert ist immer der 2.

            1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @mguenther last edited by

              @mguenther sagte in Mit Verzögerung Wert schreiben:

              da kann ich gar nichts anpassen.

              sicher???

              Wie sieht denn deine Konfig hier aus?
              Tanker_null.png

              M 1 Reply Last reply Reply Quote 0
              • M
                mguenther @Homoran last edited by

                @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?

                Homoran 1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @mguenther last edited by

                  @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"

                  M 1 Reply Last reply Reply Quote 0
                  • M
                    mguenther @Homoran last edited by mguenther

                    @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?

                    Homoran paul53 2 Replies Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators @mguenther last edited by

                      @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.

                      1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @mguenther last edited by paul53

                        @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);
                        });
                        
                        M 1 Reply Last reply Reply Quote 0
                        • M
                          mguenther @paul53 last edited by

                          @paul53
                          danke - verflucht nochmal...

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          795
                          Online

                          31.9k
                          Users

                          80.1k
                          Topics

                          1.3m
                          Posts

                          javascript
                          4
                          11
                          354
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo