Bug script Lua &param ¶m

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 <\>.
pmachat
Messages : 84
Inscription : 13 oct. 2017, 13:37

Bug script Lua &param ¶m

Message par pmachat »

Bonjour

Je ne sais pas pourquoi mais j'ai un bug dans un de mes scripts Lua pour passer des commandes JSON

Dans mon script, j'ai indiqué cela
local url = domoticz_url..'/json.htm?type=command&param=udevice&idx='..IDXcons..'&nvalue=0&svalue='..ConsVac

Au niveau du Log, je vois cela
192.168.0.xx:8080/json.htm?type=command¶m=udevice&idx=343&nvalue=0&svalue=14

le &param devient ¶m :cry:

J'utilise Notepad++ (UTF8 sans BOM) comme éditeur

Je n'ai pas trouvé pourquoi ?
Quelqu'un a une idée en sachant que ce script a bien fonctionné pendant un temps ?

D'avance merci
Domoticz + Rflink + Xiaomi Gateway +Zigbee2Mqtt + Wemos + Dahua+ Alhau + Monitor:
- gestion vmc / hygrométrie
- pilotage ampli Denon Ceol
- surveillance piscine
- commande thermostat chauffage central
- gestion portail + garage automatique
Jeff
Messages : 1007
Inscription : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: Bug script Lua &param ¶m

Message par Jeff »

Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Bug script Lua &param ¶m

Message par vil1driver »

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
Jeff
Messages : 1007
Inscription : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: Bug script Lua &param ¶m

Message par Jeff »

vil1driver a écrit :Salut,

Préférence locale :mrgreen:

https://easydomoticz.com/forum/viewtopi ... 280#p35280
Tu connais vraiment ce forum par coeur ;)
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
domcars0
Messages : 238
Inscription : 18 févr. 2017, 20:23

Re: Bug script Lua &param ¶m

Message par domcars0 »

Salut,

Normalement les url doivent être encodés (en html, ¶ s'écrit &para;) .
Exemple de fonction en lua qui encode les url:

Code : Tout sélectionner

local 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
La liberté a un prix... celui de l'effort.
pmachat
Messages : 84
Inscription : 13 oct. 2017, 13:37

Re: Bug script Lua &param ¶m

Message par pmachat »

Bonjour

Merci pour tous ces retours
Cela progresse de mon coté mais toujours un problème.

En utilisant la fonction encode, le problème de &param a disparu :)

Je retrouve bien dans les logs l'url: 192.168.0.xx:8080/json.htm?param=udevice&type=command&idx=349&nvalue=0&svalue=22

Cela fonctionne bien sur ma version Windows de Domoticz mais quand je transfère le script sur mon raspberry cela ne fonctionne plus :?
2018-04-09 21:35:45.315 Error: Error opening url: 192.168.0.xx:8080/json.htm?param=udevice&type=command&idx=349&nvalue=0&svalue=22

J'ai un bien un device avec IDX=349
D'ailleurs quand je fais un copier/coller dans mon navigateur internet de cette même ligne , j'ai bien le message
status:"Ok"
title:"Update device"
et le device est bien mis à jour

J'ai regardé au niveau de la config de mon raspberry, je suis bien en fr_FR UT8 pour les paramètres locaux

J'ai encore besoin d'aide ...
Domoticz + Rflink + Xiaomi Gateway +Zigbee2Mqtt + Wemos + Dahua+ Alhau + Monitor:
- gestion vmc / hygrométrie
- pilotage ampli Denon Ceol
- surveillance piscine
- commande thermostat chauffage central
- gestion portail + garage automatique
pmachat
Messages : 84
Inscription : 13 oct. 2017, 13:37

Re: Bug script Lua &param ¶m

Message par pmachat »

Bonjour
J'ai trouvé l'origine de mon second probleme :P

Sur ma version de Domoticz sur Raspberry, j'ai besoin de passer les parametres utilisateur et mot de passe pour que la commande OpenUrl fonctionne donc j'ai rajouté ces paramètres dans la ligne de commande

Code : Tout sélectionner

   local url = domoticz_url..'/json.htm?param=udevice&type=command&idx='..IDXcons..'&nvalue=0&svalue='..ConsJour..'&username='..username..'&password='..pass
   urlencode(url)
   commandArray[1]={['OpenURL']=url }
Attention le user et le mot de passe est crypté (base64). Je vous conseille la lecture du wiki Domoticz -API/JSON (chapitre Autorization)
https://www.domoticz.com/wiki/Domoticz_ ... e64_encode

En espérant que cela aide d'autres personnes et encore merci pour votre aide
Domoticz + Rflink + Xiaomi Gateway +Zigbee2Mqtt + Wemos + Dahua+ Alhau + Monitor:
- gestion vmc / hygrométrie
- pilotage ampli Denon Ceol
- surveillance piscine
- commande thermostat chauffage central
- gestion portail + garage automatique
Répondre