Je pense qu’il manque des librairies mais je ne sais pas lesquelles. Je précise que j’ai la même erreur avec ‹ import MySQLdb ›.
La commande ci dessus est pour mariadb mais il doit bien exister quelque chose pour SQLite… Là aussi j’ai besoin d’aide.
Merci d’avance.
Oui tu as besoin de prendre du recul sur ce que tu veux faire
Pour commencer la base de données, expliqué dans les grandes lignes: SQLite est un format de fichier qui permet d’avoir une base de données accessible avec des requêtes SQL… sans pour autant avoir un serveur SQL. MariaDB est un serveur sql… donc un programme qui tourne en tache de fond pour gérer la base SQL.
MySQLdb est un package qui permet d’accéder à un serveur SQL… tu n’en a pas vu que tu as le fichier SQLite.
La commande connect c’est pour ouvrir une connexion à un serveur.
Donc si tu veux lire ton fichier home-assistant_v2…db il faut que tu trouve un package python dédié au SQLite.
En revanche je te déconseille de faire ça sur le fichier .db qui est en ligne… il faudrait laisser à HA la liberté d’utilise ce fichier comme il lui semble. Tu pourrais avoir des effets non désirés.
Ensuite concernant le sensor que tu veux faire, c’est pour analyser le comportement de tes autres sensors c’est ça?
Si c’est bien ça n’y a t’il rien à faire avec le module de statistiques déjà présent:
Merci,
j’ai l’intégration SQLite web d’installée. J’imagine que les requêtes se font via quelque chose du genre REST_API?
Sinon, j’ai placé le fichier python dans le répertoire python_scripts mais j’utilise la commande python3 /config/python_scripts/lectureSQL.py sans faire appel à l’intégration « python _script » de HA.
Herbs
Je pense que tu as peut être raison…
Il doit certainement falloir installer quelque chose pour avoir accès à toutes les librairies.
Je regarde coté AppDeamon, pyscript ou Jupyter.
Honnêtement pour être plus safe… fais une copie du fichier db pour commencer.
Installes python sur une autre machine.
Trouves un librairie python pour SQLite et la doc comment l’utiliser
Et travailles sur tes requêtes là dessus.
Je n’ai pas besoin de faire trop d’accès à la base de donnée. Mais je vais suivre le conseil de la dupliquer au moins pour tester le script.
Je voulais faire mes requêtes directement dans HA pour utiliser les librairies disponibles et pas celles qui font tout mais ne sont pas intégrables dans HA…
Sinon le module statistique ne permet pas de combiner les senseurs comme pour une covariance.
Je ne pense pas que ce soit vraiment fait pour ça dans la version basique de la db en SQLite.
Avec MariaDB c’est une autre histoire, c’est plus pensé pour gérer des utilisateurs et faire d’autres chose avec les données. Et y accéder à distance avec python par exemple…
Chez moi j’ai mis MariaDB pour pouvoir collecter tous les jours des infos pour ma base perso qui me sert d’historique.
D’accord, je regarde cela.
Est ce que Mariadb est une base supplémentaire? en parallèle du fichier home-assistant_v2.db?
J’ai vu qu’il y avait possibilité d’accéder à home-assistant_v2.db via la librairie sqlalchemy.
(il y a des intégrations sur le git qui l’utilise)
Par contre, je pense que je n’ai pas encore trouvé le bon tuto
super !
ça fonctionne et c’est beaucoup + facile à utiliser que la librairie sqlalchemy
sqlite3 semble une librairie native de python…
reste d’autre bug et je partage mon code
voili voilou
Une requête SQLite pour lire la base de donnée HA et écrire le résultat dans un fichier texte type csv.
# copie de
# https://docs.python.org/3/library/sqlite3.html
# le fichier s'execute avec la commande
# python3 /config/python_scripts/lectureSQLnew.py
#
logfile = open("scriptSQL.log","w")
import sqlite3
connection_db = sqlite3.connect('home-assistant_v2.db')
curs = connection_db.cursor()
query = """
SELECT entity_id, state, last_updated
FROM states
WHERE entity_id
IN ('sensor.mdl_cumul_power', 'sensor.temperature_int', 'sensor.temperature_ext')
AND ( last_updated > '2022-02-10 00:35' )
"""
for row in curs.execute(query):
X = row[0]
Y = row[1]
logfile.write(X +', ' + Y +'\n')
print(row[0] + ',' + row[1])
connection_db.close()
logfile.close()
connection_db = sqlite3.connect('home-assistant_v2.db')
query = """
SELECT entity_id, state, last_updated
FROM states
WHERE entity_id
IN ('sensor.mdl_cumul_power', 'sensor.temperature_int', 'sensor.temperature_ext')
AND ( last_updated > '2022-02-10 00:35' )
"""
with connection_db() as cursor:
cursor.execute(query)
for row in cursor:
X = row[0]
Y = row[1]
logfile.write(X +', ' + Y +'\n')
print(row[0] + ',' + row[1])
mais bon l’essentiel est que ton problème soit résolu
oui je crois que je t’ai raconté une grosse co…erie ma façon d’écrire est à partir d’une class ( ça simplifie le code quand tu as beaucoup de requêtes… )
Mais dans ton cas, pour une requête unique, pas besoin de class.