Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Database Plugin

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

    Super danke! Hättest noch n Tipp, wie man die IDs automatisiert ändern kann?
    Also zB für alle Items die mit wp. starteten sollen jetzt die ID von den entsprechenden duw.wp. erhalten..?

    Kommentar


      Zitat von Onkelandy Beitrag anzeigen
      Super danke! Hättest noch n Tipp, wie man die IDs automatisiert ändern kann?
      Ein "perfekten" Befehl kann ich dir nicht sagen. Es müsste aber mit
      Code:
      UPDATE `<TabellenName>` SET `<FeldName>` = <neuer Wert> WHERE <Bedingung>
      Sowas wie
      Code:
      UPDATE `item` SET `item` = duw. + 'item' WHERE 'item' = wp.*
      Du kannst das WHERE Kriterium in der Konsole von phpmyadmin mit durch SELECT probieren.

      Code:
      SELECT * FROM `item` WHERE 'item' = wp.*

      Kommentar


        * geht in SQL so nicht,

        Code:
        UPDATE `item` SET `item` = 'duw.' + `item` where `item` LIKE 'wp.%'
        Wobei ich jetzt nicht weiß, ob Tabelle und Spalte beide `item` heißen...

        Kommentar


          Hallo zusammen,

          bisher nutze ich SHNG mit 1.7.2.master --- database 1.5.9
          auf dem Testsystem läuft SHNG 1.8.1.master --- database 1.5.15

          gibt es eine Möglichkeit die Datenbank von 1.5.9 zu übernehmen/importieren? Ich habe versucht die Datei von einem System auf das andere zu kopieren --> der Kopiervorgang hat funktioniert, aber die Datenbank wird nicht erkannt (das WebIF wird nicht geladen).

          Danke euch



          Kommentar


            Zitat von Maexle Beitrag anzeigen
            gibt es eine Möglichkeit die Datenbank von 1.5.9 zu übernehmen/importieren?
            Welche Datenbank benutzt Du (SQLite3 oder MySQL)?

            Zitat von Maexle Beitrag anzeigen
            (das WebIF wird nicht geladen)
            Was meinst Du damit? Wie äussert sich das?


            Bei SQLite3: Vor dem kopieren unbedingt SmartHomeNG beenden. Anschließend den Inhalt des Verzeichnisses ../var/db aus der alten Installation in das Verzeichnis ../var/db der neuen Installation kopieren. Sicherstellen, dass die Item Definitionen der neuen Installation dazu passen (also der alten Installation entsprechen) und dann die neue Installation von SmartHomeNG starten.
            Viele Grüße
            Martin

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

            Kommentar


              Hallo Martin,

              Zuerst der Tipp mit beenden hat funktioniert ( "sudo systemctl stop smarthome.service" --> kopieren --> "sudo systemctl start smarthome.service")

              Danke dafür


              SQLite3 (RasPi Image von Onkelandy)

              WebIF --> eine ewig laufende Sanduhr (bzw. Punkt der hin- und her springt --> Zeichen das der Browser lädt)




              OffTopic:
              Kennt jemand eine Möglichkeit die Datenbank zu exportieren und z.B. mit Excel/LibreCalc zu öffnen?

              Kommentar


                Ich hatte mir in den letzten Versionen eine eigene Datenbank in MYSQL angelegt und die mit Daten gefüttert und dargestellt.
                Seit dem Umstieg auf 1.8.1 gelingt mir der Zugriff nicht mehr, irgendeine "partition" wird verlangt.
                Was mache ich falsch?

                Code:
                database_mysql:
                    plugin_name: Database
                #    instance: nas
                    precision: 2
                    driver: pymysql
                    connect:
                      - host: localhost
                      - user: smarthome
                      - passwd: smarthome
                      - db: smarthome
                      - port: 3306
                Diese Datenbank läuft problemlos

                das ist meine Problem-DB
                Code:
                wp:
                    plugin_name: aaeigwp2
                    instance: mydb
                    precision: 4
                    driver: pymysql
                    connect:
                      - host: localhost
                      - user: root
                      - passwd: smarthome
                      - db: solar
                      - port: 3306





                Code:
                2021-02-19  10:53:36 WARNING  lib.smarthome.main  --------------------   Init SmartHomeNG 1.8.1.master (84873f74)   --------------------
                2021-02-19  10:53:36 WARNING  lib.smarthome.main  Running in Python interpreter 'v3.8.6 final', from directory /usr/local/smarthome
                2021-02-19  10:53:36 WARNING  lib.smarthome.main   - on Linux-5.10.11-v7l+-armv7l-with-glibc2.28 (pid=31361)
                2021-02-19  10:53:36 WARNING  lib.smarthome.main   - Nutze Feiertage für Land 'DE', Provinz 'BY', 3 benutzerdefinierte(r) Feiertag(e) definiert
                2021-02-19  10:53:43 ERROR    lib.plugin          Plugin 'database' from section 'database_mysql' exception: 'collections.OrderedDict' object [COLOR=#e74c3c]has no attribute 'partition'[/COLOR]
                > Traceback (most recent call last):
                >   File "/usr/local/smarthome/lib/plugin.py", line 162, in __init__
                >     plugin_thread = PluginWrapper(smarthome, plugin, classname, classpath, args, instance, self.meta, self._configfile)
                >   File "/usr/local/smarthome/lib/plugin.py", line 629, in __init__
                >     exec("self.plugin.__init__(smarthome{0}{1})".format("," if len(arglist) else "", argstring))
                >   File "<string>", line 1, in <module>
                >   File "/usr/local/smarthome/plugins/database/__init__.py", line 118, in __init__
                >     self._db = lib.db.Database(("" if self._prefix == ""  else self._prefix.capitalize()) + "Database", self.driver, self._connect)
                >   File "/usr/local/smarthome/lib/db.py", line 176, in __init__
                >     key, sep, value = arg.partition(':')
                > AttributeError: 'collections.OrderedDict' object has no attribute 'partition'
                2021-02-19  10:53:43 ERROR    lib.plugin          Plugin 'wp' exception during import of __init__.py: unindent does not match any outer indentation level (__init__.py, line 308)
                > Traceback (most recent call last):
                >   File "/usr/local/smarthome/lib/plugin.py", line 548, in __init__
                >     exec("import {0}".format(classpath))
                >   File "<string>", line 1, in <module>
                >   File "/usr/local/smarthome/plugins/aaeigwp2/__init__.py", line 308
                >     cur = self._db.cursor()
                >                           ^
                > IndentationError: unindent does not match any outer indentation level
                Zuletzt geändert von schloessl; 19.02.2021, 11:27.

                Kommentar


                  Du darfst bei der Konfiguration der Datenbank kein Leerzeichen hinter dem Doppelpunkt haben!
                  Außerdem passt was bei deinem eigenen Plugin offensichtlich mit den Einrückungen in Zeile 308 nicht.

                  Kommentar


                    Ich habe auf 1.8.2 geupdatet und finde jetzt sowas im Log:

                    Code:
                    2021-03-23 19:03:52 ERROR plugins.database.Remove old Method plugins.database.Remove old exception: local variable 'item_id' referenced before assignment
                    Traceback (most recent call last):
                    File "/usr/local/smarthome/plugins/database/__init__.py", line 1149, in remove_older_than_maxage
                    item_id = self.id(item, create=False)
                    File "/usr/local/smarthome/plugins/database/__init__.py", line 316, in id
                    if id is None and create == True:
                    UnboundLocalError: local variable 'id' referenced before assignment
                    
                    During handling of the above exception, another exception occurred:
                    
                    Traceback (most recent call last):
                    File "/usr/local/smarthome/lib/scheduler.py", line 664, in _task
                    obj()
                    File "/usr/local/smarthome/plugins/database/__init__.py", line 1151, in remove_older_than_maxage
                    if item_id is None:
                    UnboundLocalError: local variable 'item_id' referenced before assignment
                    Kann ich noch etwas liefern, was hilft?

                    Etwas später findet sich noch:

                    Code:
                    2021-03-23 19:05:23 ERROR lib.db Can not execute query: DELETE FROM log WHERE (item_id = ? ) AND (time = ? OR 1 = ? ) AND (time > ? OR 1 = ? ) AND (time < ? OR 1 = ? ) AND (changed = ? OR 1 = ? ) AND (changed > ? OR 1 = ?) AND (changed < ? OR 1 = ? ); (args [3, None, 1, None, 1, 1613844318276, 0, None, 1, None, 1, None, 1]): database is locked
                    2021-03-23 19:05:23 ERROR plugins.database Database: Error for query DELETE FROM log WHERE (item_id = 3 ) AND (time = None OR 1 = 1 ) AND (time > None OR 1 = 1 ) AND (time < 1613844318276 OR 1 = 0 ) AND (changed = None OR 1 = 1 ) AND (changed > None OR 1 = 1) AND (changed < None OR 1 = 1 ); : database is locked
                    2021-03-23 19:05:23 ERROR plugins.database.Remove old Method plugins.database.Remove old exception: database is locked
                    Traceback (most recent call last):
                    File "/usr/local/smarthome/lib/scheduler.py", line 664, in _task
                    obj()
                    File "/usr/local/smarthome/plugins/database/__init__.py", line 1161, in remove_older_than_maxage
                    self.deleteLog(item_id, time_end=timestamp_end, with_commit=False)
                    File "/usr/local/smarthome/plugins/database/__init__.py", line 624, in deleteLog
                    self._execute(self._prepare("DELETE FROM {log} WHERE " + condition), params, cur=cur)
                    File "/usr/local/smarthome/plugins/database/__init__.py", line 1227, in _execute
                    self._query(self._db.execute, query, params, cur)
                    File "/usr/local/smarthome/plugins/database/__init__.py", line 1257, in _query
                    raise e
                    File "/usr/local/smarthome/plugins/database/__init__.py", line 1254, in _query
                    tuples = func(self._prepare(query), params, cur=cur)
                    File "/usr/local/smarthome/lib/db.py", line 324, in execute
                    result = c.execute(stmt, args)
                    sqlite3.OperationalError: database is locked
                    Danke und Gruß
                    Derzeit zwischen Kistenauspacken und Garten anlegen.
                    Baublog im Profil.

                    Kommentar


                      Ich verkriech mich gleich. Mea culpa.
                      Es liefen zwei Instanzen...

                      huhuuuuu...
                      Derzeit zwischen Kistenauspacken und Garten anlegen.
                      Baublog im Profil.

                      Kommentar


                        Hallo zusammen,

                        nachdem mein Log-Table mittlerweile 2 GB erreicht hat, habe ich mich doch mal intesiver mit dem Inhalt beschäftigt und festgestellt, das viele Items kein Maxage gesetzt haben - Anzeige im WebIF. Im Feld duration gibt es einen Eintrag. Ich würde jetzt gern an Maxage setzen, damit der Cleanup-Job das regelmäßg beräumen kann.
                        In der Doku habe ich bisher nichts gefunden (order nich nach dem richtigen gesucht?)
                        Kann mir bitte jemand auf die Sprünge helfen?

                        Danke und Grüße
                        Gunnar

                        Kommentar


                          Zitat von gklein Beitrag anzeigen
                          Kann mir bitte jemand auf die Sprünge helfen?
                          Ja klar.

                          Die Doku ist hier

                          Du muss nur das attribute database_maxage bei den Items ergänzen. Hier ein Beispiel:
                          Code:
                          schwellwert_ueberschritten:
                                          type: bool
                                          visu_acl: rw
                                          knx_dpt: 1
                                          knx_cache: 2/3/10
                                          database: yes
                                          database_maxage: 200
                          Aber Vorsicht: Wenn Du das attribut setzt, beginnt shNG bzw das Plugin die Reinigungsaktion. Das lastet die DB ziemlich aus und blockiert ein Schreiben in die DB. Die Werte werden bei shNG zwischengespeichert und dann geschrieben, wenn die DB wieder "verfügbar" ist.

                          Nutzt du mysql bzw mariadb?

                          Kommentar


                            Ich danke Dir, das hab ich elegant überlesen , war nur bei cleanup(), was ohne Parameter nat. nicht viel bringt.
                            Ich nutze MariaDB 10.3. Werde jetzt den Paramter setzen und wenn das alles durch ist nochmal ein "optimize table " drüberjagen

                            Danke nochmal und einen schönen Sonntag noch
                            Gunnar

                            Kommentar


                              Hallo,

                              um dem Wunsch hier nachzugehen, suche ich nach einer Möglichkeit, den ältesten/ersten Eintrag eines Items bzw. der Item-ID zu finden.
                              Kann das Plugin das?

                              In mysql wäre es
                              Code:
                              SELECT MIN(datefield) FROM yourtable
                              Danke Euch.

                              Kommentar


                                An die Nutzer des Plugins mit einer SQL Datenbank (vielleicht sogar auf nem NAS).. Wie lange dauert bei euch das finale Schreiben von Werten in die Datenbank beim Stoppen des Plugins?
                                Ich habe bemerkt, dass zB von meinem Macbook Pro nur ca. 8 Einträge pro Sekunde auf die MariaDB Datenbank auf dem Synology 1517+ geschrieben werden. Es braucht also eine Ewigkeit beim Stoppen von SHNG, bis alle Werte geschrieben sind.

                                Die Tabellen habe ich über phpmyadmin frisch optimiert. Wäre über Erfahrungswerte und Tipps froh. Danke!

                                Kommentar

                                Lädt...
                                X