Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. <gelöst> SQL-Adapter benutzt Blockzeit nicht

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    <gelöst> SQL-Adapter benutzt Blockzeit nicht

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      Fritz 0 last edited by Fritz 0

      bei dem SQL-Adapter habe ich versucht es einzustellen, dass nur alle 60 Sekunden ein Wert protokolliert werden soll. Das ist für mich vollkommen ausreichend und würde sonst die Datenbank sprengen. Die Blockzeit wurde auf 60000 ms und "Trotzdem gleiche Werte aufzeichnen" auf 60 s gestellt. Trotzdem werden die Werte öfter protokolliert, je nach shelly zwischen 2x pro Minute bis im Sekundentakt.

      Aufgefallen ist mir dabei auch, dass Werte von unterschiedlichen Quellen kommen (betrifft hauptsächlich den shelly-Adapter, zeitweise auch beim homematic-Adapter):
      systemadapter.shelly.0
      sql.0
      shelly.0

      Das kann ich mir auch nicht erklären.

      Das System ist seitens OS und iobroker auf dem aktuellsten Stand (Auswertung von iob_diag):
      Operatingsystem: Debian GNU/Linux 12 (bookworm)
      Installation: Native
      Timezone: Europe/Berlin
      User-ID: 0
      X-Server: false
      Boot Target: multi-user.target

      Pending OS-Updates: 0
      Pending iob updates: 0

      Nodejs-Installation: /usr/bin/nodejs v18.20.4
      /usr/bin/node v18.20.4
      /usr/bin/npm 10.7.0
      /usr/bin/npx 10.7.0

      ioBroker Core: js-controller 6.0.11
      admin 7.0.23

      ioBroker Status: iobroker is running on this host.

      Hat jemand eine Idee, ob es sich um einen Fehler in der Konfiguration handelt? Ist das Verhalten bekannt? Ich habe keine aktuellen Beiträge dazu gefunden, der "aktuellste" war von 2023, in dem ein User die Frage gestellt hat, ob auch andere User ein Problem beim SQl-Adapter haben, dass die Blockzeit, nach einem Update auf JS 5.0.12, nicht mehr berücksichtigt wurde.

      Das Verhalten habe ich beim history- als auch SQL-Adapter und ich bin da etwas ratlos...
      Laut Doku müssten die Einstellungen korrekt sein:

      Auszug aus der Doku:
      Blockzeit – Definiert, wie lange nach dem Speichern des letzten Werts kein weiterer Wert gespeichert wird. Wenn die angegebene Zeit in Millisekunden abgelaufen ist, wird der nächste Wert protokolliert, der alle anderen Prüfungen erfüllt.
      Nur Änderungen aufzeichnen – Diese Funktion stellt sicher, dass nur geänderte Werte protokolliert werden, wenn sie andere Prüfungen erfüllen (siehe unten). Gleiche Werte werden nicht protokolliert.
      immer noch die gleichen Werte aufzeichnen (Sekunden) - Bei Verwendung von „Nur Änderungen aufzeichnen“ können Sie hier ein Zeitintervall in Sekunden einstellen, nach dem auch unveränderte Werte erneut in die Datenbank protokolliert werden. Sie können die vom Adapter neu protokollierten Werte anhand des Felds „von“ erkennen.

      Als Bypass kopiere ich aktuell von ein paar Datenpunkten die Werte alle 60 s in einen eigenen Datenpunkt (nach 0_Userdata), aber es wäre natürlich einfacher das direkt am (Quell-) Datenpunkt zu konfigurieren ....

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

        @fritz-0 wie soll man bei so viel Prosa helfen?

        Bitte alles relevante zeigen!

        https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1

        1 Reply Last reply Reply Quote 0
        • Marc Berg
          Marc Berg Most Active last edited by Marc Berg

          @fritz-0 sagte in SQL-Adapter benutzt Blockzeit nicht:

          Aufgefallen ist mir dabei auch, dass Werte von unterschiedlichen Quellen kommen (betrifft hauptsächlich den shelly-Adapter, zeitweise auch beim homematic-Adapter):
          systemadapter.shelly.0

          Einträge im History-Fenster, die mit "system..." beginnen, werden nicht zwingend auch in die Datenbank geschrieben. Das sieht zwar zunächst so aus, aber eingehende Daten müssen ja erstmal bewertet werden, ob sie die von dir eingegebenen Kriterien erfüllen oder nicht.

          Also: bitte prüfen, ob diese Daten wirklich in der DB sind. Entweder direkt in der SQL-DB oder zur Not nach einem Neustart des Adapters und nachfolgendem Aufrufen des History-Fensters.

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

            @marc-berg sagte in SQL-Adapter benutzt Blockzeit nicht:

            Einträge im History-Fenster

            die würde ich ja gerne sehen.

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

              @homoran

              danke für den Hinweis mit den Forenregeln, hätte ich mal vorher mal nach suchen sollen.
              Sorry.

              @marc-berg
              was ich aus Euren Antworten entnommen habe hat mich schon mal weitergebracht, denn bisher war mein Verständnis, dass das, was unter "Verlaufsdaten" angezeigt wird auch so in die entsprechende Datenbank (history, sql) geschrieben wird.

              Das habe ich nun kontrolliert und dem ist nicht so.

              Mit dieser Konfiguration vom SQL-Adapter bin ich mit dem Ergebnis zufrieden:
              ksnip_20240912-131257.png

              Damit ist die Protokollierung für mich brauchbar, es wird mind. alle 60s ein Wert geschrieben, geänderte Werte werden auch geschrieben. Und das ab und zu mal eine Minute übersprungen wird: damit kann ich leben (hatte ich bei einem anderen shelly)

              Auszug aus SQL-DB (shelly zur Leistungsmessung Balkonkraftwerk):

              +---------------------+--------+
              | TimeStamp           | val    |
              +---------------------+--------+
              | 12.09.2024 13:14:49 | 160.29 |
              | 12.09.2024 13:14:45 |  89.52 |
              | 12.09.2024 13:13:45 |  89.52 |
              | 12.09.2024 13:13:45 |  97.51 |
              | 12.09.2024 13:12:45 |  97.51 |
              | 12.09.2024 13:12:45 |  114.8 |
              | 12.09.2024 13:11:45 |  114.8 |
              | 12.09.2024 13:11:45 |  89.12 |
              | 12.09.2024 13:10:45 |  89.12 |
              | 12.09.2024 13:10:15 | 152.57 |
              | 12.09.2024 13:09:15 | 152.57 |
              | 12.09.2024 13:09:15 |  87.23 |
              | 12.09.2024 13:08:15 |  87.23 |
              | 12.09.2024 13:08:15 |  87.57 |
              | 12.09.2024 13:07:15 |  87.57 |
              | 12.09.2024 13:07:15 | 104.25 |
              | 12.09.2024 13:06:15 | 104.25 |
              | 12.09.2024 13:06:15 |  94.86 |
              | 12.09.2024 13:05:15 |  94.86 |
              | 12.09.2024 13:04:15 |  80.45 |
              +---------------------+--------+
              

              Besten Dank für Eure Unterstützung.

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

                @fritz-0 sagte in <gelöst> SQL-Adapter benutzt Blockzeit nicht:

                danke für den Hinweis mit den Forenregeln,

                Das sind nicht die Forenregeln. (Die sind umfangreicher 😁)
                Das sind Informationen was die Helfenden benötigen um helfen zu können.

                Was deine Konfiguration angeht, verstehe ich nicht warum du 60 Sekunden blockst und trotzdem den selben Wert nach 60 Sekunden neu schreiben lässt?

                Auch hier wäre die Liste aus der Konfiguration für SQL im Datenpunkt interessant

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

                  @homoran said in <gelöst> SQL-Adapter benutzt Blockzeit nicht:

                  Auch hier wäre die Liste aus der Konfiguration für SQL im Datenpunkt interessant

                  Die Speicherung von Werten alle 60s ist historisch bedingt. Seit mehreren Jahren lese ich alle 60s Daten der PV-Anlage und Heizung (bisher über einen Mix von Shellskripten und python-Skripten) aus, dafür habe ich zahlreiche Auswerteprogramme. Das auslesen und auswerten stelle ich gerade auf iobroker um, da möchte ich grundsätzlich nichts an dem Intervall ändern (auch wenn ich weniger protokollieren könnte).

                  Auf Deine Frage:

                  Auch hier wäre die Liste aus der Konfiguration für SQL im Datenpunkt interessant

                  würde ich Dir gerne antworten, wenn ich wüßte was genau ich Dir an Infos geben soll.
                  Soll die Liste ein Auszug zum Datenpunkt aus der DB sein? Passend zum Datenpunkt aus der Konfiguration vom SQL-Adapter? Oder meinst Du damit was ganz anderes?

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

                    @fritz-0 sagte in <gelöst> SQL-Adapter benutzt Blockzeit nicht:

                    Oder meinst Du damit was ganz anderes?

                    ja!

                    unter Objekte beim Datenpunkt im Einstellmenü für SQL die Liste der Messungen.

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

                      @homoran
                      ksnip_20240913-194722.png

                      Dazu die Einträge in der Datenbank:

                      | 13.09.2024 13:39:49 | 139.74 |
                      | 13.09.2024 13:39:35 | 282.99 |
                      | 13.09.2024 13:38:35 | 282.99 |
                      | 13.09.2024 13:38:35 | 301.15 |
                      | 13.09.2024 13:37:35 | 301.15 |
                      | 13.09.2024 13:37:35 | 298.33 |
                      | 13.09.2024 13:36:35 | 298.33 |
                      | 13.09.2024 13:36:35 | 299.15 |
                      | 13.09.2024 13:35:35 | 299.15 |
                      | 13.09.2024 13:34:54 | 297.62 |
                      | 13.09.2024 13:33:54 | 297.62 |
                      | 13.09.2024 13:33:45 | 238.71 |
                      | 13.09.2024 13:32:45 | 238.71 |
                      | 13.09.2024 13:32:42 | 272.59 |
                      | 13.09.2024 13:31:42 | 272.59 |
                      | 13.09.2024 13:31:35 | 286.09 |
                      | 13.09.2024 13:30:35 | 286.09 |
                      | 13.09.2024 13:30:10 | 281.71 |
                      | 13.09.2024 13:29:10 | 281.71 |
                      | 13.09.2024 13:29:05 | 171.23 |
                      | 13.09.2024 13:28:05 | 171.23 |
                      | 13.09.2024 13:28:05 | 309.13 |
                      | 13.09.2024 13:27:05 | 309.13 |
                      | 13.09.2024 13:27:05 |  309.3 |
                      | 13.09.2024 13:26:05 |  309.3 |
                      | 13.09.2024 13:26:05 |  308.7 |
                      | 13.09.2024 13:25:05 |  308.7 |
                      | 13.09.2024 13:25:05 | 320.16 |
                      | 13.09.2024 13:24:05 | 320.16 |
                      | 13.09.2024 13:24:05 | 320.63 |
                      | 13.09.2024 13:23:05 | 320.63 |
                      | 13.09.2024 13:23:05 | 250.64 |
                      

                      Das sieht so aus, dass die Werte der Verlaufsdaten identisch in die DB laufen, unabhängig von der Quelle. Wenn der Wert gleich ist wird nur ein Wert pro Minute protokolliert, bei Änderungen werden ggf. ein weiterer Werte protokolliert, was ich geshen habe aber kein zweiter geändert Wert inenrhalb von 60s, d.h. das mit der Blockzeit scheint zu funktionieren.

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

                        @fritz-0 ja, die Auswahl mit trotzdem nach 60 Sekunden gleiche Werte protokollieren führt zu dem ständigen auftreten doppelter Werte, wobei einer von SQL kommt.

                        ist das wirklich was du willst?

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

                          @homoran
                          wie kann ich das abstellen?

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

                            @fritz-0 sagte in <gelöst> SQL-Adapter benutzt Blockzeit nicht:

                            @homoran
                            wie kann ich das abstellen?

                            gleiche Werte trotzdem loggen dient dazu einen Chart erstellen zu können, bei dem es wegen nur selten geänderter Werte keine Linien geben würde.
                            Also erzeugt der SQL Adapter einen weiteren Eintrag, damit über die Länge der x-Achse mindestens 2, besser 3 Einträge existieren.
                            Dementsprechend trägst du bei dem Menüpunkt den passenden Wert ein.

                            Wenn du immer genug Werte bekommst muss da gar nichts eingetragen werden.

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

                              @homoran

                              Dementsprechend trägst du bei dem Menüpunkt den passenden Wert ein.
                              

                              Bei welchem Menüpunkt? Hast Du da mal ein Beispiel für mich?

                              Aktuell habe ich das jetzt so konfiguriert:

                              ksnip_20240914-081446.png

                              In den Verlaufsdaten seht das jetzt so aus:

                              ksnip_20240914-081954.png

                              Und in der Datenbank so:

                              +---------------------+-------+
                              | TimeStamp           | val   |
                              +---------------------+-------+
                              | 14.09.2024 08:17:04 | 19.11 |
                              | 14.09.2024 08:15:55 | 20.84 |
                              | 14.09.2024 08:14:51 | 18.76 |
                              | 14.09.2024 08:13:45 | 20.49 |
                              | 14.09.2024 08:12:40 |  18.7 |
                              | 14.09.2024 08:11:35 | 18.32 |
                              | 14.09.2024 08:10:32 | 19.35 |
                              | 14.09.2024 08:09:30 |  18.3 |
                              | 14.09.2024 08:08:26 | 17.98 |
                              | 14.09.2024 08:07:25 | 18.69 |
                              +---------------------+-------+
                              

                              Ich werde das jetzt erstmal so laufen lassen, wenn mir das (z. B. im Chart) nicht gefällt werde ich auf meine Lösung per javascipt zurückgreifen. Ich werde mir auch überlegen, ob der 60s Intervall wirklich notwendig ist, evtl. gehe ich auf 5 Minuten.

                              Dr. Bakterius Homoran 2 Replies Last reply Reply Quote 0
                              • Dr. Bakterius
                                Dr. Bakterius Most Active @Fritz 0 last edited by

                                @fritz-0 sagte in <gelöst> SQL-Adapter benutzt Blockzeit nicht:

                                Aktuell habe ich das jetzt so konfiguriert:

                                Dann hake mal 'Nur Änderungen aufzeichnen' an. Erst dann wird der Wert bei 'Trotzdem gleiche Werte aufzeichnen' schlagend. Den kannst du entweder leer lassen damit wirklich nur Änderungen in die Datenbank geschrieben werden, oder trägst einen passenden Wert ein um eine brauchbare Anzeige in z.B. Flot zu erhalten.

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

                                  @fritz-0 sagte in <gelöst> SQL-Adapter benutzt Blockzeit nicht:

                                  Aktuell habe ich das jetzt so konfiguriert:

                                  das ist ja jetzt nicht mehr was du bisher hattest!
                                  jetzt wird auch bei Aktualisierung geloggt.

                                  @fritz-0 sagte in <gelöst> SQL-Adapter benutzt Blockzeit nicht:

                                  Bei welchem Menüpunkt?

                                  schrieb ich doch!

                                  @homoran sagte in <gelöst> SQL-Adapter benutzt Blockzeit nicht:

                                  gleiche Werte trotzdem loggen

                                  der steht nach wie vor auf 60 Sekunden, ist jetzt aber nicht mehr aktiv, weil du jetzt sowieso alles loggst nachdem du den Haken entfernt hast.

                                  @dr-bakterius sagte in <gelöst> SQL-Adapter benutzt Blockzeit nicht:

                                  Dann hake mal 'Nur Änderungen aufzeichnen' an.

                                  Die Frage ist auch ob du alle Werte auf 10mW genau loggen willst.

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

                                    @dr-bakterius sagte in <gelöst> SQL-Adapter benutzt Blockzeit nicht:

                                    Dann hake mal 'Nur Änderungen aufzeichnen' an.
                                    

                                    Das hatte ich vorher aktiviert, aber inzwischen habe ich verschiedene Konfigurationen versucht, das ich da langsam durcheinander komme ...

                                    @homoran sagte in <gelöst> SQL-Adapter benutzt Blockzeit nicht:
                                    obige Aussage auch als Antwort auf Deine Anmerkung

                                    das ist ja jetzt nicht mehr was du bisher hattest!
                                    

                                    @homoran sagte in <gelöst> SQL-Adapter benutzt Blockzeit nicht:

                                    Die Frage ist auch ob du alle Werte auf 10mW genau loggen willst.
                                    

                                    das muss ich nicht, ich habe nur keinen Punkt gefunden, wo ich das für die Protokollierung "aufrunden" kann, ich habe nur das dazu gesehen:

                                    Runden Sie bei der Abfrage die Zahlen auf
                                    

                                    aber das greift ja nicht beim protokollieren....
                                    Wie lässt sich das mit den Nachkommastellen abstellen?

                                    Wäre es nicht evtl. sinnvoll, hier einen Wert einzustellen?
                                    ksnip_20240914-163817.png

                                    Das würde die Anzahl der zu protokollierenden Sätze doch auch reduzieren, oder?

                                    Ich werde jetzt mal strukturierter vorgehen und verschiedene Konfigurationen probieren und genauer protokollieren, welche Konfiguration welche Daten protokolliert. Da wäre es hilfreich, wenn ich einen Hinweis bekommen würde, wie sich Nachkommastellen verhindern lassen.

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

                                      @fritz-0 sagte in <gelöst> SQL-Adapter benutzt Blockzeit nicht:

                                      ich habe nur keinen Punkt gefunden, wo ich das für die Protokollierung "aufrunden" kann, ich habe nur das dazu gesehen:

                                      nicht aufrunden, das bringt doch nichts.
                                      Dann bekommst du sogar die selben Werte.

                                      @fritz-0 sagte in <gelöst> SQL-Adapter benutzt Blockzeit nicht:

                                      Das würde die Anzahl der zu protokollierenden Sätze doch auch reduzieren, oder?

                                      genau das meine ich!

                                      @fritz-0 sagte in <gelöst> SQL-Adapter benutzt Blockzeit nicht:

                                      Da wäre es hilfreich, wenn ich einen Hinweis bekommen würde, wie sich Nachkommastellen verhindern lassen.

                                      es geht nicht um die Nachkommastellen an sich, sondern, dass jede Änderung an der zwriten Nachkommastelle ein logging auslöst.

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

                                        @homoran

                                        es geht nicht um die Nachkommastellen an sich, sondern, dass jede Änderung an der zwriten Nachkommastelle ein logging auslöst.
                                        

                                        Die Daten kommen von einem shelly. Auf der Konfigurationsseite vom shelly wird der Wert ohne Nachkommastellen angezeigt, aber ich kann nicht einstellen, das ein Wert ohne Nachkommastellen per MQTT gesendet werden soll. Die "Genauigkeit" des Wertes wird nicht benötigt, kann ich aber nicht abstellen.

                                        In der Doku zum SQL-Adapter (V 3.0.1) zu den Einstellungen auf der Seite der Verbindung zur DB habe ich das gefunden:

                                        Round real to: Number of digits after the comma.
                                        

                                        Ich verwende die aktuelle Adapter Version 3.0.1 und da finde ich diese Konfigurationsmöglichkeit nicht. Auf einem alten iobroker-System läuft noch die Version 1.9.5 (ein Update lohnt sich nicht, das System wird abgelöst), und da gibt es diesen Punkt noch.

                                        Weisst Du was darüber? Aber vermutlich würde das auch nicht helfen zu Deiner Aussage wegen der Nachkommastellen

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

                                          @fritz-0 sagte in <gelöst> SQL-Adapter benutzt Blockzeit nicht:

                                          Weisst Du was darüber?

                                          nein, ich nutze kein SQL

                                          Aber es ist doch absolut unerheblich ob der Wert Nachkommastellen hat.
                                          Warum stört dich das?

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

                                            @homoran
                                            das mit den Nachkomastellen ist nun mal so, kann ich mit leben.

                                            Ich werde jetzt versch. Konfigurationen testen und schauen, ob da eine für mich passend ist.
                                            Sollte das nicht der Fall sein werde ich eine Datenübernahme (alle 60s/300s) auf einen Datenpunkt unter 0_Userdata durchführen.

                                            Damit ist die Sache hier im Forum erstmal für mich beendet, ich werde das Ergebnis dann hier nochmal schreiben.

                                            Ich danke Euch für die Anregungen und Hinweise, die mir mehr Verständnis für iobroker gebracht haben.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            888
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            21
                                            763
                                            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