Ankündigung

Einklappen
Keine Ankündigung bisher.

Openhab 3 und Mariadb

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Hallo ich habe mich da mal durchgehangelt.

    image.png
    ich denke das hast Du gemeint oder? ​
    Gruß

    Guido

    Kommentar


      #17
      Genau. Sieht leider erst mal gut aus.

      Kommentar


        #18
        Hm und was haben wir jetzt noch für Möglichkeiten ?

        Frohe Weihnachten
        Gruß

        Guido

        Kommentar


          #19
          Momentan fällt mir dazu leider nicht wirklich etwas ein.

          Grundsätzlich habe ich bisher immer mit einer "jungfräulichen" Datenbank gestartet, wenn ich openHAB neu aufgesetzt habe. speziell bei MariaDB habe ich dann die alten Daten gedumpt und anschließend gedropt, Selbst wenn man die Itemnamen identisch wählt, wird eine neue Instanz eventuell erst mal versuchen, neue Tabellen anzulegen. Und vielleicht geht das dann schief, wenn die Tabellen schon vorhanden sind.

          Dir auch ein Frohes Fest!

          Kommentar


            #20
            Hallo noch einmal,

            ich habe jetzt die DB noch einmal neu installiert.

            offensichtlich auch wieder ohne Erfolg.

            hier die Meldungen aus dem Logfile ev sagt es dem einen oder anderem etwas.

            Code:
            2023-01-09 19:56:23.469 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: Driver is available::Yank setupDataSource
            2023-01-09 19:56:23.692 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::logTime: 'pingDB':
             afterAccess     = 222 ms
             timeAverage50  = 222 ms
             timeAverage100 = 222 ms
             timeAverage200 = 222 ms
             afterAccessMin  = 222 ms
             afterAccessMax  = 222 ms
             1000Statements = 0 sec
             statementCount = 1
            
            2023-01-09 19:56:26.517 [WARN ] [org.openhab.core.items.GenericItem  ] - failed notifying listener 'org.openhab.core.persistence.internal.PersistenceManagerImpl@11b1741' about state update of item SNMP_Status_Batterielaufzeit: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap')
            java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap')
                at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:92) ~[?:?]
                at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:78) ~[?:?]
                at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:248) ~[?:?]
                at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.internalStore(JdbcPersistenceService.java:149) ~[?:?]
                at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:135) ~[?:?]
                at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
                at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
                at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) ~[?:?]
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
                at java.lang.Thread.run(Thread.java:829) [?:?]
            2023-01-09 19:56:26.560 [WARN ] [org.openhab.core.items.GenericItem  ] - failed notifying listener 'org.openhab.core.persistence.internal.PersistenceManagerImpl@11b1741' about state update of item SNMP_Status_Datum_Selbsttest: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap')
            java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap')
                at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:92) ~[?:?]
                at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:78) ~[?:?]
                at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:248) ~[?:?]
                at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.internalStore(JdbcPersistenceService.java:149) ~[?:?]
                at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:135) ~[?:?]
                at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
                at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
                at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) ~[?:?]
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
                at java.lang.Thread.run(Thread.java:829) [?:?]
            ​
            Was mir dabei auffällt, dass die Items wie zB "SNMP_Status_Datum_Selbsttest" oder "SNMP_Status_Batterielaufzeit" nirgends persistiert werden. woher kommt der Fehler die Abfrage der Items per SNMP macht keine Probleme.
            Zuletzt geändert von Höhlenbär; 09.01.2023, 20:11.
            Gruß

            Guido

            Kommentar


              #21
              Was hast du denn überhaupt für ein Default Persistence Service gesetzt? Die jdbc.cfg wurde automatisch über das UI erstellt?

              Kommentar


                #22
                Default ist der RRD4j gesetzt damit speichere ich die Persistenten Items welche nach dem Neustart Local geladen werden. das funktioniert auch.

                die jdbc.cfg wurde als Datei von oben hab 2 übernommen. Ebenso die jdbc.persist
                Gruß

                Guido

                Kommentar


                  #23
                  Die jdbc.cfg wird normal über das UI konfiguriert. Deine jdbc.persist kann so nicht gehen, da müssen Items definiert werden; andernfalls landet alles im Default Persistence Service.

                  Strategies {
                  everyMinute : "0 * * * * ?"
                  everyfiveMinutes : "0 */5 * * * ?"
                  everyHour : "0 0 * * * ?"
                  everyDay : "0 0 0 * * ?"
                  }

                  Items {
                  knx_Heizung_Ferienwohnung_Schlafzimmer_Istwert : strategy = everyfiveMinutes
                  }

                  Kommentar


                    #24
                    die jdbc.cfg wird mir im ui angezeigt und nach dem log gehe ich davon aus das auch die Verbindung zur Datenbank aufgebaut wird.

                    die persist hatte ich auf anraten von Udo erst einmal auf Eis gelegt. Mittlerweile steht dort wieder ein Item drin.
                    Allerdings wir nichts in die Datenbank geschrieben.

                    und ich weis immer noch nicht was diese Meldung aussagt.

                    Code:
                    failed notifying listener 'org.openhab.core.persistence.internal.PersistenceManagerImpl@11b1741' about state update of item SNMP_Status_Batterielaufzeit:
                    weil diese Item ist nirgends persistiert.

                    ich werde deinen Rat folgen, und die cfg mal über das ui anlegen. mal sehen ob dies einen unterschied macht.
                    Gruß

                    Guido

                    Kommentar


                      #25
                      das habe ich jetzt auch probiert. leider auch ohne Erfolg. Auch wenn die jdbc.persist nicht im Verzeichnis ist, Openhab neu gestartet wurde, stehen die gleichen Meldungen im Log.
                      Gruß

                      Guido

                      Kommentar


                        #26
                        Wenn du den Default Service auf JDBC stellst, was macht er dann?

                        Kommentar


                          #27
                          Das macht keinen Unterschied.

                          Code:
                          2023-01-10 18:52:21.164 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: Driver is available::Yank setupDataSource
                          2023-01-10 18:52:21.512 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::logTime: 'pingDB':
                           afterAccess     = 348 ms
                           timeAverage50  = 348 ms
                           timeAverage100 = 348 ms
                           timeAverage200 = 348 ms
                           afterAccessMin  = 348 ms
                           afterAccessMax  = 348 ms
                           1000Statements = 0 sec
                           statementCount = 1
                          
                          2023-01-10 18:52:24.586 [WARN ] [org.openhab.core.items.GenericItem  ] - failed notifying listener 'org.openhab.core.persistence.internal.PersistenceManagerImpl@c5e1ae9' about state update of item SNMP_Status_U_Eingang: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap')
                          java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap')
                              at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:92) ~[?:?]
                              at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:78) ~[?:?]
                              at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:248) ~[?:?]
                              at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.internalStore(JdbcPersistenceService.java:149) ~[?:?]
                              at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:135) ~[?:?]
                              at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
                              at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
                              at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) ~[?:?]
                              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
                              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
                              at java.lang.Thread.run(Thread.java:829) [?:?]​
                          leider...
                          Gruß

                          Guido

                          Kommentar


                            #28
                            Hallo,

                            ich bin jetzt ein Stück weiter gekommen.
                            Mit DBeaver konnte ich feststellen das es Probleme mit den Zugriff auf die Db gab. das habe ich beheben können.
                            Jetzt habe ich wieder versucht dort Items rein zu speichern. Sowohl mit dem Plug in Mysql als auch mit Mariadb.
                            Leider funktioniert dies nicht. Bei Mysql ist mir jetzt aufgefallen das diese Zeile im Log steht.
                            Code:
                            2023-01-12 12:54:34.977 [WARN ] [.zaxxer.hikari.util.DriverDataSource] - Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.
                            hier steht ja Driver not found. Udo fragte ja schon mal ob ich den Treiber installiert habe.
                            Jetzt die Frage, reicht es wenn das Plugin installiert wird, oder ist noch was nötig. Bisher habe ich nur das Plugin installieren müssen.
                            Gruß

                            Guido

                            Kommentar


                              #29
                              Wenn Du den jdbcmariadb Persistence Service auswählst, bringt der alles Notwendige für eine Client-Verbindung zu einer MariaDB mit. Meiner erfahrung nach spielt die version dabei keine große Rolle, solange die DB nicht steinalt ist.

                              Aber noch mal von vorne: Hast Du eine neue Datenbank erzeugt? Hast Du einen User angelegt, der von der IP des openHAB Systems aus vollen Zugriff auf die Datenbank hat (voll in dem Sinne, dass dieser User Tabellen anlegen und ändern, sowie Daten schreiben und löschen darf)? Siehst Du im log der MariaDB, dass sich dieser User erfolgreich mit der Datenbank verbindet? Falls nein: Username und Passwort korrekt? Falls ja: Bitte lösche die jdbc.persist und starte openHAB neu. Legt openHAB nun bei jedem neuen changed Event eine Tabelle für das jeweilige Item an bzw., falls die Tabelle schon existiert, sollte openHAB einen Eintrag in der Tabelle erzeugen.
                              wie gesagt, alte daten kannst Du übernehmen, aber am besten zu Fuß. da der Zeitstempel als Index verwendet wird, ist auch das nachträgliche Einfügen von Datensätzen kein Problem, solange man die korrekte Quell-Zieltabellenzuordnung verwendet.



                              Kommentar


                                #30
                                Halo Udo,

                                Ja ich habe einen neue Datenbank erzeugt
                                Ja ich habe einen user angelegt der Zugriff hat
                                Ich bin da leoder eingeschränt um zu sehen was auf der Synology passiert ich weiss eifach nicht wo ich ein ausführliches log finde.

                                Dafür habe ich das Tool DBeaver verwendet. damit kann ich sowohl mit dem Mariadb modul als auch it den SQL Modul eine Verbindung aufbauen
                                sehe die DB und kann darüber auch Tabellen hinzufügen.

                                Das mit der jdbc probiere ich nach dem Abend essen.

                                Danke
                                Gruß

                                Guido

                                Kommentar

                                Lädt...
                                X