Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. History überarbeitet

    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 überarbeitet

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

      Moin,

      ich hab gestern mal testweise das SQL Logging aktiviert. MySQL liegt nicht mit auf dem Cubietruck, sondern auf einem BananaPI in meinem Netzwerk.

      Die Verbindung klappt erstmal problemlos. Ich hatte in einer alten Installation einige Werte über den history Adapter geloggt. Den musste ich wegen Speicherknappheit auf dem vorherigen Raspi2 deaktivierten. Ich hatte bloß den Adapter deaktiviert und anscheinend nicht das Logging aus den Datenpunkten entfernt. Nachdem mein ioBroker auf den Cubie (gleicher Hostname, gleiche IP) umgezogen ist (welcher mit 2GB mehr Speicher hat, aber anscheinend mangels CPU Kernen langsamer ist), habe ich den sql Adapter aktiviert.

      Neue Datenpunkte werden auf den ersten Blick korrekt geloggt. Aber die Datenpunkte, welche schonmal vorher für history aktiviert waren, werden nicht geloggt. Entweder schliesst sich das Fenster beim Klick auf Speichern nicht, oder es schliesst sich und das logging erfolgt nicht.

      Ich habe die Vermutung, das vorher in der DB nachgeschaut wird, ob Daten da sind. Da sie es nicht sind wird das ganze anscheinend ignoriert.

      Hier mal ein Auszug aus dem Log (ich wollte den Datenpunkt POWER loggen, welcher vorher schonmal für history aktiviert war):

      
      sql-0	2016-01-15 09:03:18	info	sendTo "getHistory" to system.adapter.admin.0 from system.adapter.sql.0: {"step":null,"error":null}
      sql-0	2016-01-15 09:03:18	info	No Data
      inMem	2016-01-15 09:03:18	debug	message messagebox.system.adapter.sql.0 messagebox.system.adapter.sql.0 command=getHistory, id=hm-rpc.1.MEQ00XXXX.1.POWER, end=1452845008, count=50, instance=sql.0, from=true, ack=true, q=true, use
      admin-0	2016-01-15 09:03:18	info	sendTo "getHistory" to system.adapter.sql.0 from system.adapter.admin.0: {"id":"hm-rpc.1.MEQ00XXXX.1.POWER","options":{"end":1452845008,"count":50,"instance":"sql.0","from":true,"ack":true,"q":true,
      

      Gruss Marco

      1 Reply Last reply Reply Quote 0
      • V
        vader722 last edited by

        Ich konnte das erstmal fixen, indem ich history wieder installiert habe und dann das Logging deaktivierte habe. Danach konnte ich es mit dem SQL Adapter wieder aktivieren…

        Gruss Marco

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

          Moin,

          ich versuche gerade mein History auf PostgreSQL umzustellen.

          Ich erhalte jedoch folgenden Fehler beim Schreiben von Ereignissen in die Tabelle "datapoints".

          "Cannot insert INSERT INTO datapoints (name, type) VALUES('hm-rpc.0.KEQ1111111.1.TEMPERATURE', 0);: error: null value in column "id" violates not-null constraint"

          Bisher bin ich davon ausgegangen, dass meine Einstellungen korrekt sind, allerdings kennt meine PostgreSQL Version v.9.3.4 noch keine Einstellung für "IDENTITY(1,1)". Hat das ggf. Einfluss auf die Adressierung der Tabelle(n)? Mein PostgreSQL läuft übrigens auf einem "Thecus NAS N4800eco"

          Freue mich über Tipps und Unterstützung 8-)

          Sofern weitere Infos?Details(Screenshots benötigt werden, liefere ich gern nach.
          1917_sql_log.jpg
          1917_postgresdatapointstabelle.jpg

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

            Hi,

            hast DU die Logs noch vom ersten Start der SQL Instanz?

            Da sollten die Tabellen angelegt worden sein. Postgres an sich mit:

            CREATE TABLE datapoints (id SERIAL NOT NULL PRIMARY KEY, name TEXT, type INTEGER);

            Das "SERIAL" ist ein Auto-Increment … dann sollte das an sich nicht passieren.

            Kannst Du ggf die Tabelle mal bitte löschen und mit oben genannter Query neu anlegen. Klappt es dann?

            Schau mal in sources, sollte ähnlich angelegt sein:

            CREATE TABLE sources (id SERIAL NOT NULL PRIMARY KEY, name TEXT);

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

              Moin appolon77,

              die Tabellen in PostgreSQL habe ich alle selbst manuell angelegt.

              Ich werde zunächst deinen Tip ausprobieren, die Tabelle löschen und versuchen sie neu algen zu lassen.

              Feedback kommt umgehend

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

                Warum denn das?

                Der Adapter macht das beim ersten Start selbst 🙂

                Dann prüfe bitte alle Tabellen. Die "originalen" Queries zum Anlegen findest du unter:

                https://github.com/ioBroker/ioBroker.sq … esql.js#L3 . die 5 CREATE TABLE Statements

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

                  Hallo appolon77,

                  zunächst die Frage ob ich etwas falsch mache?

                  Ich wollte den Befehl gemäß Screenshot ausführen und erhalte den ebenfalls angefühten Fehler.

                  (bitte ignoriere, dass die Tabelle "datapoints" noch da ist, der Fehler kommt auch wenn die Tabelle zuvor gelsöcht wurde).
                  1917_sql-befehlausf_hren.jpg
                  1917_sql-codefehler.jpg

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

                    @apollon77:

                    Warum denn das?

                    Der Adapter macht das beim ersten Start selbst 🙂 `
                    Das wußte ich da ja noch nicht 🙂

                    Ich hatte erst mit dem Verbindungsaufbau zu kämpfen, bis ich einen Hinweis fand, dass ich den externen Zugriff auf PostgreSQL erst in den Config -Dateien erlauben muss 8-)

                    Ich glaube du birngst mich aber auf den richtigen Weg.

                    Gemäß Beschreibung sind die ID`s der Tabellen "sources" und "datapoints" "Integer", ud so habe ich diese angelegt.

                    Laut Script legst Du diese allerdings als "Serial" an, und dadurch bekommt die Tabelle wohl erst den "Zähle"r?!

                    Nachtrag:

                    Vielleicht kann man in der Beschreibung "SERIAL" statt "Integer" schreiben?
                    1917_sql_beschreibung.jpg

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

                      Zu oben: versuch mal das "Ergebnisse Seitenweise" nicht anzuhaken. Ich denke das die Erwarteung von myPgAdmin ist das dort ergebnisse zurückkommen und daher will er rausfinden wieviele. Macht natürlich hier keinen Sinn 😉

                      Ansonsten brauchst Du einen Weg für solche Queries. Da kenn ich mich nicht aus.

                      DIe "Doku" der Tabellenstrukturen ist DB-Übergreifend in der README dargestellt. Jede DB will das anders haben. Aber ja "SERIAL" bei PostgreSQL mach einen Autoincrement counter und dann kann "id" bei der echten Insert-Query weggelassen werden

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

                        Ich habe in der Zwischenzeit die Tabellen neu manuell angelegt und konnte aufgrund deines Verweises zu den Queries ebenfalls erkennen, das in den "ts_" Tabellen jeweils die Kombination aus "id" und "ts" den PrimaryKay ausmachen.

                        und was soll ich sagen - nun laufen die Werte auch die Tabelle … jipppiiihhh 8-)

                        Vielen Dank für deine Hilfe!

                        Anmerkung

                        Sollte sonst noch jemand die Anbindung mit PostgreSQL umsetzen, folgende Konfigurations-Anpassungen habe ich für den Zugriff vorgenommen:

                        Datei: postgresql.conf

                        alt:````
                        #listen_addresses = 'localhost'

                        neu:````
                        listen_addresses = '*'
                        

                        Datei: ph_hba_conf

                        folgende Zeilen habe ich am Ende angefügt:

                        host    all             all              0.0.0.0/0             md5
                        host    all             all              ::/0                  md5
                        
                        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

                        731
                        Online

                        31.9k
                        Users

                        80.2k
                        Topics

                        1.3m
                        Posts

                        18
                        149
                        36718
                        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