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 :shock: 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
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
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&param=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
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&param=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... :roll:

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 8-)
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
Bonjour,

Mode d' emploi du cron: https://fr.wikipedia.org/wiki/Cron

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
?? :roll:

Si tu n'as pas de souci avec la crontab, tu sais comment lancer une tâche chaque 24h n'est-ce pas ? :lol:

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 :o
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
Screenshot_2019-12-27 Domoticz_dev(5).png (39.77 Kio) Consulté 4517 fois