Ankündigung

Einklappen
Keine Ankündigung bisher.

OpenHab-SQL-Binding und Xampp

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

    OpenHab-SQL-Binding und Xampp

    Guten Morgen Community,
    da ich absoluter Anfänger in Sachen OpenHab und Xampp bin, sowie Neuling in diesem Forum hoffe ich, dass ich bei Euch richtig bin und bitte mit diesem Thread um Hilfe.

    Zunächst möchte ich mein Vorhaben schildern:
    Wie in dem Thread von maddog (https://knx-user-forum.de/openhab/29...anfaenger.html) beschrieben, möchte ich direkt Werte in eine MySQL-Datenbank einfügen. (Bsp. Temperatur und Schaltzustände). Hierzu habe ich mir, um mir weitere Auswertemöglichkeiten offen zu halten, XAMPP installiert, eine Datenbank namens "erfassungsdaten" und eine Tabelle namens "Test" angelegt. Als Benutzer habe ich mal erst den Standard-Benutzer "root" beibehalten. Das Passwort bleibt zunächst leer (kein Passwort).
    Weiter ist XAMPP gestartet!

    Wieunter dem Link beschrieben, habe ich den Quelltext folgendermaßen eingefügt:

    openhab.cfg
    ############################ SQL Persistence Service ##################################
    # the database url like 'jdbc:mysql://<host>:<port>/<user>'
    mysql:url=jdbc:mysql://localhost:3306/erfassungsdaten

    # the database users
    mysql: user=root

    # the database password
    mysql: password=

    # the reconnection counter
    #mysql: reconnectCnt=

    # the connection timeout (in seconds)
    #mysql: waitTimeout=

    sql:driverClass=com.mysql.jdbc.Driver


    __________________________________________________ _______

    Außerdem habe ich wie oben beschrieben die sql.persist mit folgendem Inhalt erstellt

    sql.persist

    // persistence strategies have a name and a definition and are referred to in the "Items" section
    Strategies {
    everyMinute : "0 * * * * ?"

    // if no strategy is specified for an item entry below, the default list will be used
    default = everyChange
    }

    Items {
    Temperatur* -> "insert into temperatur_test values('%2$tY-%2$tm-%2$td %2$tT', 999, %1$s)" : strategy = everyMinute
    Temperatur* : strategy = everyMinute
    }

    __________________________________________________ ______

    Neben diesen Eingaben habe ich das mysql-Binding eingefügt.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Frage 1.: Benötige ich noch ein sql-Binding? (in den Add-Ons gibt es dieses leider nicht)

    Frage 2.: Muss ich noch weitere Eingaben tätigen damit mir die Daten in die Datenbank geschrieben werden.

    Der Thread von maddog hilft mir leider an dieser Stelle nicht weiter.

    Vielen dank für Eure Hilfe

    #2
    Hallo,

    ich habe genau das gleiche Problem bei den selben Konfigurationen. Komme an der Stelle nicht mehr weiter. OpenHAB loggt zwar aber eben nicht in die angelegte Datenbank.

    Laut udi1toni legt der SQL-Persistence die benötigten Tabellen selbst an, man muss also nur die Datenbank zur Verfügung stellen. Siehe: https://knx-user-forum.de/openhab/29...anfaenger.html

    Aber auch das nicht anlegen einer Tabelle, bringt bisher keine Ergebnisse.

    Ich wäre ebenfalls sehr dankbar, für Tipps.

    Kommentar


      #3
      1. In der openhab.cfg solltet ihr noch folgendes einstellen:

      persistence:default=mysql

      Es sollte zur Zeit auf rrd4j stehen.

      2. Ob es wichtig ist, weiss ich gerade nicht, aber meine persist config heisst: mysql.persist

      3. Im Ordner Addons braucht ihr noch die Datei org.openhab.persistence.mysql-1.5.1.jar

      Gruss,

      Matthias

      Kommentar


        #4
        Hallo supermaz,

        vielen Dank für Deine Hilfe. Dein aufgeführter Punk 1 war mir neu. Habe ich dann aber auch so abgeändert. Macht ja eigentlich auch Sinn. Trotzdem werden meine Logs noch immer nicht in der Datenbank bereitgestellt.

        - Hast Du zufällig noch Ideen an was es liegen könnte?
        - Bleibt es dabei, dass ich in der Datenbank keine Tabellen anlegen muss, da dies der SQL-Persistence selbstständig macht? (Wenn doch, wie muss ich beim anlegen der Tabellen vorgehen? Wieviele Spalten, mit jeweils welchem Typ usw. muss ich bspw. anlegen? Momentan arbeite ich mit der Demo von openHAB)

        Sorry, ich bin ein absoluter Anfänger auf dem Gebiet. Wäre über jede Hilfe sehr sehr dankbar.

        Kommentar


          #5
          Kurz noch eine Sache, die mir aufgefallen ist. In vielen Einträgen hier wird darauf verwiesen ein zweites Binding in den Addon Ordner von openHAB zu kopieren um den SQL-Persistence Service ausführen zu können. Siehe auch: https://knx-user-forum.de/openhab/29...anfaenger.html

          In der aktuellen Version 1.6.2 von openHAB gibt es aber nur ein einziges Binding "org.openhab.persistence.mysql-1.6.2". Bedeutet dies, dass nur noch dieses eine Binding nötig ist?

          Kommentar


            #6
            Ich habe zwar noch OpenHAB 1.5 installiert, aber auch da habe ich nur eine sql-persistance-jar im Addon-Ordner.

            Hast du nach den Änderungen OpenHAB neugestartet?

            So sieht meine mysql.persist aus:

            Code:
            Strategies {
                everyHour : "0 0 * * * ?"
                everyDay  : "0 0 0 * * ?"
            
                // if no strategy is specified for an item entry below, the default list will be used
                default = everyChange
            }
            
            
            Items {
                // persist all items once a day and on every change and restore them from the db at startup
                * : strategy = everyChange, everyDay, restoreOnStartup
            
                // additionally, persist all temperature and weather values every hour
                Temp*, Wind_Dach, Regen_Dach, Lux*, Strom*, Verbrauch*, Heizung_* : strategy = everyHour
            }
            Wobei ich dazusagen muss, das die everyHour für Temperatur usw. nicht funktioniert, muss ich mich nochmal drum kümmern.

            Gruss,

            Matthias

            Kommentar


              #7
              Hm, den openHAB habe ich nach den Änderungen neu gestartet. Daran kann es nicht liegen.

              Meine mysql.persist sieht so aus und sollte ja eigentlich dann auch zumindest ansatzweise funktionieren (im logs-Ordner von openHAB aktualisieren sich ja auch die einzelnen logs):

              Code:
              // persistence strategies have a name and a definition and are referred to in the "Items" section
              Strategies {
              	everyHour 	: "0 0 * * * ?"
              	everyDay 	: "0 0 0 * * ?"
              
              	// if no strategy is specified for an item entry below, the default list will be used
              	default = everyChange
              }
              
              /* 
               * Each line in this section defines for which item(s) which strategy(ies) should be applied.
               * You can list single items, use "*" for all items or "groupitem*" for all members of a group
               * item (excl. the group item itself).
               */
              Items {
              	// persist all items once a day and on every change and restore them from the db at startup
              	// careful, this might result in huge databases - that's why it is in comment here ;-)
              	* : strategy = everyChange, everyDay, restoreOnStartup
              	
              	// persist all temperature and weather values at every change and every hour
              	Temperature*, Weather* : strategy = everyMinute
              }
              Wenn ich dann aber im Browser auf phpmyadmin gehe, und dort auf meine Datenbank klicke, kommt unter dem Reiter "Struktur" nur der Hinweis: "Es wurden keine Tabellen in der Datenbank gefunden". Xampp läuft und die Datenbank auf phpmyadmin ist ja auch aufgeführt aber eben leer.

              Vielleicht habe ich einen Fehler in der Datenbank? Ich bin mir noch immer nicht sicher, ob ich in der Datenbank Tabellen anlegen muss und wie ich dies machen soll oder ob dies sowieso selbstständig gemacht wird?

              Vielleicht sollte ich mal eine andere/alte openHAB Version testen und es nach der ungefähren Anleitung hier https://knx-user-forum.de/openhab/29...anfaenger.html vorgehen? Was meint Ihr? Macht das einen Unterschied? Hab es vor einiger zeit mal mit Version 1.6.0 versucht, als die herauskam, aber da hat es keinen Unterschied gemacht. Wenn es trotzdem Sinn mit einer noch älteren Version machen sollte, wo finde ich den die alten openHAB-Versionen?

              Bin am verzweifeln;-( Hast Du oder sonst jemand noch eine Idee?

              Kommentar


                #8
                Gibt es denn in der log-Datei Fehlermeldungen? Tabellen musst du keine anlegen.

                Kommentar


                  #9
                  Ich habe gerade nachgeschaut. Ich habe vier verschiedene Textdateien im Log-Ordner ("2015_02_11.request", "events", "openhab", "temperatures"). Ich habe mal den gesamten "logs"-Ordner angehängt. Kann Dir auch gerne den ganzen openHAB-Ordner senden. Nur leider kann ich hier ja nicht so große Datenmengen anfügen. Vielleicht via E-Mail wenn das hilft?!

                  In der "openhab"-Logdatei stehen tatsächlich Fehler. Die sagen mir aber nichts? Kannst Du damit auf etwas schließen?

                  Wie gesagt, ich geh im Browser auf die Demo und schalte z.B. Geräte an/aus. Sieht man ja auch in den Logs. Aber in der Datenbank steht nichts davon.

                  Falls es hilft. Meine zuletzt erstellte Datenbank heißt "openhab".

                  Vielen vielen Dank für Deine Unterstützung schon jetzt.
                  Angehängte Dateien

                  Kommentar


                    #10
                    Code:
                    mySQL: Failed connecting to the SQL database using: driverClass=com.mysql.jdbc.Driver, url=jdbc:mysql://127.0.0.1/openhab, user=openhab, password=12345 
                    java.sql.SQLException: Access denied for user 'openhab'@'localhost' (using password: YES)
                    Das dürfte dein Hauptproblem sein. Der User darf sich nicht verbinden. Bitte überprüfe einmal die Berechtigungen.

                    Kommentar


                      #11
                      Ok, ich denke Du meinst die Berechtigungen in phpmyadmin.

                      Da habe ich eigentlich alle Rechte denke ich. Ich hab mal drei Screenshots angehängt. In Bild 1 und 1.2 sieht man die Rechte. Bei Bild 2 sieht man, was/wo ich beim anlegen der Datenbank bzw. des Benutzers eingetragen habe und welche Hacken gesetzt wurden. Ist da was falsch? Soll ich noch etwas anderes prüfen?
                      Angehängte Dateien

                      Kommentar


                        #12
                        Ok, nach sehr langem hin und her habe ich es nun glaube ich geschafft. Vielen Dank supermaze für Deine sensationelle Hilfsbereitschaft. Ich habe wirklich schon mehrere Tage daran gearbeitet und es nicht zum laufen gebracht.

                        Wie bin ich vorgegangen:

                        - Ich habe openHAB und Xampp nochmals neu auf einem anderen PC aufgesetzt sowie eine neue/eigene Demo mit anderen Geräten und neuen/eigenen Persistence- u. Rules-Konfigurationen eingetragen.

                        - Das eigentliche Problem lag aber am wahrscheinlichsten an den Einstellungen in phpmyadmin. Beim Hinzufügen eines Benutzers, muss bei "Host" im Dropdownmenü "Lokal" ausgewählt werden. Das habe ich zuvor einfach so gelassen wie es ist. Warum dies nun nur unter Angabe von "Lokal" funktioniert ist mir nicht ganz klar. Macht meiner Meinung nach irgendwie keinen Sinn. Wie auch immer.

                        - Zudem habe ich beide Haken beim Eintrag für das Feld "Datenbank für Benutzer" gesetzt. Dann habe ich bei "Globale Rechte" natürlich wieder alle Rechte ausgewählt. Ich denke gerade all diese neuen Einstellungen haben nun den Unterschied gemacht.

                        Anbei zwei Screenshots. Im ersten Bild sieht man, dass mehrere Items gelogt wurden, welche ich in der neuen Demo angesteuert habe. Im zweiten Bild sieht man bsw. die Einträge für Item1, welches ich in der neuen Demo An-Aus-An geschaltet habe.

                        Vielleicht hilft diese Beschreibung auch anderen ein wenig. Ich muss sagen, dass in den Foren und Wiki´s Anleitungen und Tipps stehen, die so leider nicht mehr stimmen und evtl. angepasst werden sollten. Sonst kommt es (zumindest bei Laien wie mir) zu vielen Missverständnissen und Fehlern. Ich jedenfalls werde da in den kommenden Tagen mit Sicherheit versuchen, teilweise eine andere/aktualisierte Dokumentation zur Verfügung zu stellen.

                        Interessant wäre es nun noch zu wissen, wo bei openHAB festgelegt wird, welche Daten über Geräte, d.h. Items gelogged werden können und wie dies ggfs. konfiguriert werden kann. Hierzu habe ich schon sehr viel recherchiert und getestet. Aber zu einem wirklich Ergebnis bin ich noch nicht gekommen. Klar, in den Persistence-Services und Rules etc. kann man festlegen, was und wie gelogged werden kann, aber ich weiß eben gar nicht von Anfang an, ob ich in openHAB bzw. den Dateien sehe, welche Funktionen von einem bestimmten Gerät überhaupt zur Verfügung stehen, dann angewählt werden können und auch für das Logging in openHAB fähig sind.

                        Ich hoffe, in diesem letzten Punkt weiß evtl. jemand etwas. Vielleicht ein weiteres Mal auch supermaze;-)
                        Angehängte Dateien

                        Kommentar


                          #13
                          Moin,

                          kurz zu mir:
                          Ich bin Helge wohne in der nähe von Hamburg und möchte meine Heizungsanlage Visuallisieren.
                          Auf dem Gebiet php & sql bin ich total ahnungslos.
                          Meine Projekt habe ich bisher mit Excel und VBA realisiert (nicht schön aber funktionierte zum Teil) und jetzt möhte ich das mit Openhab und SQL ordentlich aufbauen.

                          Meine Problem ist zur Zeit die Verbindung Openhab -> XAMPP MySQL
                          Es wird keine Tabelle angelegt oder Daten geschrieben.

                          Im Addone Ordner befinden sich :
                          org.openhab.binding.http-1.7.1.jar
                          org.openhab.persistence.mysql-1.7.1.jar

                          openhab.cfg
                          Code:
                          ......
                          persistence:default=mysql
                          ....
                          
                          # the database url like 'jdbc:mysql://<host>:<port>/<database>' (without quotes)
                          #mysql:url=jdbc:mysql://localhost:3306/openhab
                          
                          # the database user
                          #mysql:user=openhab
                          
                          # the database password
                          #mysql:password=openhab
                          
                          # the reconnection counter
                          #mysql:reconnectCnt=
                          
                          # the connection timeout (in seconds)
                          #mysql:waitTimeout=
                          
                          sql:driverClass=com.mysql.jdbc.Driver



                          demo.items
                          Code:
                          Group eta2 <ETA_SH>
                          
                          Dimmer  schalter   "Licht Kinderzimmer1"   (eta2)
                          
                          Number Puffer_Oben         "Puffer Ladung [%.1f %%]"    <ETA_SH> (eta2) { http="<[http://192.168.178.199:8080/user/var/120/10251/0/0/12528:60000:XSLT(eta_numeric.xsl)]" }
                          demo.sitemap
                          Code:
                          sitemap demo label="Heizugsanlage ETA SH-30"
                          {
                          
                              Group item=eta2
                              }


                          Im Debug Modus kann ich folgenes mit Logen:
                          20:17:31.969 [DEBUG] [.o.b.http.internal.HttpBinding:197 ] - transformed response is '33.8'
                          20:18:00.015 [TRACE] [o.c.p.internal.PersistItemsJob:56 ] - Storing item 'Puffer_Oben' with persistence service 'mysql' took 0ms

                          Denn noch sind keine Daten gespeichert.

                          Kann mir einer Sagen wo meine Gedanken fehler liegt ?
                          Vielen Dank für Eure Hilfe
                          Angehängte Dateien

                          Kommentar


                            #14
                            Hallo Leute

                            habe gerade OpenHab1.8 installiert und würde meine Daten nun gerne nicht mehr in eine rrd4 Datenbank speichern (vielleicht kann mir mal jemand erklären wo die Daten überhaupt abgelegt werden) sondern auf meinem NAS in mySQL. Ich habe mit phpMyAdmin eine Datenbank angelegt, aber jetzt weiß ich nicht so recht weiter. In sämtlichen beispielen sind das sehr kurze URLs (mysql:url=jdbc:mysql://localhost:3306/openhab) und bei mir ist das etwas ewig langes, darum denke ich habe ich wohl hier schon irgendwo einen Fehler.

                            Vielleicht hat ja jemand von euch die Kombination OpenHab und QNAP Nas zur Datensicherung.
                            Openhab läuft bei mir auf einem ODROID.

                            Vielen Dank
                            Daniel

                            Kommentar


                              #15
                              Hi Daniel,

                              Dir ist aber bewusst, dass rrd4 ganz anders ausgelegt ist als eine mySQL Datenbank? Also in Hinsicht darauf WIE die Daten gespeichert werden.

                              rrd4 kann z.B. je größer der Zeitraum wird (1 Tag, 1 Woche, 1 Monat, 1 Jahr, ...) selbst die Anzahl der gespeicherten Werte reduzieren. Das ist ein großer Vorteil, weil man ja bei einem Diagramm was Jahreswerte anzeigt gar nicht so viele Details benötigt. Spart auf lange Sicht Speicherplatz.

                              Habe genau die Kombination zu Hause stehen (Openhab + QNAP). Kann ich am Wochenende für Dich mal nachstellen.

                              Beste Grüße,
                              Artur

                              PS: Admins? Ist das Thema nicht sehr Openhab spezifisch und sollte dort hin verschoben werden?
                              Alle sagten: Das geht nicht. Dann kam einer, der wusste das nicht und hat's einfach gemacht.

                              http://cleveres-heim.de

                              Kommentar

                              Lädt...
                              X