Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. History Adpater (History vs. influxdb vs SQL)

    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

    History Adpater (History vs. influxdb vs SQL)

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

      endlich habe ich etwas Zeit gefunden um mich um meine Wunschliste zu kümmern. Ich habe den SQL-Adapter als Vorlage genommen und erweitert:

      • mit "node-persist" werden alle gewählten Daten gecached und jeweils alle 10min lokal persistiert.

      • In Intervallen von X Minuten werden die gecachten Daten in die SQL Datenbank geschrieben (wenn diese erreichbar ist [1])

      • Zum Abrufen der Historieserten Daten gibt's dann zwei Vairanten

      • DB ist verfügbar: Daten werden per SQL aus der DB gelesen

      • DB nicht verfügbar: Daten werden aus dem Cache gelesen (soweit dort verfügbar)

      zum Testen:

      original SQL-Adapter deinstallieren und mit diesem ersetzen

      npm install https://github.com/dschaedl/iobroker.sq … ll/master/

      Wichtig: im MySQL Schema habe ich in den Datentabellen eine Spalte "dt" vom Datentyp "datetime" eingefügt um ein lesbares Datum in der DB zu haben.

      -> ALTER TABLE iobroker.ts_number ADD COLUMN dt DATETIME NULL AFTER q; (für ts_number, ts_boolean, ts_string)

      ein paar Details:

      • Die gecachten Werte werden nach dem Transfer in die DB nicht gelöscht, sondern nur markiert; damit beim Abrufen ohne DB genügend Daten zurück kommen

      • Ein Aufräum-Job löscht die gecachten Daten nach X Tagen (lässt sich konfigurieren)

      • Das überspielen der Daten in die SQL-DB findet synchron statt; Asynchron/parallel ist der Raspi rasch überfordert mit der grossen Menge an Daten.

      • Ich arbeite mit MySQL. Die anderen Schemen habe ich aktuell nicht berücksichtigt.

      • [1] Ich habe es nicht hingekriegt einen SQL-Verbindungsfehler zu fangen, ohne dass der Adapter beendet wird. Als Workaorund macht der Adapter nun einen 'Ping' um zu überprüfen ob der PC mit der MySQL DB am laufen ist -> nehme gerne Tips entgegen.

      • Der Timestamp in der DB enspricht dem ts-Attribut des ioBroker States (was leider nicht einem Javascript Date entspricht)

      ==> Bitte Vorsicht mit diesem Adapter; es ist eine erste Version eines Updates. Wenn ihr wichtige Daten in der DB habt, unbedingt vorher backuppen.

      viele Grüsse

      Daniel

      1 Reply Last reply Reply Quote 0
      • S
        Solear last edited by

        Sehr interessantes Thema, Danke! Auch die Lösung mit dem langen cachen der Daten für einen externen Datenbankrechner ist clever gemacht.

        Was spricht denn gegen eine SQL-Versionauf dem Raspi selbst? Also dem Raspberry 3 mit zB 32 GB Speicherkarte (Class 10 UHD). Sollte doch problemlos reichen, oder? Würde gerne diesen Raspi 3 mit iobroker betreiben und allen Diensten, samt Weboberfläche für den 7'' Raspi-Touchscreen. Angebunden an einem 2. Raspi mit Homematic.

        1 Reply Last reply Reply Quote 0
        • Bluefox
          Bluefox last edited by

          @Dschaedl:

          endlich habe ich etwas Zeit gefunden um mich um meine Wunschliste zu kümmern. Ich habe den SQL-Adapter als Vorlage genommen und erweitert:

          • mit "node-persist" werden alle gewählten Daten gecached und jeweils alle 10min lokal persistiert.

          • In Intervallen von X Minuten werden die gecachten Daten in die SQL Datenbank geschrieben (wenn diese erreichbar ist [1])

          • Zum Abrufen der Historieserten Daten gibt's dann zwei Vairanten

          • DB ist verfügbar: Daten werden per SQL aus der DB gelesen

          • DB nicht verfügbar: Daten werden aus dem Cache gelesen (soweit dort verfügbar)

          zum Testen:

          original SQL-Adapter deinstallieren und mit diesem ersetzen

          npm install https://github.com/dschaedl/iobroker.sq … ll/master/

          Wichtig: im MySQL Schema habe ich in den Datentabellen eine Spalte "dt" vom Datentyp "datetime" eingefügt um ein lesbares Datum in der DB zu haben.

          -> ALTER TABLE iobroker.ts_number ADD COLUMN dt DATETIME NULL AFTER q; (für ts_number, ts_boolean, ts_string)

          ein paar Details:

          • Die gecachten Werte werden nach dem Transfer in die DB nicht gelöscht, sondern nur markiert; damit beim Abrufen ohne DB genügend Daten zurück kommen

          • Ein Aufräum-Job löscht die gecachten Daten nach X Tagen (lässt sich konfigurieren)

          • Das überspielen der Daten in die SQL-DB findet synchron statt; Asynchron/parallel ist der Raspi rasch überfordert mit der grossen Menge an Daten.

          • Ich arbeite mit MySQL. Die anderen Schemen habe ich aktuell nicht berücksichtigt.

          • [1] Ich habe es nicht hingekriegt einen SQL-Verbindungsfehler zu fangen, ohne dass der Adapter beendet wird. Als Workaorund macht der Adapter nun einen 'Ping' um zu überprüfen ob der PC mit der MySQL DB am laufen ist -> nehme gerne Tips entgegen.

          • Der Timestamp in der DB enspricht dem ts-Attribut des ioBroker States (was leider nicht einem Javascript Date entspricht)

          ==> Bitte Vorsicht mit diesem Adapter; es ist eine erste Version eines Updates. Wenn ihr wichtige Daten in der DB habt, unbedingt vorher backuppen.

          viele Grüsse

          Daniel `
          Eine tolle Erweiterung. Ich denke, falls Caching konfigurierbar währe, dann konnte es in Main rein fließen.

          Wenn du so fit bist, kannst du ein Message mit messagebox implementieren, die beliebige quieries ausführen lässt?

          sendTo('sql.0', 'query', 'select * from bla', function(result){

          // Array

          });

          1 Reply Last reply Reply Quote 0
          • C
            crepp last edited by

            Hallo,

            Ich weiss nicht ob ich in diesem Thread richtig bin, aber wenn nicht, müsste der Admin verschieben…

            Habe bei mir auf SQL History umgestellt. Konfig der DB und sonstige Einrichtung hab ich nach Anleitung gut hinbekommen. Habe aber bei der Einstellung der geloggten Datenpunkte Probleme. Ich kann die Punkt "aktivieren" nicht speichern. (siehe Anhang) Ich denke dass ist ein Berechtigungsproblem ?!

            Ein Beispiel-State würde problemlos gespeichert u. ich kann ihn auch über Rickshaw anzeigen lassen.

            Nur bei neuen Daten hab ich Probleme.

            Wäre dankbar für Unterstützung.

            crepp
            686_err.png

            1 Reply Last reply Reply Quote 0
            • F
              frost last edited by

              @mctom:

              MySQL

              …

              • es wird eng auf RasPi2

              Michael `

              Von welchem Gesichtspunkt aus, wird es eng? CPU-Power, RAM oder Festspeicher?

              Bin auch gerade am überlegen, ob ich die History auf DB umstellen soll.

              1 Reply Last reply Reply Quote -1
              • D
                DiJaexxl last edited by

                Ich habe eine SQL DB auf meinem NAS laufen.

                Klappt perfekt!

                1 Reply Last reply Reply Quote 0
                • F
                  frost last edited by

                  Hi DiJ,

                  was ist deine NAS für ein System (vergleichbar mit Rpi3)?

                  Vom Gefühl her: Loggst du viel/mittel/wenig Datenpunkte?

                  1 Reply Last reply Reply Quote 0
                  • J
                    jans_ios last edited by

                    Moin moin!

                    Ich habe (dämlicherweise) mit einer SQLite-DB angefangen und dort bereits Monate von Daten. Ich würde gerne umstellen auf MySQL von meinem 24/7-laufenden NAS. In die DB schreiben klappt, aber wie kann ich die bisherigen Daten der SQLite übernehmen?

                    Meine bisherigen Recherchen ergaben keine wirklich sinnvollen Migrationswege, der Adapter selbst "spricht" aber ja sowohl SQLite als auch MySQL - könnte der evtl. eine Art Copy-Job im Konfig-Bereich erhalten? Wäre doch eine Idee, oder?

                    Danke!

                    Gruß, Jan

                    1 Reply Last reply Reply Quote 0
                    • apollon77
                      apollon77 last edited by

                      Du musst die Daten manuell übernehmen …

                      Ich würde eine zweite SQL-Instanz anlegen , auf die MySQL einrichten um die DB-Struktur anzulegen.

                      Dann musst du schauen ob es Tools gibt die dir die Daten aus der SQLite exportiern lassen und dann kannst Du das in die MySQL importieren.

                      Beispiel (Google gefunden): https://stackoverflow.com/questions/186 ... 3-to-mysql

                      1 Reply Last reply Reply Quote 0
                      • R
                        ratte-rizzo last edited by

                        Moin

                        Also bei der Entscheidungsfindung möchte ich auch noch einmal kurz meine Erfahrung beisteuern: Ich habe am 7. September vom History Adapter auf SQL umgestellt. Das ganze "frisst" etwa 1GB Arbeitsspeicher auf meinem Rock64, dafür ist es aber deutlich entspannter bei der Prozessorlast, wenn mal wieder alle Flot-Diagramme gleichzeitig aktualisieren.

                        Flot Chart Mem.png
                        Flot Chart CPU.png

                        Lieben Gruß
                        Daniel

                        1 Reply Last reply Reply Quote 0
                        • A
                          Alexxx2005 last edited by

                          Hallo

                          Verstehe ich das dann richtig das mysql besser ist als influx ? Ist vielseitiger (zum weiter arbeiten) und auch die Prozessorbelastung ?

                          Grüße Alex

                          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

                          615
                          Online

                          31.9k
                          Users

                          80.1k
                          Topics

                          1.3m
                          Posts

                          13
                          17
                          8893
                          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