Page 1 sur 2
Interactions Bash/ Domoticz
Publié : 27 déc. 2019, 16:52
par marco31
Bonjour à tous,
Apres moultes recherches sur le forum et sur Google, je ne suis pas parvenu à comprendre comment parvenir à mes fins
Le contexte : je récupère via un script shell la valeur de mon compteur d'eau sous la forme :
27/12/2019 13:47:44 655441litres Num17 114Mois 6h-18h serial:xxxxxxx
Je souhaiterai faire cette requête toutes les 24 heures et l'historiser sous Domoticz
- Ma 1ere difficulté est comment aller récupérer cette valeur (toujours stockée dans le meme fichier recrée à chaque requête/possibilité de la mettre dans un variable shell) ?
- Puis je utiliser le champ date/heure issu de ma requête pour horodater l'enregistrement dans Domoticz?
- Je suppose que je dois créer un capteur virtual de type compteur / Water ?
- J'ai vu une méthode qui consiste à stoper Domoticz / ajouter une valeur dans la db / redémarrer Domoticz. N'y aurait-il pas une méthode plus "douce", sans avoir à arreter Domoticz?
- Dois je créer un cron qui va lancer mon script toute les 24 heures et ensuite aller "inserer" la valeur du compteur dans Domoticz ? Ou alors, existe-t-il un scheduler interne à Domoticz qui pourrait lui meme lancer le script?
Je suis désolé de vous solliciter ainsi

mais je suis un peu perdu
Merci et Joyeux Noel
Re: Interactions Bash/ Domoticz
Publié : 27 déc. 2019, 18:15
par Chrominator
Tu peux t'inspirer de ce qui suit :
1- Créer un capteur virtuel en effet de type compteur.
2- Le modifier pour qu'il soit compteur d'eau :

