Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Database Plugin

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

    Neues Database Plugin

    Hi,

    als Ersatz fuer das SQLite Plugin gibt es nun ein neues Database-Plugin, das mit einer beliebigen Datenbank verwendet werden kann, um Item-Werte in eine Datenbank zu loggen (aehnlich dem SQLite Plugin).

    Es unterstuetzt alle Datenbank-Treiber die die DB-API2 Spezifikation implementieren bzw. zur Verfuegung stellen.

    Weitere Details in der Plugin-Dokumentation: https://github.com/smarthomeNG/plugi...velop/database

    Viele Gruesse!



    Änderungen beim database Plugin in SmartHomeNG v1.7.2

    Bitte beim Update die Information in Post #291 beachten.

    Viele Grüße
    msinn
    Zuletzt geändert von Msinn; 23.06.2020, 22:41.

    #2
    Ganz vielen Dank für Deine/Eure Arbeit!!!
    /tom

    Kommentar


      #3
      Danke!

      Kommentar


        #4
        Super. Bin auch mehr ein Fan von MySQL anstatt dem SQLite. Ich würde das auch gerne nutzen. Wann wird es denn wohl in vom develop in den master wandern?


        Wären denn die folgenden Einstellungen bei MySQL richtig? Dort gibt es ja nicht "num" sondern "float" oder "double" zum Beispiel. Folgende Einstellungen hätte ich dann vorgenommen.

        Tabelle item
        bild1_tabelle_item.JPG
        ID = INT und AUTO_INCREMET?
        name = TEXT
        time = DATETIME? TIMESTAMP kann nur einmal vergeben werden
        val_str = TEXT
        val_num = DOUBLE?
        val_bool = BOOLEAN / TINYINT?
        changed = TIMESTAMP und CURRENT_TIMESTAMP mit nderung on Update durch die Datenbank.

        Tabelle log
        bild2_tabelle_log.JPG
        time = DATETIME? TIMESTAMP kann nur einmal vergeben werden
        item_id = INT (wie in Tabelle item, Verknüpfung in folgendem Bild)?
        val_str = TEXT
        val_num = DOUBLE?
        val_bool = BOOLEAN / TINYINT?
        changed = TIMESTAMP und CURRENT_TIMESTAMP mit nderung on Update durch die Datenbank.

        Beziehung von Tabelle log zu item
        bild3_tabelle_log_beziehungen.JPG
        log.item_id --> item.id
        Zuletzt geändert von loeserman; 07.12.2016, 11:55.

        Kommentar


          #5
          Ist das Plugin eigentlich auch im aktuellen Master testbar? Oder nur im Dev? Bekomme hier folgende Fehlermeldung:

          Plugin database exception: No module named 'lib.db'
          In Zeile 30 der __init__.py wird eine lib.db eingebunden, aber die sagt mir überhaupt nichts, und Tante Google kennt die auch nicht ...

          /Tom

          Edit: Hat sich erledigt. Nach Einbindung von db.py aus dem Dev kommt dann "Plugin database exception: 'SmartHome' object has no attribute 'dbapi'". Ich übersetze das so: Depp, nimm gefälligst Dev! ;-)
          Zuletzt geändert von Tom Bombadil; 15.01.2017, 00:52.

          Kommentar


            #6
            Habe heute versucht, das 'database' Plugin zum Laufen zu bekommen, aber scheitere schon an den Aufrufparametern. Gemäß Doku sollte ja folgende Config in der plugin.conf für mysql funktionieren:

            connect = host:127.0.0.1 | user:db_user | passwd:db_password | db:smarthome
            Meine erste Config sah entsprechend so aus:

            connect = host:192.168.178.4 | user:root | passwd:geheim | db:smarthome
            Daraufhin kam die Meldung, das erforderliche Keyword 'database' wäre nicht angegeben. Ok, ein bisschen geraten und 'db' entsprechend umbenannt:

            host:192.168.178.4 | user:root | passwd:geheim | database:smarthome
            Jetzt kommt die nächste Fehlermeldung:


            2017-02-15 21:47:29 ERROR Main Database [Database]: Could not connect to the database: 'user' is an invalid keyword argument for this function
            2017-02-15 21:47:29 ERROR Main Plugin database exception: 'user' is an invalid keyword argument for this function
            Somit stimmt 'user' als Schlüsselwort auch nicht ...

            Wäre jemand so nett, mal eine funktionierende Variante dieser Zeile zu posten? Danke im Voraus!

            /tom

            Kommentar


              #7
              Nachtrag - ok, läuft jetzt mit folgenden Einstellungen in plugin.conf:
              Code:
              [database]
                  class_name = Database
                  class_path = plugins.database
                  db = mysql
                  # db = sqlite
                  connect = host:192.168.178.4 | port:3306 | user:root | password:hallo123 | database:smarthome
                  # prefix = log
              Folgende Punkte sind mir aufgefallen:
              • das alte sqlite Plugin kann gleichzeitig aktiv sein
              • auf einem database=yes Item sollte kein cache = true gleichzeitig gesetzt sein, sonst wird das db-Item nicht angelegt
              • num-Items, die anfangs auf 0 sind, werden erst bei der ersten Wertänderung angelegt; werden diese in Plots verwendet, kommt die Fehlermeldung 'Problem fetching series for ventilation.rs485._heating_on_off: unorderable types: int() > NoneType() - Wrong sqlite plugin?' --> hier die KWL-Heizung, die ist so gut wie nie an
              • die Datenbank ist auf dem SQL-Server händisch zu erstellen, die Tabellen werden automatisch erstellt
              • ich musste einen neuen Benutzer 'root@%' (Benutzername root, Hostname %) erstellen, da auf diese Mariadb auf meinem NAS bisher nur von NAS-Anwendungen über 127.0.0.1 zugegriffen wurde (ansonsten kommt access denied, logisch)

              Soweit erstmal, hoffe das hilft jemandem, ich geh wieder basteln ...

              /tom
              Zuletzt geändert von Tom Bombadil; 16.02.2017, 00:46.

              Kommentar


                #8
                Tom Bombadil ich würde nie einen root hier verwenden.. mach einen eigenen user für die db

                Kommentar


                  #9
                  Wieso, das oben aufgeführte Passwort ist doch eh nur ein Platzhalter?
                  /tom

                  Kommentar


                    #10
                    hier heisst nicht in dem forum.. hier heisst für den use case "eigene db für applikation" - finde es sicherer, wenn man einen eigenen user hat der nur auf die db der jew. applikation zugriff hat..

                    Kommentar


                      #11
                      Hallo,
                      hat sonst noch wer das neue Plugin schon im Einsatz?
                      Danke für die Rückmeldung.

                      Kommentar


                        #12
                        ja, siehe auch hier: https://github.com/smarthomeNG/smarthome/issues/165

                        Meine MySQL DB ist jetzt 732 mb gross und läuft seit Dezember

                        Kommentar


                          #13
                          Hallo,
                          ich würde gern (noch mit SH1.2) auf das neue Plugin weiterhin mit SQL umstellen und idealerweise die exisitierende Datenbank weiter nutzen bzw. die Werte übernehmen.
                          Ich nutze mit SH1.2 bereits einige Plugins aus dem Dev-Zweig. Habe dafür ein eigenes Verzeichnis, was nicht via GitHub kommt, sondern manuell.

                          Wie gehe ich dabei am besten vor?
                          Wo liegen die Vor- und oder Nachteile von SQL und MySQL?

                          DANKE

                          Kommentar


                            #14
                            Ich würde das Plugin aktuell noch nicht nutzen an Deiner Stelle, wir versuchen es gerade über einen Branch zu finalisieren. Auch greift es aktuell in den Core ein, so dass Du 1.2 und DEV Database nicht mischen kannst.

                            SQL heißt für Dich vermutlich SQLite.. In meiner Sicht kommt MySQL mit größeren Datenmengen bessser klar, als eine leichtgewichtige SQLite DB.Auch scheint das alte SQLite Plugin bei historischen Daten gelegentlich aufzuräumen. Ich habe aber gerne alle Daten vorliegen.

                            Für eine begrenzte Menge Daten, wie bspw. Konfigurationsdaten etc wäre für mich SQlite ok, aber nicht für große Datenreihen und Operationen darauf. Vorteil ist halt, dass Python standardmäßig SQlite kann..

                            Kommentar


                              #15
                              psilo
                              DANKE.

                              Kommentar

                              Lädt...
                              X