dz vents comment passer de string à nombre ?

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 <\>.
macaurele
Messages : 8
Inscription : 09 mars 2019, 19:46

dz vents comment passer de string à nombre ?

Message 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.
Dernière modification par Keros le 11 déc. 2021, 20:50, modifié 2 fois.
Raison : Merci de mettre le script et les logs entre les balise [code]
Raspberry pi 3, RFXcom :idea: ,Zwave 8-) , Easysensors :oops: Zigbee et Zigate
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: dz vents comment passer de string à nombre ?

Message par Neutrino »

Il manque .state à tes conditions.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
macaurele
Messages : 8
Inscription : 09 mars 2019, 19:46

Re: dz vents comment passer de string à nombre ?

Message 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.
Raspberry pi 3, RFXcom :idea: ,Zwave 8-) , Easysensors :oops: Zigbee et Zigate
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: dz vents comment passer de string à nombre ?

Message 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.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Répondre