Code : Tout sélectionner
sudo chmod +x monscript.shIl 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¶m="
#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