Ankündigung

Einklappen
Keine Ankündigung bisher.

sqlite Plugin überflüssig?

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

    sqlite Plugin überflüssig?

    Hallo zusammen,

    es ist wohl eine blöde Frage, aber brauche ich das 'sqlite" Plugin (oder einen aktuelleren Ersatz), wenn ich das database-Plugin nutze? Ich habe eben in meiner plugin.yaml gesehen, dass dort steht:

    Code:
    database:
        class_name: Database
        class_path: plugins.database
        driver: pymysql
        connect:
          - 'host:127.0.0.1'
          - 'user:abc'
          - 'passwd:abc'
          - 'db:smarthome_db'
        instance: mysqldb
    
    sql:
         class_name: SQL
         class_path: plugins.sqlite
    Die letzten drei Zeilen müsste ich doch auskommentieren können, richtig? Natürlich kann ich das auch einfach ausprobieren, kenne mich aber nicht so gut aus und will mir nichts zerschießen damit.

    Danke!
    Cheers
    Art Mooney

    #2
    Das kann man ohne mehr zu wissen so einfach nicht beantworten.

    Du schreibst im Moment in zwei verschiedene Datenbanken (eine MySQL DB und eine SQLite DB). Ob Du Werte aus beiden Datenbanken nutzt oder nur aus einer, kann ich ohne Glaskugel nicht sagen.

    Da kommen erstmal mehrere Fragen hoch:
    • Schreibst Du wirklich in beide Datenbanken? Also: Hast Du in Deinen Items außer einem database: True Attribut noch bei irgendwelchen Items ein sqlite: True Attribut stehen?
    • Du hast in der Konfiguration des database Plugins instance: konfiguriert. Den instance Parameter sollte man nur nutzen, wenn man mehrere Instanzen eines Plugins konfiguriert. Hast Du eine weitere Instanz des database Plugins konfiguriert und im Einsatz? (Da Du instance konfiguriert hast, müsste eigentlich in allen Deinen Items, die Du in die Datenbank schreiben möchtes, statt database: True der Eintrag database@mysqldb: True lauten.
    Viele Grüße
    Martin

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

    Kommentar


      #3
      Hallo Msinn ,

      tatsächlich habe ich in allen meinen Items, die in der Datenbank landen sollen, database@mysqldb: True eingetragen. Woher ich das habe, weiß ich nicht mehr. Ich wüsste nicht, dass ich mehrere Instanzen nutze. Das einzige, was ich mit der Datenbank derzeit mache, ist Messwerte/Zustände in der Visualisierung anzuzeigen und graphisch auszuwerten. Das war's. Sqlite: True habe ich in keinem einzigen Item stehen.

      Demnach vermute ich, dass ich das sqlite Plugin nicht nutze und es deaktivieren kann. Außerdem sollte ich instance: mysqldb entfernen und anstatt database@mysqldb: True in meinen Items database: True schreiben, richtig? Oder hat es keinen Nachteil, in den Items die Instanz zu benennen, wie ich es jetzt habe? Es steht jetzt bereits in einigen Tausend Items.

      Was ich allerdings neuerdings im Log sehe, ist eine Fehlermeldung, die mir im Wesentlichen sagt, dass die Datenbank wegen einer anderen Datenbankoperation nicht beschrieben werden kann und die Werte zum späteren Schreiben zwischengespeichert werden. Leider habe ich gerade den genauen Wortlaut des Logeintrags nicht abrufbar, da ich nicht zuhause bin. Ich poste heute Abend den Logeintrag.


      Cheers
      Art Mooney

      Kommentar


        #4
        Zitat von Art Mooney Beitrag anzeigen
        Demnach vermute ich, dass ich das sqlite Plugin nicht nutze und es deaktivieren kann.
        Stimmt

        Zitat von Art Mooney Beitrag anzeigen
        Oder hat es keinen Nachteil, in den Items die Instanz zu benennen, wie ich es jetzt habe? Es steht jetzt bereits in einigen Tausend Items.
        Außer dass Du überall mehr Text hingeschrieben hast, die Lesbarkeit der Item Definitionen etwas leidet und die Verarbeitung in SmartHomeNG minimal langsamer ist (kaum messbar), hast Du keine Nachteile.

        Zitat von Art Mooney Beitrag anzeigen
        Was ich allerdings neuerdings im Log sehe, ist eine Fehlermeldung, die mir im Wesentlichen sagt, dass die Datenbank wegen einer anderen Datenbankoperation nicht beschrieben werden kann und die Werte zum späteren Schreiben zwischengespeichert werden.
        Das Datenbank Plugin (wie auch das sqlite Plugin) schreiben nicht jede Änderung sofort in die Datenbank, sondern cachen die Werte erstmal. Wenn eine bestimmte Anzahl von Werten im Cache steht, werden diese Änderungen auf einmal in die DB geschrieben. Das dienst dazu, bei Nutzung von Raspberry Pis die SD-Card zu schützen, indem die Anzahl der Schreibzugriffe minimiert wird.

        Wenn zu dem Zeitpunkt zu dem der Cache gechrieben werden soll, eine andere Datenbank Operation auf die Datenbank zugreift und das schreiben nicht durchgeführt werden kann, werden mehr als die definierte Anzahl von Werten gecacht und dann geschrieben, wenn das wieder möglich ist. Das hat (außer bei einem Absturz von SmartHomeNG) keine negativen Nebenwirkungen. Bei einem Absturz sie die gecachten und nicht in die DB geschriebenen Werte verloren.

        Insgesamt weist das häufigere Auftreten diese Meldung darauf hin, dass die Datenbank "gut zu tun hat".
        Viele Grüße
        Martin

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

        Kommentar


          #5
          Top! Danke Dir.
          Cheers
          Art Mooney

          Kommentar


            #6
            Eben habe ich das sqlite auskommentiert und mir den Log nochmal genauer angesehen. Dort habe ich vielfach stehen:

            Code:
            plugins.visu_websocket Client 192.168.1.111:50961 requested invalid series: env.system.load. Probably not database plugin is configured
            Hier habe ich gefunden, dass das mit der database-Instanz zu tun hat. Ich nehme die instance jetzt aus dem Plugin raus.
            Cheers
            Art Mooney

            Kommentar


              #7
              Das hat schneller geklappt als gedacht und hat mir ein paar weitere Fehlermeldungen aus dem Log entfernt.

              Es steht immernoch allerhand in meiner Logdatei. Wie es aussieht, muss ich ein Update von smarthomeNG machen. Wäret Ihr so freundlich, noch einen kurzen Blick auf meine Logdatei zu werfen? Mir geht es nur darum, ob es noch weitere offensichtliche Probleme gibt, die sich nicht mit dem Update erledigen werden. Übrigens ist mein smarthomeNG nicht online, ein paar der Fehlermeldungen scheinen damit zu tun zu haben.

              Danke für jeden Hinweis.

              Code:
              2021-04-19  21:57:39 WARNING  __main__            --------------------   Init SmartHomeNG 1.7.2.master (3828810e)   --------------------
              2021-04-19  21:57:39 WARNING  __main__            Running in Python interpreter 'v3.5.3 final' on Linux-4.9.0-6-amd64-x86_64-with-debian-9.13 (pid=10385)
              2021-04-19  21:57:40 WARNING  lib.shtime          Nutze Feiertage für Land 'DE', Provinz 'None', State 'None', 1 benutzerdefinierte Feiertagsdefinition(en) definiert
              2021-04-19  21:58:40 WARNING  modules.admin       admin: systeminfo_json: response = {'arch': 'x86_64', 'rasppi': '', 'sh_desc': 'tags/v1.7.2', 'ipv6': '::1', 'system': 'Linux', 'plg_vers': '1.7.2.master (9db85809)', 'freespace': 193499.3828125, 'ip': '192.168.1.102', 'pypath': '', 'sh_dir': '/usr/local/smarthome', 'vers': 'Debian GNU/Linux 9 (stretch)', 'sh_vers': '1.7.2.master (3828810e)', 'pyversion': '3.5.3 final', 'sh_uptime': 60.324896, 'now': '2021-04-19 21:58:39.436455+02:00', 'node': 'smarthomeNG.WORKGROUP', 'pid': '10385', 'ostype': 'debian', 'hardware': 'AMD GX-412TC SOC', 'plg_desc': 'tags/v1.7.2', 'user': 'smarthome', 'uptime': 170064.0}
              2021-04-19  21:58:45 WARNING  lib.item            load_itemdefinitions(): For testing the joined item structs are saved to /usr/local/smarthome/etc/structs_joined.yaml
              2021-04-19  21:59:02 ERROR    plugins.visu_smartvisu SmartVisuInstallWidgets v2.8: Exception: [Errno 13] Permission denied: '/var/www/html/smartVISU/pages/base/root.html'
              > Traceback (most recent call last):
              >   File "/usr/local/smarthome/plugins/visu_smartvisu/__init__.py", line 88, in run
              >     sv_iwdg = SmartVisuInstallWidgets(self._sh, self.smartvisu_dir, self.smartvisu_version)
              >   File "/usr/local/smarthome/plugins/visu_smartvisu/__init__.py", line 488, in __init__
              >     self.install_widgets(self._sh)
              >   File "/usr/local/smarthome/plugins/visu_smartvisu/__init__.py", line 537, in install_widgets
              >     f_root = open(self.pgbdir + '/root.html', "w")
              > PermissionError: [Errno 13] Permission denied: '/var/www/html/smartVISU/pages/base/root.html'
              2021-04-19  21:59:04 ERROR    lib.connection      Russound: could not connect to 192.168.1.107:9621 (TCP): timed out
              2021-04-19  21:59:13 WARNING  plugins.mpd         MPD_zentral: currentsong: no items to refresh
              2021-04-19  21:59:13 WARNING  plugins.mpd         MPD_zentral: statistic: no items to refresh
              2021-04-19  21:59:26 ERROR    modules.admin.api_plugins _test_for_blog_articles: Exception HTTPSConnectionPool(host='www.smarthomeng.de', port=443): Max retries exceeded with url: /tag/knx (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fbff9b43f60>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',))
              > Traceback (most recent call last):
              >   File "/home/smarthome/.local/lib/python3.5/site-packages/urllib3/connection.py", line 160, in _new_conn
              >     (self._dns_host, self.port), self.timeout, **extra_kw
              >   File "/home/smarthome/.local/lib/python3.5/site-packages/urllib3/util/connection.py", line 61, in create_connection
              >     for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
              >   File "/usr/lib/python3.5/socket.py", line 733, in getaddrinfo
              >     for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
              > socket.gaierror: [Errno -3] Temporary failure in name resolution
              
              During handling of the above exception, another exception occurred:
              
              > Traceback (most recent call last):
              >   File "/home/smarthome/.local/lib/python3.5/site-packages/urllib3/connectionpool.py", line 677, in urlopen
              >     chunked=chunked,
              >   File "/home/smarthome/.local/lib/python3.5/site-packages/urllib3/connectionpool.py", line 381, in _make_request
              >     self._validate_conn(conn)
              >   File "/home/smarthome/.local/lib/python3.5/site-packages/urllib3/connectionpool.py", line 978, in _validate_conn
              >     conn.connect()
              >   File "/home/smarthome/.local/lib/python3.5/site-packages/urllib3/connection.py", line 309, in connect
              >     conn = self._new_conn()
              >   File "/home/smarthome/.local/lib/python3.5/site-packages/urllib3/connection.py", line 172, in _new_conn
              >     self, "Failed to establish a new connection: %s" % e
              > urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7fbff9b43f60>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution
              
              During handling of the above exception, another exception occurred:
              
              > Traceback (most recent call last):
              >   File "/home/smarthome/.local/lib/python3.5/site-packages/requests/adapters.py", line 449, in send
              >     timeout=timeout
              >   File "/home/smarthome/.local/lib/python3.5/site-packages/urllib3/connectionpool.py", line 727, in urlopen
              >     method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
              >   File "/home/smarthome/.local/lib/python3.5/site-packages/urllib3/util/retry.py", line 439, in increment
              >     raise MaxRetryError(_pool, url, error or ResponseError(cause))
              > urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.smarthomeng.de', port=443): Max retries exceeded with url: /tag/knx (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fbff9b43f60>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',))
              
              During handling of the above exception, another exception occurred:
              
              > Traceback (most recent call last):
              >   File "/usr/local/smarthome/modules/admin/api_plugins.py", line 334, in _test_for_blog_articles
              >     r = requests.get(temp_blog_urls[plugin_name])
              >   File "/home/smarthome/.local/lib/python3.5/site-packages/requests/api.py", line 76, in get
              >     return request('get', url, params=params, **kwargs)
              >   File "/home/smarthome/.local/lib/python3.5/site-packages/requests/api.py", line 61, in request
              >     return session.request(method=method, url=url, **kwargs)
              >   File "/home/smarthome/.local/lib/python3.5/site-packages/requests/sessions.py", line 530, in request
              >     resp = self.send(prep, **send_kwargs)
              >   File "/home/smarthome/.local/lib/python3.5/site-packages/requests/sessions.py", line 643, in send
              >     r = adapter.send(request, **kwargs)
              >   File "/home/smarthome/.local/lib/python3.5/site-packages/requests/adapters.py", line 516, in send
              >     raise ConnectionError(e, request=request)
              > requests.exceptions.ConnectionError: HTTPSConnectionPool(host='www.smarthomeng.de', port=443): Max retries exceeded with url: /tag/knx (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fbff9b43f60>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',))
              2021-04-19  22:04:56 WARNING  modules.admin       admin: systeminfo_json: response = {'arch': 'x86_64', 'rasppi': '', 'sh_desc': 'tags/v1.7.2', 'ipv6': '::1', 'system': 'Linux', 'plg_vers': '1.7.2.master (9db85809)', 'freespace': 193494.4921875, 'ip': '192.168.1.102', 'pypath': '', 'sh_dir': '/usr/local/smarthome', 'vers': 'Debian GNU/Linux 9 (stretch)', 'sh_vers': '1.7.2.master (3828810e)', 'pyversion': '3.5.3 final', 'sh_uptime': 436.510822, 'now': '2021-04-19 22:04:55.702506+02:00', 'node': 'smarthomeNG.WORKGROUP', 'pid': '10385', 'ostype': 'debian', 'hardware': 'AMD GX-412TC SOC', 'plg_desc': 'tags/v1.7.2', 'user': 'smarthome', 'uptime': 170440.0}
              2021-04-19  22:06:05 WARNING  modules.admin       admin: systeminfo_json: response = {'arch': 'x86_64', 'rasppi': '', 'sh_desc': 'tags/v1.7.2', 'ipv6': '::1', 'system': 'Linux', 'plg_vers': '1.7.2.master (9db85809)', 'freespace': 193494.34375, 'ip': '192.168.1.102', 'pypath': '', 'sh_dir': '/usr/local/smarthome', 'vers': 'Debian GNU/Linux 9 (stretch)', 'sh_vers': '1.7.2.master (3828810e)', 'pyversion': '3.5.3 final', 'sh_uptime': 505.3945, 'now': '2021-04-19 22:06:04.581545+02:00', 'node': 'smarthomeNG.WORKGROUP', 'pid': '10385', 'ostype': 'debian', 'hardware': 'AMD GX-412TC SOC', 'plg_desc': 'tags/v1.7.2', 'user': 'smarthome', 'uptime': 170509.0}
              Cheers
              Art Mooney

              Kommentar


                #8
                Zitat von Art Mooney Beitrag anzeigen
                > PermissionError: [Errno 13] Permission denied: '/var/www/html/smartVISU/pages/base/root
                Deine Rechte auf das smartVISU Verzeichnis stimmen nicht. Damit das visu_smartvisu Plugin kann sein Werk (Generierung der Visu Seiten und Widgets installieren) nur verrichten, wenn der User unter dem SmartHomeNG läuft Schreibrechte auf die smartVISU Verzeichnisse hat.
                Viele Grüße
                Martin

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

                Kommentar


                  #9
                  Danke für den Hinweis. Das habe ich geändert.
                  Cheers
                  Art Mooney

                  Kommentar

                  Lädt...
                  X