Ok, das sieht soweit gut aus. Ich fragte wegen eines häufigen Fehlers, in den connect Einträgen hinter dem Doppelpunkt ein Leerzeichen zu lassen. Das führt nämlich zu den seltsamsten Fehlern.
Ansonsten müsste nun jemand der MySQL nutzt etwas dazu sagen. Ich selbst habe SmartHomeNG nie mit einer anderen Datenbank als Sqlite3 betrieben.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Neues Database Plugin
Einklappen
X
-
wie in der DokuZitat von Msinn Beitrag anzeigenWie hast Du denn das Plugin in der plugin.yaml genau konfiguriert? Das hast Du bisher leider nicht verraten.
passwd bestand vorher aus Zahlen und das führt zu dem Fehler. egal ob mit ' oder ohne 'Code:database_mysql: plugin_name: database instance: mysqldb precision: 4 driver: pymysql connect: - host:127.0.0.1 - user:user - passwd:pass - db:smarthome_db
Einen Kommentar schreiben:
-
Wie hast Du denn das Plugin in der plugin.yaml genau konfiguriert? Das hast Du bisher leider nicht verraten.
Einen Kommentar schreiben:
-
Fehler gefunden!!! Entweder ist es ein Bug oder falls nicht, sollte es unbedingt mit in die Doku! Als DB Passwort dürfen KEINE reinen Zahlen verwendet werden!!! Wenn das Passwort mit einem Buchstaben beginnt, klappt es. Reine Zahlen führen zu:Gruss,MichaCode:Database: Initialization failed: object supporting the buffer API required
PS: Hat mich >12Stunden und echt Nerven gekostet
Einen Kommentar schreiben:
-
Fehlermeldung gefunden:
Code:023-09-01 08:58:30 ERROR cherrypy.error.140388930309904 [01/Sep/2023:08:58:30] HTTP Traceback (most recent call last): File "/home/smarthome/.local/lib/python3.10/site-packages/cherrypy/_cprequest.py", line 638, in respond self._do_respond(path_info) File "/home/smarthome/.local/lib/python3.10/site-packages/cherrypy/_cprequest.py", line 697, in _do_respond response.body = self.handler() File "/home/smarthome/.local/lib/python3.10/site-packages/cherrypy/lib/encoding.py", line 223, in __call__ self.body = self.oldhandler(*args, **kwargs) File "/home/smarthome/.local/lib/python3.10/site-packages/cherrypy/_cpdispatch.py", line 54, in __call__ return self.callable(*self.args, **self.kwargs) File "/usr/local/smarthome/plugins/database/webif/__init__.py", line 127, in index return tmpl.render(p=self.plugin, File "/home/smarthome/.local/lib/python3.10/site-packages/jinja2/environment.py", line 1301, in render self.environment.handle_exception() File "/home/smarthome/.local/lib/python3.10/site-packages/jinja2/environment.py", line 936, in handle_exception raise rewrite_traceback_stack(source=source) File "/usr/local/smarthome/plugins/database/webif/templates/index.html", line 159, in top-level template code {% set tab3title = _('Verwaiste Items') %} File "/usr/local/smarthome/plugins/database/webif/templates/base_database.html", line 174, in top-level template code {% set tab2title = _('Plugin-API') %} File "/usr/local/smarthome/modules/http/webif/gtemplates/base_plugin.html", line 271, in top-level template code {% if scroll_heading is not defined %} File "/usr/local/smarthome/modules/http/webif/gtemplates/base.html", line 1, in top-level template code {% block doc -%} File "/usr/local/smarthome/modules/http/webif/gtemplates/base.html", line 4, in block 'doc' {%- block html %} File "/usr/local/smarthome/modules/http/webif/gtemplates/base.html", line 96, in block 'html' {% block body -%} File "/usr/local/smarthome/modules/http/webif/gtemplates/base.html", line 99, in block 'body' {% block content -%} File "/usr/local/smarthome/modules/http/webif/gtemplates/base_plugin.html", line 124, in block 'content' {% block headtable %} File "/usr/local/smarthome/plugins/database/webif/templates/base_database.html", line 160, in block 'headtable' <td class="py-1"><strong>{{ key }}</strong></td><td class="py-1" onclick="document.getElementById('pwd').innerHTML = '{{ value }}'"><span id="pwd" title="Click to show password">{% for letter in value %}*{% endfor %}</span></td> TypeError: 'int' object is not iterable Zuletzt geändert von lexxmm; 01.09.2023, 08:20.
Einen Kommentar schreiben:
-
Ich bin einen Schritt weiter. Bei der direkten Angabe innerhalb der db.py (Zeile 208) funktioniert die DB Anbindung:
self._conn = self._dbapi.connect(host='localhost', user='user', password='password', db='smarthome_db')
Jedoch kommt auf der webinterface Seite (/plugin/database_mysqldb/) einfach nur ein Error 500 The server encountered an unexpected condition which prevented it from fulfilling the request. Innerhalb der logs finde ich nichts. Wie komme ich an die Fehlermeldung?
Einen Kommentar schreiben:
-
Ändert leider nix. Ich habe 3.11, 3.10 und 3.9 getestet. Immer das gleiche. Auch alle DEBUG Meldungen bringen mich nicht weiter. Die Exception kommt in Zeile 208 in der db.py
Im log gibt es nur noch:
nicht hilfreichCode:Traceback (most recent call last): File "/usr/local/smarthome/lib/plugin.py", line 703, in run self.plugin.run() File "/usr/local/smarthome/plugins/database/__init__.py", line 180, in run self.build_orphanlist(True) File "/usr/local/smarthome/plugins/database/__init__.py", line 920, in build_orphanlist cur.close() AttributeError: 'NoneType' object has no attribute 'close'
Einen Kommentar schreiben:
-
Welche Python Bersion nutzt Du? Mit Bookworm kommt standardmäßig Python 3.11. Das wird von SmarHomeNG noch nicht unterstützt. Mit Python 3.11 gab es auch schon andere Probleme, die mit einem Wechsel auf eine unterstützte Python Version weg waren.
Einen Kommentar schreiben:
-
Hallo
ich bin am Update meines smarthome server (auf debian bookworm) und bekomme die Anbindung an mysql nicht zum laufen. Weder mit mysql noch mit mariadb. Fehler: Database [Database]: Could not connect to the database using 'pymysql': object supporting the buffer API required
Gab es hier im Thread auch schon...jedoch ohne Lösung. Ich weiß das es nicht an pymysql liegt (test standalone funktioniert). Jemand eine Idee?
Gruss, Micha
Einen Kommentar schreiben:
-
Danke Martin,
so bin ich vorgegangen, bestimmt nicht elegant, aber es hat funktioniert:
Code:/usr/local/smarthome/var/db ls -rw-rw-r-- 1 pi pi 560M 25. Jun 04:50 smarthomeng.db sudo systemctl stop smarthome.service sudo chmod 760 smarthomeng.db sudo chown smarthome smarthomeng.db ls -rwxrw---- 1 smarthome pi 560M 25. Jun 04:50 smarthomeng.db*
Einen Kommentar schreiben:
-
Das klingt erstmal so.Zitat von Maexle Beitrag anzeigenIch denke Ihr wisst bestimmt wie das behoben werden kann, liegt es an den "Rechten der Datei"?
Die Datenbank Datei liegt im Verzeichnis ../var/db uns sollte dem User smarthome gehören (mit sudo chown setzen) und mindestens die Rechte für den User haben (mit chmod setzen)
Außerdem ist wichtig, dass die Datenbank konsistent ist. Dazu MUSS SmartHomeNG beendet werden, bevor Du die Datenbankdatei kopierst.
Einen Kommentar schreiben:
-
Nach der gestrigen Neuinstallation sieht es soweit ganz gut aus - nur die Datenbank will noch nicht.
2023-07-11 12:19:41 ERROR lib.db Can not execute query: INSERT INTO log(item_id, time, val_str, val_num, val_bool, duration, changed) VALUES (?,?,?,?,?,?,?); (args [98, 1689070706814, None, -14195.7, 1, 30460, 1689070781185]): attempt to write a readonly database
2023-07-11 12:19:41 ERROR plugins.database Database: Error for query INSERT INTO log(item_id, time, val_str, val_num, val_bool, duration, changed) VALUES (98,1689070706814,None,-14195.7,1,30460,1689070781185);: attempt to write a readonly database
2023-07-11 12:19:41 WARNING plugins.database Problem dumping ITEMXYZ: attempt to write a readonly database
WARNING plugins.database Problem dumping ITEMXYZ: attempt to write a readonly database
Ich denke Ihr wisst bestimmt wie das behoben werden kann, liegt es an den "Rechten der Datei"? --> "chmod rw" oder so ähnlich?
Danke
Einen Kommentar schreiben:
-
NeinZitat von Maexle Beitrag anzeigenHat dies Auswirkungen auf die "Unteritems"
Einen Kommentar schreiben:
-
Hallo zusammen,
mit diesem (Ausschnitt) Item lese ich den Stromzählerstand aus. Mittlerweile ist das schon eine recht ordentliche Menge an Datensätzen.
Mein Gedanke war den Bereich "zaehler" mit einem "database_maxage: 360 # Alter der Daten maximal 1 Jahr zu versehen. Hat dies Auswirkungen auf die "Unteritems" "stunde" und "erster" nach meinem Verständnis nicht, da diese eigenständig in die DB geschrieben werden.
Aber bevor ich da Mist baue dachte ich mir frag lieber mal nach.
Danke
Code:zaehler: name: Stromzählerstand in kWh type: num database: init #### hier würde ich das maxage einfügen #### eval: round(sh.verbrauch_strom.zaehlertotal() / 1000, 2) eval_trigger: verbrauch_strom.zaehlertotal stunde: # zu festgelegten Zeiten wird der aktuelle Zaehlerstand in der DB abgelegt type: num database: init eval: round(sh.verbrauch_strom.zaehlertotal() / 1000, 2) crontab: '0 */6 * * = 1' # alle 6 Stunden erster: type: num database: init eval: round(sh.verbrauch_strom.zaehlertotal() / 1000, 2) crontab: '0 0 1 * = 1' # Monatserster um 00:00 Uhr
Einen Kommentar schreiben:


Einen Kommentar schreiben: