Page 1 sur 1

dz vents comment passer de string à nombre ?

Publié : 11 déc. 2021, 18:08
par macaurele
Bonjour
je n'y arrive pas:
dans ce script dz vents :

Code : Tout sélectionner

return {
	on = {
		devices = {'lumiére véranda'},
	    timer = {'at 08:00 - 22:00'},
	},
	logging = {
        level = domoticz.LOG_INFO,
        marker = "lumiére véranda ",
    },
	execute = function(domoticz, lumi)
            domoticz.log(lumi.state, domoticz.LOG_INFO)
            domoticz.log (tonumber(domoticz.devices('lumiére véranda')) , domoticz.LOG_INFO)
    [i] if (tonumber(domoticz.devices('lumiére véranda')) > 1000) then[/i] 
			domoticz.devices('LedVer1').switchOff() 
		else
		    domoticz.devices('LedVer1').switchOn()
		    end
end	
}
Je récupére la valeur 'lumiére véranda' d'un capteur xiaomi multisensors 6 sous forme string (normal).
dans if ....
j'essaie de tester la condition (>1000) , la fonction "tonumber" donne nil et rend le test impossible.

dans le LOG:

Code : Tout sélectionner

2021-12-11 16:12:42.647 Status: dzVents: Info: Handling events for: "lumiére véranda", value: "641"
2021-12-11 16:12:42.647 Status: dzVents: Info: lumiére véranda : ------ Start internal script: Script essai: Device: "lumiére véranda (ZWAVE)", Index: 11
2021-12-11 16:12:42.647 Status: dzVents: Info: lumiére véranda : 641
2021-12-11 16:12:42.647 Status: dzVents: Info: lumiére véranda : nil
2021-12-11 16:12:42.647 Status: dzVents: Info: lumiére véranda : ------ Finished Script essai
2021-12-11 16:12:42.647 Error: dzVents: Error: (3.1.7) lumiére véranda : An error occurred when calling event handler Script essai
2021-12-11 16:12:42.647 Error: dzVents: Error: (3.1.7) lumiére véranda : ...oticz/scripts/dzVents/generated_scripts/Script essai.lua:13: attempt to compare number with nil

J'ai essayé toutes les syntaxes possibles sans résultat.
même utiliser une variable intermédiaire (num = tonumber('lumiére véranda')) ne fonctionne pas.
ça a l'air tout bête, je fais probablement une erreur quelque part ?
Merci de votre aide.

Re: dz vents comment passer de string à nombre ?

Publié : 11 déc. 2021, 19:17
par Neutrino
Il manque .state à tes conditions.

Re: dz vents comment passer de string à nombre ?

Publié : 14 déc. 2021, 22:29
par macaurele
effectivement
tonumber(lumi.state) dans "execute = function(domoticz, lumi)" fonctionne
Je ne comprends pas pourquoi la méthode tonumber('lumiére véranda') renvoie nil
Bon ... Merci Beaucoup
J'ai avancé.
Il faut vraiment lire et relire le wiki et les exemples.
Ce n'est vraiment pas facile :|
Merci encore.

Re: dz vents comment passer de string à nombre ?

Publié : 14 déc. 2021, 22:46
par Neutrino
domoticz.devices('lumiére véranda') ne renvoie pas un nombre, il n'est donc pas possible de le convertir.
ça va renvoyer toutes les caractéristiques, les attributs, de ton objet domoticz.devices('lumiére véranda')
Tu veux juste son état, tu appelles donc son attribut state
Bienvenue dans le monde merveilleux de la Programmation Orientée Objet :D
Même si LUA n'est pas vraiment de la POO, DzVents permet de profiter de ses avantages.