Page 1 sur 4

Notification sms incluant la valeur d'une variable ?

Publié : 13 déc. 2014, 15:07
par Biocef
Bonjour,

Je cherche à inclure la valeur d'une variable dans un message envoyé via le service de notification sms de Free Mobile mais je ne trouve pas comment faire.

Concrètement, je voudrais être alerté en cas de gel durant le nuit et avoir dans le sms la température la plus basse qu'il a fait.
A l'aide d'un blockly j'arrive à avoir cette température dans une variable mais je bloque sur l'insertion de celle-ci dans une notification sms.

Je voudrais par exemple, recevoir le matin un sms du style "Cette nuit il a fait -5".

Merci pour votre aide !!

Re: Notification sms incluant la valeur d'une variable ?

Publié : 13 déc. 2014, 18:07
par patrice
On eut faire un truc comme cela

imaginons que ta temperature soit dans un script sh sous le nom de TEMP
ici dans mon exemple j'ai mis "en dur" TEMP="-6.5" mais bien sur toi tu utilises ta variable

et à la fin de l'url tu ajoutes un +$TEMP en fermant les guillemets avant et hop...

#!/bin/sh
TEMP="-6.5"
curl -s -i -k "https://smsapi.free-mobile.fr/sendmsg?u ... &msg=Cette nuit : "+$TEMP

Re: Notification sms incluant la valeur d'une variable ?

Publié : 14 déc. 2014, 06:06
par Jihem
Bonjour
Sur mon congélateur j'ai mis une notification qui m'envoie un sms quand la température monte au dessus d'un certain seuil. C'est directement depuis le widget du thermomètre.
Si tu veux connaître exactement la plus basse température, il faut aller voir sur le log du thermomètre.
Je ne sais pas si on peut récupérer les valeurs des logs pour les analyser depuis un script mais ça doit bien être quelque part.
A creuser

Re: Notification sms incluant la valeur d'une variable ?

Publié : 14 déc. 2014, 11:20
par patrice
Bonjour

Je n'avais pas compris a la lecture de ton premier message que ta valeur etait stockée dans un variable Domoticz
Il faut donc aller l'extraire avant d'utiliser le script sh que je t'ai donné plus haut

D'abord dans un navigateur tu lances un
http://192.168.1.81:8080/json.htm?type= ... rvariables

qui liste toutes les variables de Domoticz,
tu y reperes l'idx de ta variable a toi

ensuite un /json.htm?type=command&param=getuservariable&idx=IDX
te donne le contenu de la variable


Ensuite tu peux utiliser un script comme celui que j'ai fait pour recuperer l'etat des batteries
en le modifiant pour qu'il aille chercher "Value' et non pas "BatteryLevel"
changer les offset et longueur pour bien recuperer ta variable avec les -
tu mets la valeur 1 dans debug au tout debut du programme pour voir ce que tu recuperes

puis dans la partie qui se nomme def maj_widget tu remplace les 'http domoticz' par ton url de chez free

Essaye ca et dis nous si ca roule ,
j'essaie de trouver un peu de temps pour refaire un script python propre sinon

Bon Dimanche

Re: Notification sms incluant la valeur d'une variable ?

Publié : 14 déc. 2014, 21:37
par Biocef
Merci pour ton aide, je vais regarder tout ça dès que j'ai un peu de temps !

Par contre après quelques tests je me suis rendu compte que bizarrement, mon blockly ne stockait pas la température mais l'id de mon capteur ...

Re: Notification sms incluant la valeur d'une variable ?

Publié : 15 déc. 2014, 17:46
par Jihem
Bonsoir,
Dans l'esprit de cette discussion, je voudrais savoir si on peut passer une variable dans la commande: commandArray['SendNotification'] de lua?
par exemple

Code : Tout sélectionner

 temp = uservariables['T_max']
comment l'inserer dans la commande
commandArray['SendNotification']='subject#body#0'
je ne trouve pas la syntaxe. ( $temp ça marche en bash mais pas là)
Merci d'avance

Re: Notification sms incluant la valeur d'une variable ?

Publié : 15 déc. 2014, 21:09
par patrice
Bonsoir
Oui on peut faire un truc comme cela
temp=uservariables['limvar']
print ("temp" .. temp)
commandArray['SendNotification']='variable= '..tostring(temp)..'#ma variable'
la notif marche en 2 partie le sujet puis # puis le body
Attention à garder le # puis mettre un body et à mettre les quotes correctement

je pense mais je n'ai pas testé (dépassement de mon quota quotidien)
que ceci devrait fonctionner si je ne me suis pas raté dans les '

commandArray['SendNotification']='La variable= '#ma variable= '..tostring(temp)..

Re: Notification sms incluant la valeur d'une variable ?

Publié : 15 déc. 2014, 23:11
par Biocef
J'ai essayé d'adapter le script de niveau de batterie mais je bloque à l'installation de request, la commande pip ne fonctionne pas, command not found.
Que dois-je faire ?

Et encore un grand merci pour toutes ces infos !!

Re: Notification sms incluant la valeur d'une variable ?

Publié : 16 déc. 2014, 08:50
par patrice
Bonjour

un sudo apt-get install python-pip

Re: Notification sms incluant la valeur d'une variable ?

Publié : 16 déc. 2014, 11:54
par Jihem
Bonjour
Merci Patrice ça marche bien.
Du coup, voila un petit script en Lua qui envoie une notification (en Prowl chez moi) à 7h30 le matin et qui indique la température la plus basse de la nuit (entre le coucher et le lever du soleil).

Code : Tout sélectionner

-- T_ext: temperature exterieure
-- T_mini: uservariable qui stocke la température la plus basse
--à mettre dans ~/domoticz/scripts/lua/script_device_Tmini.lua  
commandArray = {}

    if (devicechanged['Text'])
        then
            if (uservariables['T_mini'] > otherdevices_temperature['Text']) and  (timeofday['Nighttime'])
              then
                uservariables['T_mini'] = otherdevices_temperature['Text']
                commandArray['Variable:T_mini']= tostring(uservariables["T_mini"])
            end

        time = os.date("*t")
            if time.hour == 7 and time.min == 30
               then
                  commandArray['SendNotification']='Temperature Mini#'..(string.format("%g",tostring(uservariables['T_mini'])))..'°C'
                  uservariables['T_mini'] = 100
                  commandArray['Variable:T_mini']= tostring(uservariables["T_mini"])
           end
 end
return commandArray
A adapter selon les besoins, on peut aussi faire un thermomètre Mini-Maxi que l'on récupère dans Domoticz.
A ce sujet ce serait bien d'avoir un virtual-sensor qui stocke 2 températures; comment peut on faire une suggestion à Domoticz?