Page 2 sur 3
Re: Export certaines données de la base vers un fichier
Publié : 29 mai 2016, 08:14
par jamon66
Bonjour,
Je voudrais pouvoir sauvegarder certaines données de DOMOTICZ vers un fichier CSV. j'utilise une tache CRON avec :
57 23 * * 1 sqlite3 -header -csv /home/pi/domoticz/domoticz.db "select * from Meter;" > /home/pi/TELEINFO/`date +%y%m%d`_EDF.csv
2 difficultés pour moi :
La tache CRON ne s’exécute pas. Quand je fais crontab -e il m'ouvre un répertoire tmp, prend bien mes modifications mais rien.
La commande s’exécute bien manuellement.
Si je lance la commande manuellement le nom du fichier créé ne tient pas compte des %y il s'appelle date+%y%m%d_EDF.csv littéralement.
Quelqu'un aurait il une piste ? Merci d'avance
Re: Export certaines données de la base vers un fichier
Publié : 29 mai 2016, 08:48
par vil1driver
Salut,
il est préférable de mettre le chemin vers un script dans crontab.
lancement de backupEDF.sh tous les lundi à 23h57
backupEDF.sh
Code : Tout sélectionner
#!/bin/bash
/usr/bin/sqlite3 -header -csv /home/pi/domoticz/domoticz.db "select * from Meter;" > /home/pi/TELEINFO/$(date +%y%m%d)_EDF.csv
bien sur donner au script les droits d'exécution
Re: Export certaines données de la base vers un fichier
Publié : 30 mai 2016, 18:03
par jamon66
Merci Vil1driver pour ton aide,
si je lance le bash manuellement :
Le fichier se crée avec le bon nom cette fois ci . Je crois que j'ai un problème avec les permissions de mon répertoire TELEINFO ou à la création du fichier. Le fichier se crée mais si je veux le voir je dois cliquer sur "appliquer récursivement le groupe, le proprio et les permis" depuis les propriétés du répertoire dans winscp.
depuis crontab :
je ne sais pas si il se lance mais le fichier n'est pas créé même en modifiant les permissions récursivement.
Je ne suis vraiment pas fort avec linux mais je pense ne pas etre loin, merci pour toute l'aide que tu pourras m'apporter c'est vraiment rageant vu les possibilités qu'apporte ce materiel.
Encore merci.
Re: Export certaines données de la base vers un fichier
Publié : 02 juin 2016, 12:21
par jamon66
Bonjour,
J'avance dans mes recherches :
j'ai écarté CRONTAB en exécutant des taches simples cela fonctionne
j'ai écarté les permissions sur les répertoires créés en utilisant /tmp
j'an arrive donc à :
le script sh ou la commande fonctionnent ( cad créent le fichier export ) si je les lance depuis la ligne de commande mais ne s’exécutent
pas depuis cron. Je creuse autour du Shell ou bash mais c'est encore obscur pour moi.
un avis qui pourrait m’éclairer ??
Re: Export certaines données de la base vers un fichier
Publié : 02 juin 2016, 12:55
par vil1driver
à aucun moment tu ne fais 'sudo' dans tout ça ?
Re: Export certaines données de la base vers un fichier
Publié : 03 juin 2016, 14:20
par rimram31
jamon66 a écrit :... si je les lance depuis la ligne de commande mais ne s’exécutent pas depuis cron...
vil1driver l'a indiqué je crois plus haut, met des chemins absolus a TOUS les appels d'exécutables. Tu utilises sqlite3, ou est-il installé ? (
$ which sqlite3 ?)
La différence entre un appel crontab et un appel en ligne de commande tient a ce qu'on appelle sous Linux l'environnement, un ensemble de variables dites justement d'environnement. Par exemple la variable PATH qui contient une liste de répertoires et qui permet d'utiliser des raccourcis a l'exécution d'un programme (de ne pas rappeler le chemin complet), il y en a d'autres comme la variable SHELL qui est le shell utilisé "par défaut" ... Tapes
env en ligne de commande pour voir.
Donc écrire ses commandes dans un fichier, le commencer par un #!/bin/... selon le shell souhaité (sh, bash, csh ...), appeler tous les outils/scripts en utilisant un chemin absolu (/usr/bin/sqlite3 par ex) et/ou définir les variables d'environnement utiles. Ajouter au besoin des logs en redirigeant des "echo" dans un fichier >>/tmp/<mon fichier de log> pour debugger.
Re: Export certaines données de la base vers un fichier
Publié : 03 juin 2016, 15:05
par patrice
rimram31 a écrit :jamon66 a écrit :... si je les lance depuis la ligne de commande mais ne s’exécutent pas depuis cron...
vil1driver l'a indiqué je crois plus haut, met des chemins absolus a TOUS les appels d'exécutables. Tu utilises sqlite3, ou est-il installé ? (
$ which sqlite3 ?)
La différence entre un appel crontab et un appel en ligne de commande tient a ce qu'on appelle sous Linux l'environnement, un ensemble de variables dites justement d'environnement. Par exemple la variable PATH qui contient une liste de répertoires et qui permet d'utiliser des raccourcis a l'exécution d'un programme (de ne pas rappeler le chemin complet), il y en a d'autres comme la variable SHELL qui est le shell utilisé "par défaut" ... Tapes
env en ligne de commande pour voir.
Donc écrire ses commandes dans un fichier, le commencer par un #!/bin/... selon le shell souhaité (sh, bash, csh ...), appeler tous les outils/scripts en utilisant un chemin absolu (/usr/bin/sqlite3 par ex) et/ou définir les variables d'environnement utiles. Ajouter au besoin des logs en redirigeant des "echo" dans un fichier >>/tmp/<mon fichier de log> pour debugger.
Oui , voila tout est dit
Re: Export certaines données de la base vers un fichier
Publié : 03 juin 2016, 17:18
par jamon66
Merci à tous pour vos conseils, en prenant soin de bien mettre les chemins complets et corrects, tout est rentré dans l'ordre.
Encore merci.
Re: Export certaines données de la base vers un fichier
Publié : 18 mars 2017, 12:37
par prcedric
fredclo a écrit :Bonjour,
je me réponds à moi-même au cas où ca pourrait aider certains.
J'ai réussi à faire ce que je voulais, c'est à dire une tâche CRON, toutes les semaines, pour exporter une table sur un NAS, et ainsi conserver les bases température et conso EDF qui sont alimenter toutes les 5 mn. Export csv tous les lundis à 23h56 et 23h57
56 23 * * 1 sqlite3 -header -csv /home/pi/domoticz/domoticz.db "select * from Temperature;" > /media/votreDossierNAS/`date +%y%m%d`_TEMP.csv
57 23 * * 1 sqlite3 -header -csv /home/pi/domoticz/domoticz.db "select * from MultiMeter;" > /media/votreDossierNAS/`date +%y%m%d`_EDF.csv
Bonjour,
Nouveau sur ce forum et dans domoticz. Je suis avec un RPI3 et RFLINK, un montage optocoupleur en RF433 pour la teleinfo edf et tout cela dans Domoticz.
Je vois bien les données heures creuses et pleines ça c'est nickel.
Par conrtre, dans les logs on ne voit que la journée active et j'aurais moi aussi besoin de faire des étude sur certains jours précédents que je n'ai pas enregistrées.
Ne sachant pas coder, je m'adresse à vous car je sais copier coller et taper au clavier mais par exemple si je veux faire ce que Fredclo à écrit, je ne sais pas avec quel application je doit taper ce code et encore moins ce qu'est "cron".
Est-ce que l'un d'entre vous aurait la patience et le temps de m'expliquer comment faire juste pour sauvegarder ces données....
Par avance merci.
Re: Export certaines données de la base vers un fichier
Publié : 06 janv. 2018, 10:30
par thuglife
Bonjour,
En faisant ceci, nous exportons 1 journée au pas de 5min, est-il possible d'exporter une semaine au pas de 5 min ?
Merci