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 <\>.
dokho
Messages : 685 Inscription : 28 déc. 2014, 19:32
Message
par dokho » 09 juil. 2017, 23:24
Bonsoir,
J'ai un problème avec un script dans lequel j'appelle, via curl, une url contenant des doubles quotes:
Code : Tout sélectionner
os.execute('curl http://192.168.x.XXX/control?cmd=NEXTION,tempatelier.txt="HELLO WORLD"')
J'ai essayé pas mal de combinaison mais sans succès ... si une âme charitable pouvait m'indiquer la solution
Merci.
Chrominator
Messages : 1042 Inscription : 19 déc. 2015, 07:29
Localisation : France
Message
par Chrominator » 10 juil. 2017, 01:29
As-tu essayé ce qui suit ?
Code : Tout sélectionner
os.execute('curl http://192.168.x.XXX/control?cmd=NEXTION,tempatelier.txt=%22HELLO WORLD%22')
Un bon frein vaut mieux que deux sparadraps.
Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
dokho
Messages : 685 Inscription : 28 déc. 2014, 19:32
Message
par dokho » 10 juil. 2017, 07:31
Chrominator a écrit : As-tu essayé ce qui suit ?
Code : Tout sélectionner
os.execute('curl http://192.168.x.XXX/control?cmd=NEXTION,tempatelier.txt=%22HELLO WORLD%22')
Bonjour,
Essayé à l'instant et ça ne fonctionne pas
vil1driver
Messages : 5661 Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)
Message
par vil1driver » 10 juil. 2017, 11:33
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
local txt = "hello world"
os.execute('/usr/bin/curl -m 15 "http://192.168.x.XXX/control?cmd=NEXTION,tempatelier.txt='..url_encode(txt)..'" &')
dokho
Messages : 685 Inscription : 28 déc. 2014, 19:32
Message
par dokho » 10 juil. 2017, 17:21
Salut vil1driver,
Je viens de tester: ça ne fonctionne pas non plus
vil1driver
Messages : 5661 Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)
Message
par vil1driver » 10 juil. 2017, 17:48
alors le problem est ailleurs,
teste déjà les choses dans un navigateur..
dokho
Messages : 685 Inscription : 28 déc. 2014, 19:32
Message
par dokho » 10 juil. 2017, 17:48
Dans un navigateur ou en ligne de commande dans une console ça passe nickel
Envoyé de mon SM-N9005 en utilisant Tapatalk
vil1driver
Messages : 5661 Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)
Message
par vil1driver » 10 juil. 2017, 18:16
bah si tu sais quelle commande va bien, utilise la dans le script...
dokho
Messages : 685 Inscription : 28 déc. 2014, 19:32
Message
par dokho » 10 juil. 2017, 18:39
Ce n'est pas aussi simple que ça ...
Ceci fonctionne dans un navigateur:
Code : Tout sélectionner
http://192.168.0.239/control?cmd=NEXTION,tempatelier.txt="hello"
Ceci fonctionne dans un terminal:
Code : Tout sélectionner
curl 'http://192.168.0.239/control?cmd=NEXTION,tempatelier.txt="test"'
Mais ça dans un script je n'arrive pas à trouver ce qui fonctionne ...
dokho
Messages : 685 Inscription : 28 déc. 2014, 19:32
Message
par dokho » 10 juil. 2017, 18:48
La commande qui permet de régler l'éclairage de l'écran fonctionne sans problème dans le script:
Code : Tout sélectionner
os.execute('curl http://192.168.0.239/control?cmd=NEXTION,dim=0')
Le problème vient des doubles quotes, je ne sais pas comment les passer ... et j'aimerais éviter de passer par un script bash ou du mqtt ...