Interactions Bash/ Domoticz

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
marco31
Messages : 7
Inscription : 02 nov. 2018, 14:47

Interactions Bash/ Domoticz

Message 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
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Interactions Bash/ Domoticz

Message 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é 4613 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é 4617 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é 4622 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`"
}
Pièces jointes
Screenshot_2019-12-27 Domoticz_dev(5).png
Screenshot_2019-12-27 Domoticz_dev(5).png (35.9 Kio) Consulté 4613 fois
Dernière modification par Chrominator le 27 déc. 2019, 18:41, modifié 1 fois.
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Interactions Bash/ Domoticz

Message 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:
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
marco31
Messages : 7
Inscription : 02 nov. 2018, 14:47

Re: Interactions Bash/ Domoticz

Message 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
marco31
Messages : 7
Inscription : 02 nov. 2018, 14:47

Re: Interactions Bash/ Domoticz

Message 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.
mike913
Messages : 159
Inscription : 18 oct. 2014, 10:22
Localisation : Morsang / Orge - Essonne
Contact :

Re: Interactions Bash/ Domoticz

Message par mike913 »

Bonjour,

Mode d' emploi du cron: https://fr.wikipedia.org/wiki/Cron
DS718+ 2 x 3To(SHR) - Firmware: DSM 7.0.1-42218
DS712+ 2 x 4To (SHR) - Firmware: DSM 6.2.4-25556
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox Delta
https://meteo.folcke.net
https://wiki.folcke.net
marco31
Messages : 7
Inscription : 02 nov. 2018, 14:47

Re: Interactions Bash/ Domoticz

Message 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.
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Interactions Bash/ Domoticz

Message 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:
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
marco31
Messages : 7
Inscription : 02 nov. 2018, 14:47

Re: Interactions Bash/ Domoticz

Message 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
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Interactions Bash/ Domoticz

Message 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é 4522 fois
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Répondre