Page 2 sur 2

Re: A l'aide , mon script me rend dingue !

Publié : 28 févr. 2021, 07:30
par herisson69
Voilà le script en question. Donc l'idée de base est d'ajouter le lien vers le script dans la case Action ON ou Action OFF d'un objet type Interrupteur. Exemple chez moi: Mon Pihole est "disable", je lance le script en mettant le lien qui pointe dessus dans la case Action OFF. Penser à rendre executable le script par un :

Code : Tout sélectionner

sudo chmod +x monscript.sh
Pour mémoire (voir le début du post) il nécessite l'installation d'un serveur Rspisms, par exemple sur un Raspberry.
Il envoi une requête vers ce serveur pour créer et envoyé un SMS. En cas d'erreur la variable erreur est analyser et traiter par des if/then/elif. Chaque comparaison donne lieu à un message dans le log de Domoticz (requête API addlogmessge) et l'envoi d'un texte d'en un device virtuel texte créer pour ça .
Je n'ai pas traiter le retour à l’état ON de la condition de départ; donc le device texte aura le dernier message afficher en permanence jusqu'à une autre erreur si différente.
Nota : Certaine variable (errx) sont écrite en Anglais (mauvais anglais je suis absolument pas bilingue !), c'est pour éviter les mots accentués dans les requêtes curl. J'ai eu quelque déboire avec curl, notamment au niveau des espaces, traduit en "%20" et le + en "%2B"

Code : Tout sélectionner

#!/bin/bash

#Ce script est un essai pour automatisé  envoi de sms depuis domoticz
#simplement en appelant le script sur action on ou action off
#en utilisant un serveur Rspisms et en envoyant une requête à l'API de RAspisms

#renseigner les éléments ci-dessous
url="http://abs.def.ghi.jkl/raspisms" #url du serveur raspisms
Api_key="lefeqlfkeflfkssnskvsdv,sfjgsdv,s" #api key générer par le serveur Raspisms
msg_sms="pihole%20blocking%20is%20disable" #les%20 sont les espaces pour pas generer une erreur pour requete curl
#numero de telephone avec l'indicatif international France33 sans le signe +ni le 0
num=33123456789

#variable corps texte erreur
sms="SMS non envoyé ! Erreur ! Code erreur"

#liste message pour API/Json domoticz
err0="PIHOLE%20disconnected%20Send%20SMS%20OK"
err1="RASPISMS%20Bad%20Key%20API"
err2="RASPISMS%20Bad%20Request%20Invalid%20Parameter"
err4="RASPISMS%20Bad%20Request%20Missing%20Parameter"
err8="RASPISMS%20Cannot%20Request%20SMS%20Impossible"

#variable pour la construction des requetes sur l'API/Json de domoticz
#base url api/json serveur domoticz
url_dom="http://abs.def.ghi.def:8080/json.htm?type=command&param="
#log message domoticz
log_msg="addlogmessage&message="
#device  domoticz
device="udevice&idx="
#idx device domoticz creer un device virtuelle texte et indiquer son numero
idx="xxx"


error=$(curl -s -X POST "$url/api/scheduled/" -H "X-Api-Key: $Api_key" -d "text=$msg_sms" -d numbers=%2B$num  | jq -r .error )

echo $error #juste là pour le cas ou d'un test dans un terminal

if [ $error = 0 ]
        then
        echo "Message envoyé"
        curl ''$url_dom''$log_msg''$err0''
        curl ''$url_dom''$device''$idx'&svalue='$err0''

elif [ $error = 1 ]
        then
        echo $sms $error " Identifiant invalide, Vérifier la cle API"
        curl ''$url_dom''$log_msg''$err1''
elif [ $error = 2 ]
        then
        echo $sms $error "Une donnée non valide a été trouvé dans la requête"
elif [ $error = 4 ]
        then
        echo $sms $error "Il manque un paramètre à la requête"
        curl ''$url_dom''$log_msg''$err4''
        curl ''$url_dom''$device''$idx'&svalue='$err4''
elif [ $error = 8 ]
        then
        echo $sms $error "Requête SMS impossible"
        curl ''$url_dom''$log_msg''$err8''
        curl ''$url_dom''$device''$idx'&svalue='$err8''
fi
Voilà je pense que l'on peux faire plus propre mais pour ma part ça fait le job que je voulais et c'est suffisamment ouvert pour être modifié et donc utilisable pour d'autre situation !