Ankündigung

Einklappen
Keine Ankündigung bisher.

sql-Binding für Anfänger

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

    [Handbuch] sql-Binding für Anfänger

    Hallo,

    aktuell versuche ich mich am sql Binding, dabei bin ich wie folgt vorgegangen:

    1.) Mysql auf dem Linux System auf dem openhab läuft installiert.
    2.) User, Datenbank und Tabelle angelegt
    3.) Binding "org.openhab.persistence.sql.mysql-1.3.0.jar" in den Ordner "addons" kopiert
    4.) openhab.cfg geändert
    Code:
    ############################ SQL Persistence Service ##################################
    #
    # the JDBC driver class like 'com.mysql.jdbc.Driver'
    #sql:driverClass=
    
    # the database url like 'jdbc:mysql://<host>:<port>/<user>'
    sql:url=jdbc:mysql://localhost:3306/openhab
    
    # the database user
    sql:user=openhab
    
    # the database password
    sql:password=xxxxxxxx
    5.) sql.persist angelgt
    Code:
    // 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
    }
    Leider schreibt openHAB keine Daten in die Datenbank.

    Was mach ich falsch bzw. habe ich vergessen?
    Wie erkenne ich ob openHAB erfolgreich eine Verbindung zu Datenbank hergestellt hat.

    Gruß
    Pierre

    #2
    Falls Du die aktuelle Version 1.3.0 verwendest, liegt das Nicht-Funktionieren daran, dass die sql.persistence so aussehen muss:
    Code:
    Items {
        Temperatur* : strategy = everyMinute 
    }
    SQL-Persistence legt die benötigten Tabellen selbst an, man muss also nur die Datenbank zur Verfügung stellen. Allerdings können im Moment nur Zahlen persistiert werden, und zwar als Double. Siehe auch Issue 441 - openhab - Make strings persistable with sql (again) - empowering the smart home - Google Project Hosting

    Kommentar


      #3
      Hallo,

      nachdem ich folgendes geändert habe, funktioniert das Schreiben der Daten in die MySQL Datenbank:

      1. das zweite Binding "org.openhab.persistence.sql-1.3.0.jar" in den Ordner addons kopiert
      2. in der openhab.cfg Datei die Zeile "sql:driverClass=com.mysql.jdbc.Driver" ergänzt
      3. Wie von udo1toni beschrieben die Datei sql.persistence geändert

      Zum Verständnis:
      1. Welche Funktionen habe die beiden sql-Bindings?
      2. Was bewirkt die Zeile "sql:driverClass=com.mysql.jdbc.Driver" in der openhab.cfg Datei?

      Kommentar


        #4
        Hallo Pierre,

        danke für das Handbuch. Inzwischen klappt bei mir die MySQL-Verbindung auch.
        Ich hatte ebenfalls nur das mysql-addon kopiert und das sql-addon vergessen (dachte, das wäre alternativ).

        com.mysql.jdbc.Driver ist nach meinem Verständnis der Java-Treiber, um die Verbindung zur MySQL-DB aufzubauen.

        Allerdings werden bei mir nur numerische Werte (z.B. von der Wetterstation gespeichert).

        Gibt es eine Möglichkeit, z.B. Schaltzustände (ON/OFF) als 1/0 in der DB zu speichern?

        Michael

        Kommentar


          #5
          Mit dem aktuellen Snap 498 sollte das funktionieren (tut's aber leider nicht). Der Persistence-Service entscheidet nach Itemart, wie das Item in der Datenbank gespeichert wird. Switch-Items werden dabei als Double gespeichert, weil sie ja z.B. auch Prozentwerte annehmen können. OFF und ON sollten eigentlich in 0 bzw. 100 umgewandelt werden, bei mir klappt das aber nicht. Aber Contacts werden als varchar gespeichert, in der Tabelle steht dann CLOSED bzw. OPEN.

          Kommentar

          Lädt...
          X