Convertir les espaces, points etc...

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 <\>.
stephdes
Messages : 285
Inscription : 06 oct. 2016, 20:50

Convertir les espaces, points etc...

Message par stephdes »

Bonsoir à tous !

J'en appel aux pros du LUA et du JSON. Pour faire simple, je cherche à faire parler Domoticz sur la base d'un script de jmleglise. Mon domoticz est sous windows et parle déjà à travers SARAH à l'aide de la commande : http://localhost:8888/?tts=blablabla

Jusqu'ici, pas de problème. Sauf que dans mon cas, le texte que j'ai à lui faire dire comporte des espaces et autre ponctuation et du coup, Domoticz me retourne un : Error: Error opening url: http://localhost:8888/?tts=Risque de pluie

Ma question est, dans le script ci-dessous, comment dois-je faire pour les espaces (et autres) soient encodés genre "%20" pour un espace ?

Merci de votre aide !

Code : Tout sélectionner

commandArray = {}

local timeNow= os.date("*t")

if otherdevices['Libre2'] == 'On' and
timeNow.hour >16
then
local sentence="Hello%20nous%20sommes%20le%20"..tonumber(os.date("%d")) -- Good morning, today we are the ..
local curl = 'C:\\curl\\bin\\curl.exe '

-- #############  TEMPERATURE & WEATHER FORECAST  #################   
   sentence=sentence.."%20La%20température%20extérieure%20est%20de%20"..uservariables['Froid'].."%20degré" -- outdoor temperature

   json = (loadfile "C:\\Program Files (x86)\\Domoticz\\scripts\\lua\\JSON.lua")()
   local city = "Dijon"
   local wuAPIkey = "xxx" -- Your Weather Underground API Key
   local file=assert(io.popen(curl.. 'http://api.wunderground.com/api/'..wuAPIkey..'/forecast/lang:FR/q/France/'..city..'.json'))   
   local raw = file:read('*all')
   file:close()   
   local jsonForecast = json:decode(raw)   
  -- prevision=jsonForecast.forecast.txt_forecast.forecastday[1].fcttext_metric  -- complete prevision
     prevision=jsonForecast.forecast.simpleforecast.forecastday[1].conditions  -- small forecast

print ("<font color='#f3031d'>TESTTESTEST</font>")
commandArray['OpenURL']="http://localhost:8888/?tts="..prevision..""


end

return commandArray
MiniPC W10 + RFXCom 433e + RFLINK
Elec : Téléinfo
Alexa + Alhau
MQTT...
(merci easydomoticz !)
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Convertir les espaces, points etc...

Message par vil1driver »

Salut,

Code : Tout sélectionner

-- encode du texte pour le passer dans une url
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

Code : Tout sélectionner

sentence = url_encode(sentence)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
stephdes
Messages : 285
Inscription : 06 oct. 2016, 20:50

Re: Convertir les espaces, points etc...

Message par stephdes »

Si seulement ça pouvait le faire...

Je teste et je te redis ! En tout cas merci Vil1driver !!!!! ;)
MiniPC W10 + RFXCom 433e + RFLINK
Elec : Téléinfo
Alexa + Alhau
MQTT...
(merci easydomoticz !)
stephdes
Messages : 285
Inscription : 06 oct. 2016, 20:50

Re: Convertir les espaces, points etc...

Message par stephdes »

Bingo !!!! Ca marche impec !!!

Merci Vil1driver !!! :D :D :D
MiniPC W10 + RFXCom 433e + RFLINK
Elec : Téléinfo
Alexa + Alhau
MQTT...
(merci easydomoticz !)
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Convertir les espaces, points etc...

Message par vil1driver »

De rien ;)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Répondre