Export certaines données de la base vers un fichier
Re: Export certaines données de la base vers un fichier
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
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
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Export certaines données de la base vers un fichier
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
bien sur donner au script les droits d'exécution
il est préférable de mettre le chemin vers un script dans crontab.
lancement de backupEDF.sh tous les lundi à 23h57
Code : Tout sélectionner
57 23 * * 1 /home/pi/domoticz/backupEDF.shCode : 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
Code : Tout sélectionner
sudo chmod +x backupEDF.shMAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Export certaines données de la base vers un fichier
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.
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
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 ??
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 ??
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Export certaines données de la base vers un fichier
à aucun moment tu ne fais 'sudo' dans tout ça ?
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Export certaines données de la base vers un fichier
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 ?)jamon66 a écrit :... si je les lance depuis la ligne de commande mais ne s’exécutent pas depuis cron...
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.
Raspberry Pi 2 + carte RF pi "maison" + Domoticz
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
Re: Export certaines données de la base vers un fichier
Oui , voila tout est ditrimram31 a écrit :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 ?)jamon66 a écrit :... si je les lance depuis la ligne de commande mais ne s’exécutent pas depuis cron...
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.
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Objectif : WAF > 1
Re: Export certaines données de la base vers un fichier
Merci à tous pour vos conseils, en prenant soin de bien mettre les chemins complets et corrects, tout est rentré dans l'ordre.
Encore merci.
Encore merci.
Re: Export certaines données de la base vers un fichier
Bonjour,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
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
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
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