Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. zeitverzögertes Auswerten / Jitter

    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

    zeitverzögertes Auswerten / Jitter

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

      Hallo,

      ich errechne den Verbrauch einer PV Anlage als:
      Verbrauch= PV- Stromzähler.
      Als Trigger sind sowohl PV als auch Stromzähler eingetragen (beide kommen über Modbus der PV Anlage), weil sich jeder ändern könnten und einer konstant bliebe.
      Da die beiden Signale sich natürlich nicht genau parallel ändern, führt das zu etwas Jitter im Signal, weil im Abstand von wenigen ms 2x der Trigger kommt und zu unterschiedlichen Zeitpunkten die Differenz bebildet wird.
      Mit der Verzögerung im aktualiseren Block ändert sich nichts, weil es vermutlich einfach nur das Ergebnis verzögert schreibt.
      3854ef72-32d8-49ad-8daf-a4b2421870a0-grafik.png
      Ein Timeout Block wird das Problem vermutlich auch nicht beheben, es müsste grob so sein:
      Trigger 1 --> Totzeit 100ms, so dass Trigger 2 ausgeblendet wird, --> Berechnung durchführen (mit Werten 100ms nach Trigger1).

      Asgothian MartinP 2 Replies Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer @thaistatos last edited by

        @thaistatos
        Doch - ein timeout ist das was du brauchst:

        2a69556e-38d7-4384-9531-347cb3d300ad-image.png

        A.

        1 Reply Last reply Reply Quote 0
        • T
          thaistatos last edited by

          ist der Timeout Block (nach dem nicht) eine interne Variable?
          (ich finde die 7 verschiedenen rot / violett Schattierungen immer schwierig zu unterscheiden).

          Behebt das wirklich das Problem, der Trigger kommt ja trotzdem 2x kurz nacheinander.

          Asgothian paul53 2 Replies Last reply Reply Quote 0
          • Asgothian
            Asgothian Developer @thaistatos last edited by

            @thaistatos das ist eine Variable die du nicht explizit anlegen musst sondern die automatisch angelegt wird wenn du den timeout Block nutzt.
            Der trigger kommt 2 mal, aber die Berechnung findet 100 ms nach dem 1. Trigger statt, wenn der 2. Trigger innerhalb der 100 ms kommt dann wird der ignoriert, weil dann die Variable timeout einen Wert hat.

            A.

            1 Reply Last reply Reply Quote 1
            • paul53
              paul53 @thaistatos last edited by paul53

              @thaistatos sagte: ist der Timeout Block (nach dem nicht) eine interne Variable?

              timeout ist eine globale Variable. Es gibt sie auch in grün, nachdem der Timeout-Block in das Skript gezogen wurde.

              Blockly_temp.JPG

              @thaistatos sagte in zeitverzögertes Auswerten / Jitter:

              der Trigger kommt ja trotzdem 2x kurz nacheinander.

              Der zweite Trigger wird gesperrt, wenn er innerhalb von 100 ms nach dem ersten Trigger erfolgt.

              1 Reply Last reply Reply Quote 2
              • MartinP
                MartinP @thaistatos last edited by

                @thaistatos Ich glaube, über das gleiche Problem ist auch @haus-automatisierung gestolpert. In einem seiner Videos zeigt er javascript code, wie er die ganzen Trigger erst durch ein Javascript-Programm vorverarbeitet, bevor er daraus am Influx Adapter vorbei Datenreihen für die InfluxDB macht.

                VIelleicht finden sich da Anregungen, um das hier ja ähnlich gelagerte Problem zu lösen.

                haus-automatisierung 1 Reply Last reply Reply Quote 0
                • haus-automatisierung
                  haus-automatisierung Developer Most Active @MartinP last edited by

                  @martinp Du meinst das hier? https://www.youtube.com/watch?v=rTLQ15Fy85U

                  Bei mir führt einfach jede Änderung eines Datenpunktes zum speichern aller momentanen Werte. Und später nehme ich das dann mit InfluxDB-Tasks auseinander und verwerfe die ganzen alten (redundanten) Daten über die Retention Time auf dem Bucket.

                  1 Reply Last reply Reply Quote 0
                  • T
                    thaistatos last edited by

                    inspiriert durch
                    https://forum.iobroker.net/topic/13916/gelöst-suche-funktion-zum-entprellen-über-5-sec
                    und
                    https://forum.iobroker.net/topic/18638/gelöst-entprellen-von-schaltern/2

                    habe ich jetzt so nachgebaut:
                    9379a936-12cc-40bd-86a6-1a9fdf1c9574-grafik.png

                    Aber der Verzögerung Block macht wahrscheinlich was ähnliches, nur schöner.

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

                      @thaistatos sagte: habe ich jetzt so nachgebaut:

                      Problem: Die Berechnung erfolgt bereits mit dem ersten Trigger und deshalb passen die Werte zeitlich nicht zusammen.

                      In dieser Version erfolgt die Berechnung sofort nach dem zweiten Trigger (innerhalb 100 ms):

                      Blockly_temp.JPG

                      1 Reply Last reply Reply Quote 1
                      • T
                        thaistatos last edited by

                        muss in das zweite Kommentarfeld auch noch etwas eingetragen werden?

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

                          @thaistatos sagte: muss in das zweite Kommentarfeld auch noch etwas eingetragen werden?

                          Nein, das ist nur eine Erläuterung zum Verständnis. Seit JS Version 7.0.5 wird in dem Block nach Ablauf des Timeouts die Variable automatisch auf null gesetzt.

                          1 Reply Last reply Reply Quote 0
                          • T
                            thaistatos last edited by

                            muss er timeout noch initialisiert werden?
                            Mir ist noch nicht klar, warum die Berechnung erst mit dem zweiten Trigger startet?
                            Oder startet sie eher nach 100ms?

                            paul53 Homoran 2 Replies Last reply Reply Quote 0
                            • paul53
                              paul53 @thaistatos last edited by

                              @thaistatos sagte: warum die Berechnung erst mit dem zweiten Trigger startet?

                              Beim ersten Trigger ist timeout null und es wird der sonst-Zweig ausgeführt, also der Timeout gestartet. Beim zweiten Trigger läuft der Timeout und es wird der mache-Zweig ausgeführt, also die Berechnung.

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

                                @thaistatos sagte in zeitverzögertes Auswerten / Jitter:

                                Mir ist noch nicht klar, warum die Berechnung erst mit dem zweiten Trigger startet?

                                tut sie nicht, die Berechnung durchvden zweiten Trigger wird blockiert.

                                Deswegen

                                @paul53 sagte in zeitverzögertes Auswerten / Jitter:

                                Problem: Die Berechnung erfolgt bereits mit dem ersten Trigger und deshalb passen die Werte zeitlich nicht zusammen.

                                @thaistatos sagte in zeitverzögertes Auswerten / Jitter:

                                Oder startet sie eher nach 100ms?

                                ja

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

                                  @homoran sagte: tut sie nicht

                                  @thaistatos meint diese Version.

                                  Homoran 1 Reply Last reply Reply Quote 1
                                  • T
                                    thaistatos last edited by

                                    das setzt dann aber voraus, dass immer der der zweite Trigger kommt. Es kann ja auch nur Trigger 1 ausgelöst werden, dann würde gar nichts passieren.

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

                                      @thaistatos sagte: das setzt dann aber voraus, dass immer der der zweite Trigger kommt.

                                      Richtig. Kommt nicht immer ein zweiter Trigger? Dann muss die Verzögerung um 100 ms in Kauf genommen werden.

                                      1 Reply Last reply Reply Quote 0
                                      • T
                                        thaistatos last edited by

                                        sehr wahrscheinlich kommt auch Trigger 2, aber muss eben nicht.
                                        Ich will mit 100ms Verzögerung nach dem letzten Trigger die Berechnung ausführen.
                                        Also T1, 10ms später T2: Berechnung bei Zeitstempel 100ms nach T1.
                                        nur T1: Berechnung bei Zeitstempel 100ms nach T1.
                                        nur T2: Berechnung bei Zeitstempel 100ms nach T2.

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

                                          @thaistatos
                                          Das macht diese Version.

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

                                            @paul53 sagte:

                                            @thaistatos meint diese Version.

                                            du alter Editeur 😁

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            793
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            20
                                            630
                                            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