Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Database Plugin

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

    #46
    Hallo,

    gibt es schon eine Idee, wann mit dem Script zum migrieren der sqlite DB zu MariaDB zu rechnen ist?
    Danke für die Rückmeldung

    Kommentar


      #47
      Mir ist nicht bekannt das jemand an einem Migrationsskript arbeitet. Woher hast Du die Info?
      Viele Grüße
      Martin

      There is no cloud. It's only someone else's computer.

      Kommentar


        #48
        Hallo Psilo,

        danke fuer die schnelle antwort!

        Ich hatte smarthome vor dem nas-restart nicht runtergefahren. Nach dem nas/mariadb-restart hab' ich dann smarthome wieder gestartet nachdem ich gemerkt hab' dass keine daten in die db geschrieben wurden. ehrlich gesagt, hatte ich nicht daran gedacht bzw. war davon ausgegangen, dass das db plugin wieder in die db schreiebn kann sobald mariadb wieder verfuegbar ist.

        bei software-updates des nas ist die db dann so 10-15min nicht erreichbar - koennte man evtl. im plugin die dumps per befehl "suspenden" und die daten zwischenpuffern bis die dumps wieder erlaubt sind?

        danke und lg - tullsta

        Kommentar


          #49
          Zitat von Msinn Beitrag anzeigen
          Mir ist nicht bekannt das jemand an einem Migrationsskript arbeitet. Woher hast Du die Info?
          siehe hier: https://github.com/smarthomeNG/smart...-MySQL-MariaDB

          ziemlich unten steht:
          cd /usr/local/smarthome python3 plugins/database/convert ./var/db/smarthome.db .... # gibt es leider noch nicht
          todo: Skript schreiben für die Migration

          Kommentar


            #50
            Ok,

            ein todo ist, bedeutet ja nicht notwendigerweise, dass sich bisher jemand gefunden hat der das Thema angeht.
            Viele Grüße
            Martin

            There is no cloud. It's only someone else's computer.

            Kommentar


              #51
              Hat jemand eine Ahnung wie man mit dem DB Plugin aktuell ein "Count" machen könnte ?
              Ich bin dabei eine neue Heizung zu optimieren und hätte gerne einen Plot über eine Woche wo ich für jeden Tag die Anzahl der Brennerstarts / Tag sehen kann. Die "Brenner läuft" Info ist eine Boolean in der DB. Ich bräuchte also eine Funktion dir mir die Anzahl der "1" respektive "True" oder wie auch immer pro Tag zählt, und das für die 7 letzten Tage. Die Summen sollten dann halt in einen Plot.

              Ich habe so direkt keine Lösung dafür gefunden, denn AVG, MIN, MAX e.t.c. helfen da nicht viel denke ich ...

              Kommentar


                #52
                Vielleicht sowas in der Art? Verbrauch pro Tag aus dem Gesamtpelletszähler...

                Code:
                       verbrauch_gesamt:
                            eta_pu_uri: 112/10021/0/0/12016
                
                            n:
                                enforce_update: 'yes'
                                visu_acl: ro
                                eta_pu_type: calc
                                type: num
                                sqlite: init
                
                        verbrauch_24:
                
                            n:
                                enforce_update: 'yes'
                                visu_acl: ro
                                type: num
                                sqlite: init
                                eval: (int(sh.eta_unit.kessel.verbrauch_gesamt.n()))-(int(sh.eta_unit.kessel.verbrauch_gesamt.n.db('max','2d','1d')))
                                eval_trigger: eta_unit.kessel.verbrauch_gesamt.n
                Derzeit zwischen Kistenauspacken und Garten anlegen.
                Baublog im Profil.

                Kommentar


                  #53
                  Zitat von greentux Beitrag anzeigen
                  Vielleicht sowas in der Art? Verbrauch pro Tag aus dem Gesamtpelletszähler...
                  Hmmm.. So wie ich das beim Überfliegen interpretiere hast Du einen Zähler der einfach incrementiert. Du nimmst dann mit 'max' den höchsten Wert dieses Tages und ziehst ihn vom akuellen Zähler ab und hast mit der Differenz den Verbrauch des Tages.

                  Ich habe aber ein Boolean und keinen kontinuirlichen Zähler. Das heisst eine bestimmte Anzahl '1' und '0' pro Tag in der DB. Die 'max' Funktion liefert hier natürlich immer '1' zurück was mir aber nichts bringt. Ich brauche die Anzahl der '1' pro Tag.

                  Das heisst es müsste eine "COUNT" Funktion geben oder eine 'SUM' Funktion die die '1' zusammenzählt. Count wäre auch für andere Anwendungen nützlicher als eine SUM denke ich.

                  Kommentar


                    #54
                    Hallo zusammen,

                    ich habe mal eine kurze Verständnisfrage, stehe gerade irgendwie auf dem Schlauch.

                    Ich habe das Plugin jetzt installiert und nach einigen Startproblemen läuft es jetzt auch. Irgendwie habe ich offensichtlich dieses Prinzip der Datenbank nicht verstanden. SmarthomeNG nutzt wie ver Vorgänger eine sqlite - das ist klar.

                    Wenn ich Daten abrufen will (zb. für einen Plot) werden diese ja ebenfalls aus dieser Datenbank gezogen (nachdem sie vorher rein geschrieben wurden).

                    Abrufen würde ich jetzt bei mir die Temperaturkurve der letzten 48 Stunden so:

                    PHP-Code:
                    {{ plot.period('p1''garage.temperatur''avg''48h') }} 
                    In der Items sieht es dann jetzt so aus:

                    PHP-Code:
                    [[temperatur]]
                         
                    type num
                        visu 
                    yes
                    #  sqlite = true #<<- wenn ihr den Wert in Plots verwenden wollt
                        
                    knx_dpt 9
                        knx_init 
                    2/0/12
                        database 
                    yes 
                    Ausgelesen wird es noch immer aus der sqlite, denn ich hatte zum testen die Temperatur in der Garage auf 100 Grad gesetzt (in der mySQL).

                    Ich habe allerdings noch die SmarthomeNG 1.2 - weiß nicht, ob das etwas damit zu tun hat?

                    Viele Grüße

                    Kommentar


                      #55
                      SmarthomeNG nutzt wie ver Vorgänger eine sqlite - das ist klar.
                      Nein ist es nicht, das Database Plugin kann auch andere DBs wie MySQL und MariaDB (bei mir im Einsatz).

                      Wie hast Du die Plugins konfiguriert? Hast Du das SQLite rausgenommen? Hast Du im Database Plugin die richtige DB reinkonfiguriert?

                      Kommentar


                        #56
                        Das ist die config:

                        PHP-Code:
                        [database]
                            
                        class_name Database
                            class_path 
                        plugins.database
                            driver 
                        pymysql
                            connect 
                        host:192.168.1.147 user:einuser passwd:sehr_geheim db:einedb
                            
                        #prefix = log 
                        Ich habe in der plugin.conf den die oben genannten Zeilen eingefügt. Testweise habe ich den Bereich [sql] in der Config ausgeklammert.

                        Muss ich noch irgendwo etwas anpassen? Dann habe ich das übersehen.

                        Kommentar


                          #57
                          Hast Du das SQLite rausgenommen? Wenn ja kann er ja eigentlich garnicht Daten aus der SQlite DB nehmen?!

                          Konfig sieht richtig aus, würde aber auf YAML umstellen an Deiner Stelle

                          wie hast du das mit den 100 grad verifiziert? der aktuelle wert ist ja auch im speicher, ich glaube der kommt defaultmaessig nicht direkt aus der DB so lange SHNG läuft.

                          monitore doch mal die sql queries die im mysql ankommen.. ein profiler sollte das können: http://www.profilesql.com/
                          Zuletzt geändert von psilo; 27.09.2017, 11:03.

                          Kommentar


                            #58
                            YAML will ich demnächst noch umstellen - habe bislang allerdings keinen Vorteil dabei entdeckt, daher ist das ziemlich weit unten auf meiner "To-Do"

                            Ich stehe gerde irgendwie auf dem Schlauch - wo nehme ich denn das SQLite raus? Wird das nicht hier festgelegt?:

                            PHP-Code:
                            #SQL-Treiber, unterstützt auch die SmartVISU 2.8/2.9
                            # dazu muß im websocket plugin zwingend die Protokollversion 4 eingetragen sein
                            #[sql]
                            #    class_name = SQL
                            #    class_path = plugins.sqlite_visu2_8 
                            Wenn Du das meinst, dann habe ich das ja rausgenommen (#)

                            Die Werte werden in die neue Datenbank geschrieben - in der Tabelle "aussen.garage" habe ich einfach dien Temperatur von 15.2 auf 100.1 geändert. Dann habe ich die Garage selbst in der Visu aufgerufen (dort ist dann ein Plot mit den letzten 48 Stunden). Mir scheint es, als würde er aktuell noch beide Datenbanken nutzen. In beide schreiben, aber nur aus der SQLite auslesen?

                            Ich bin davon ausgegangen, dass der Plot einmal gewaltig nach oben schießen müsste, wenn die Temperatur über 100 Grad ist.

                            Ich hatte, nachdem ich den Wert geändert hatte, smarthome neu gestartet. Dann dürfte er doch nichts mehr im Cache sein? Also das ich die aktuelle Temperatur nicht aus der mySQL auslesen kann, hatte ich mir gedacht. Aber zumindest im Plot müsste sich das doch irgendwie bemerkbar machen?

                            Kommentar


                              #59
                              wenn du das sqlite plugin auskommentiert hast (wie du ja sagst) kann er nur mysql nutzen. kannst ja mal dein .db file umschieben, dann kannst dus 100% ausschliessen

                              es gibt zudem keine tabelle mit itemnamen. es gibt eine mit den letzten wert (item) und eine mit der historie (log) - in der gibt es aber auch keinen itemnamen als attribut sondern nur die item_id als fremdschluessel.. die ITEM tabelle hilft dir für die plots garnichts. die LOG schon.
                              nachdem du von "aussen.garage" redest, hast du vermutlich auf der Itemtabelle editiert.

                              m.E. läuft da mit deinen versuchen eher was schief, als dass die falsche db benutzt wird..

                              Code:
                              MariaDB [(none)]> use smarthome
                              Database changed
                              MariaDB [smarthome]> show tables
                                  -> ;
                              +---------------------+
                              | Tables_in_smarthome |
                              +---------------------+
                              | database_version    |
                              | item                |
                              | log                 |
                              +---------------------+
                              3 rows in set (0.00 sec)
                              
                              MariaDB [smarthome]> describe log;
                              +----------+------------+------+-----+---------+-------+
                              | Field    | Type       | Null | Key | Default | Extra |
                              +----------+------------+------+-----+---------+-------+
                              | time     | bigint(20) | YES  |     | NULL    |       |
                              | item_id  | int(11)    | YES  | MUL | NULL    |       |
                              | duration | bigint(20) | YES  |     | NULL    |       |
                              | val_str  | text       | YES  |     | NULL    |       |
                              | val_num  | double     | YES  |     | NULL    |       |
                              | val_bool | tinyint(1) | YES  |     | NULL    |       |
                              | changed  | bigint(20) | YES  |     | NULL    |       |
                              +----------+------------+------+-----+---------+-------+
                              7 rows in set (0.00 sec)
                              
                              MariaDB [smarthome]> describe item;
                              +----------+--------------+------+-----+---------+-------+
                              | Field    | Type         | Null | Key | Default | Extra |
                              +----------+--------------+------+-----+---------+-------+
                              | id       | int(11)      | YES  | UNI | NULL    |       |
                              | name     | varchar(255) | YES  | MUL | NULL    |       |
                              | time     | bigint(20)   | YES  |     | NULL    |       |
                              | val_str  | text         | YES  |     | NULL    |       |
                              | val_num  | double       | YES  |     | NULL    |       |
                              | val_bool | tinyint(1)   | YES  |     | NULL    |       |
                              | changed  | bigint(20)   | YES  |     | NULL    |       |
                              +----------+--------------+------+-----+---------+-------+
                              7 rows in set (0.00 sec)
                              Zuletzt geändert von psilo; 27.09.2017, 11:49.

                              Kommentar


                                #60
                                Ich hab es jetzt einfach mal mit dem Holzhammer getestet und die mySQL runtergefahren - dann werden sofort keine Plots mehr angezeigt.

                                Es funktioniert also und hatte tatsächlich etwas mit meinen zweifelhaften Versuchen zu tun.

                                Zumindest habe ich das Prinzip jetzt etwas besser verstanden - ich danke Dir psilo.

                                Dann kann ich mich jetzt ja mit meinen anderen Problemchen beschäftigen - aktuell macht es wirklich keinen Spaß.

                                Viele Grüße

                                Kommentar

                                Lädt...
                                X