Envoyer Info text device par SMS

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 <\>.
deennoo
Messages : 4036
Inscription : 25 janv. 2015, 02:00

Envoyer Info text device par SMS

Message par deennoo »

J'essaye de combiner deux tutos en un:

Celui qui recupere les infos de trajet de Waze :

viewtopic.php?f=17&t=785

Et celui de controler Domoticz par SMS :

viewtopic.php?f=17&t=596


Le but :

lorsque qu'un interrupteur est activé par son planning, il envoie les info du waze text device par sms a son destinataire

La communication entre WAZE et domoticz est OK
La communication entre Domoticz et Ultimate SMS gateway est OK

Si dans mon navigateur je tape :

Code : Tout sélectionner

http://192.168.0.21:8080/json.htm?type=devices&rid=2625
je recupere :

Code : Tout sélectionner

{
   "ActTime" : 1442309771,
   "ServerTime" : "2015-09-15 11:36:11",
   "Sunrise" : "07:42",
   "Sunset" : "20:12",
   "result" : [
      {
         "AddjMulti" : 1.0,
         "AddjMulti2" : 1.0,
         "AddjValue" : 0.0,
         "AddjValue2" : 0.0,
         "BatteryLevel" : 255,
         "CustomImage" : 0,
         "Data" : "34:27 par A62 - E72",
         "Description" : "",
         "Favorite" : 1,
         "HardwareID" : 4,
         "HardwareName" : "Dummy",
         "HardwareType" : "Dummy (Does nothing, use for virtual switches only)",
         "HardwareTypeVal" : 15,
         "HaveTimeout" : false,
         "ID" : "14A90",
         "LastUpdate" : "2015-09-14 18:00:07",
         "Name" : "Trajet Boulot Maison en Minutes",
         "Notifications" : "false",
         "PlanID" : "0",
         "Protected" : false,
         "ShowNotifications" : false,
         "SignalLevel" : 12,
         "SubType" : "Text",
         "Timers" : "false",
         "Type" : "General",
         "TypeImg" : "text",
         "Unit" : 1,
         "Used" : 1,
         "XOffset" : "0",
         "YOffset" : "0",
         "idx" : "2625"
      }
   ],
   "status" : "OK",
   "title" : "Devices"
}
Ce qui m'interesse c'est la ligne Data.

Comme le script qui recupere les infos de Waze lit le Json je m'en suit servit comme base et je l 'ai adapté :

Code : Tout sélectionner

commandArray={}

--import des fontions pour lire le JSON
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()

if (devicechanged['Envoye sms'] == 'On') then
   local waze=assert(io.popen('curl "http://192.168.0.21:8080/json.htm?type=devices&rid=2625"'))
   local Data = waze:read('all')
   waze:close()
   local jsonTrajet = json:decode("Data")
   Data = jsonTrajet['response']['Data']
   commandArray['OpenURL']='192.168.0.10:56692/send.html?smsto=xxxxxxxxxxxxx&smsbody=Data&smstype=sms&smstype=sms'
end
return commandArray
mais cela ne fonctionne pas, le script reste en route plus de 10 seconde et me provoque une erreur dans les logs de domoticz.

Un peu d'aide ou de sourcing est la bienvenu
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr
deennoo
Messages : 4036
Inscription : 25 janv. 2015, 02:00

Re: Envoyer Info text device par SMS

Message par deennoo »

résolue, pourquoi faire simple quand on puet faire compliqué :

voici le script LUA qui fonctionne bien :

Code : Tout sélectionner

--Donner un nom a l'information que l'on veut envoyer
info = string.sub(otherdevices_svalues['nom de votre device'],1)

--prendre l'encodeur URL qui commande domoticz par sms cea va servir a mettre en forme le text pour que smsultimategateway le comprenne
function url_encode(str)
  if (str) then
    str = string.gsub (str, "\n", "\r\n")
     str = string.gsub (str, "([^%w %-%_%.%~])",
        function (c) return string.format ("%%%02X", string.byte(c)) end)
    str = string.gsub (str, " ", "+")
  end
  return str   
end

commandArray={}

if (devicechanged['nom de votre interrupteur plannifier'] == 'On') then
    -- print('SMS : réponse -> '..info) pour le debug
    -- print('SMS : réponse -> '..url_encode(info)) pour le debug
   commandArray['OpenURL']='ip et port de sms ultimate gateway/send.html?smsto=votre numero de telephone qui commence par +33&smsbody=Tu%20vas%20mettre%20'..url_encode(info)..'%20on%20t\'attend&smstype=sms'
end
return commandArray
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr
Répondre