- Screenshot_2019-12-27 Domoticz_dev(4).png (13.67 Kio) Consulté 4608 fois
3- Noter l'index du device qui vient d'être créé (le compteur d'eau).
4- Adapter le script bash situé en bas de ce post en révisant les variables.
5- Rendre le script exécutable ... i.e. chmod +x nom_du_script
5- Mettre l'appel de ce script dans la crontab à la fréquence voulue.
6- Se taper la lecture du WIKI de DZ pour comprendre ce qu'il fait avec les unités et bien avoir des litres
https://www.domoticz.com/wiki/Domoticz_ ... s.2C_Water

- Screenshot_2019-12-27 Domoticz API JSON URL's - Domoticz.png (22.68 Kio) Consulté 4612 fois
Je n'ai pas testé les valeurs de retour de l'API, mais ça peut se faire.
J'espère que ça aide.
Code : Tout sélectionner
#!/bin/bash
#-------------------------------------------------
#
# Cxxxxxxxxxxx@free.xx
#
# 2019-12-27 : Version initiale
#
#-------------------------------------------------
#-------------------------------------------------
#
# Définition des variables propres à l'installation
#
#-------------------------------------------------
cURL="/usr/bin/curl"
DOMOTICZ_SERVER="127.0.0.1:8080"
DEVICE_COMPTEUR="278"
FILE=/home/pi/compteur_water.txt
#-------------------------------------------------
#
# Import de la fonction de traçage
#
#-------------------------------------------------
source /home/pi/domoticz/scripts/voir_les_logs.sh
#-------------------------------------------------
#
# Récupération de la valeur de l'index du compteur d'eau
#
#------------------------------------------------
#
CPT=`cat $FILE | cut -d " " -f 3 | sed "s/litres//g"`
if [ $? == 0 ]; then
voir_les_logs "Compteur d'eau : ${CPT} Litres"
$cURL -s -i -H "Accept: application/json" "http://${DOMOTICZ_SERVER}/json.htm?type=command¶m=udevice&idx=${DEVICE_COMPTEUR}&svalue=${CPT}"
fi
+ la fonction voir_les_logs.sh qui sert à tous mes scripts et qui laisse une petite trace de son passage dans les logs de DZ du genre :

- Screenshot_2019-12-27 Domoticz_dev(1).png (3.6 Kio) Consulté 4617 fois
Code : Tout sélectionner
# Fonction permettant d'afficher un texte sur tty
# et dans les logs de Domoticz
#
# Cxxxxxxxxxxx@free.xx
#
# 2017-12-31 : Version initiale
#
#
cURL="/usr/bin/curl"
voir_les_logs () {
msg="$0: $1"
echo $msg
$cURL -i -H "Accept: application/json" "http://${DOMOTICZ_SERVER}/json.htm?type=command¶m=addlogmessage&message=`$JQ -s -R -r @uri <<< $msg`"
}
Re: Interactions Bash/ Domoticz
Publié : 27 déc. 2019, 18:33
par Chrominator
Je n'ai pas précisé mais c'est évident ; éviter à tout prix les accès directs à la base de DZ ; les API json sont là pour faire tout ce qu'on doit faire en toute sécurité, même si parfois le WIKI est peu loquace, voire sibyllin...

Re: Interactions Bash/ Domoticz
Publié : 27 déc. 2019, 19:16
par marco31
1000 merci pour ta réponse super complète Chrominator.
Je regrade tout ça, j'adapte et je te tiens au courant.
Bonne soirée
Re: Interactions Bash/ Domoticz
Publié : 27 déc. 2019, 22:10
par marco31
Merci pour ton tuto; après un peu d'adaptation, je confirme que cela fonctionne tres bien
Actuellement, j'obtiens un enregistrement de la meme valeur à chaque heure
Mon but étant "d'injecter" dans Domoticz une seule valeur par 24 heures (donc à chaque execution du cron), je souhaiterai juste une entrée quotidienne. C'est peut être une config simple mais je tourne en rond.
Tout en sachant que je risque de relever une valeur toutes les 12 heures, une âme charitable pourrait elle m'aider à mettre ceci en place via une méthode qui me permettrai de choisir facilement 24 ou 12 heures?
Merci.
Re: Interactions Bash/ Domoticz
Publié : 28 déc. 2019, 08:10
par mike913
Re: Interactions Bash/ Domoticz
Publié : 28 déc. 2019, 14:16
par marco31
Bonjour Mike,
Merci pour ta réponse mais je n'ai aucun soucis avec l'utilisation du cron mais c'est plutôt le fait d'éviter que Domoticz ne stocke la même valeur à chaque heure alors que la donnée n'est rafraichie que toutes les 24 heures (que je passerai à toutes les 12 heures prochainement).
Merci.
Re: Interactions Bash/ Domoticz
Publié : 28 déc. 2019, 16:45
par Chrominator
??
Si tu n'as pas de souci avec la crontab, tu sais comment lancer une tâche chaque 24h n'est-ce pas ?

Re: Interactions Bash/ Domoticz
Publié : 28 déc. 2019, 17:00
par marco31
D'après vos réactions, je pense que je n'ai pas bien compris le fonctionnement du compteur...
En fait, je me retrouve avec plusieurs valeurs de compteur dans l'historique mais c'est peut être du aux différents tests consécutifs que j'ai fait (notamment en lançant mon script bash "à la main"). J'avais imaginé que Domoticz allait chercher une valeur à intervalles réguliers dans mon fichier source de données
Donc, dans un fonctionnement normal, une entrée sera créée à chaque fois que je vais exécuter le script bash, c'est bien ça?
De plus, y aurait-il un moyen de rajouter à ce type de compteur un historique avec un horodatage spécifique?
Merci
Re: Interactions Bash/ Domoticz
Publié : 28 déc. 2019, 18:24
par Chrominator
marco31 a écrit : 28 déc. 2019, 17:00
Donc, dans un fonctionnement normal, une entrée sera créée à chaque fois que je vais exécuter le script bash, c'est bien ça?
Exactement.
marco31 a écrit : 28 déc. 2019, 17:00
De plus, y aurait-il un moyen de rajouter à ce type de compteur un historique avec un horodatage spécifique?
Je ne comprends pas le besoin ;
Domoticz va horodater la valeur du compteur à chaque fois que tu appelleras le script de mise à jour.
Ces données seront visibles dans le log du compteur sous forme de graphique quotidien, hebdomadaire, mensuel et annuel, avec à chaque fois la possibilité d'extraire les valeurs sous forme d'Excel ou de CSV et d'image.
Ce n'est pas suffisant ?

- Screenshot_2019-12-27 Domoticz_dev(5).png (39.77 Kio) Consulté 4517 fois