Truc que j'ai pas compris sur variable local

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 <\>.
Stef17
Messages : 96
Inscription : 02 mai 2016, 21:10

Truc que j'ai pas compris sur variable local

Message par Stef17 »

Salut
y a un truc que j'ai pas du comprendre...
alors si quelqu'un à la soluce ou un lien explicatif clair...

alors voila
Imaginez un interrupteur virtuel appelé grandfroid.
Je voudrais que s'il est 'On' une valeur que je nomme major soit égal 1 sinon égal à 0
Puis j'aimerais vérifier sa validité en le visionnant dans les log (pour être sûr avant de pouvoir l'utiliser ;-) )

J'ai essayé ceci (et aussi avec un simple else)

Code : Tout sélectionner

if (otherdevices[grandfroid] == 'On') then
major = 1 
elseif (otherdevices[grandfroid] == 'Off') then
major = 0 
end
major = tonumber(major) -- mise au format chiffre
print("major egal a "..major)
Pour l'instant j'ai une erreur :
mesfonctions.lua:15: attempt to concatenate global 'major' (a nil value)
Merci d'avance
RaspberryPi2B+SD16GPNYclass10-RFlink firm1.1R41-domoticz 5877-6 sonde temp + une prise domotisé et 4 adaptateurs chaicon pour radiateur
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: Truc que j'ai pas compris sur variable local

Message par thier »

Enlevé la ligne major = tonumber....
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
Stef17
Messages : 96
Inscription : 02 mai 2016, 21:10

Re: Truc que j'ai pas compris sur variable local

Message par Stef17 »

avec ou sens ligne " major = tonumber...." c'est pareil, même punition
RaspberryPi2B+SD16GPNYclass10-RFlink firm1.1R41-domoticz 5877-6 sonde temp + une prise domotisé et 4 adaptateurs chaicon pour radiateur
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Truc que j'ai pas compris sur variable local

Message par vil1driver »

Salut,

Oui mais c'est déjà mieux sans, car passer un nombre en nombre bon... :?

Le pb c'est qu'il manque des ' autour de grandfroid
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
Stef17
Messages : 96
Inscription : 02 mai 2016, 21:10

Re: Truc que j'ai pas compris sur variable local

Message par Stef17 »

Nickel bien vue...
Sur tes conseil j'ai donc mis

Code : Tout sélectionner

if (otherdevices['grandfroid'] == 'On') then
	major = 1 
elseif (otherdevices['grandfroid'] == 'Off') then
	major = 0 
end
print("major egal a "..major)
Et comme tu dois t'en douter ben ça fonctionne... :evil: satanés '

Merci :roll:
RaspberryPi2B+SD16GPNYclass10-RFlink firm1.1R41-domoticz 5877-6 sonde temp + une prise domotisé et 4 adaptateurs chaicon pour radiateur
lost
Messages : 1511
Inscription : 12 nov. 2016, 11:01

Re: Truc que j'ai pas compris sur variable local

Message par lost »

Stef17 a écrit :avec ou sens ligne " major = tonumber...." c'est pareil, même punition
Attention aux variables utilisateurs et Lua, il y a une contrainte si on n'utilise pas des chaines de caractères, cf:
https://www.domoticz.com/wiki/User_variables

"When using user variables in Lua, keep in mind the following: variables are always stored as a string in the Domoticz database, regardless of their type. The variables are passed in arrays to Lua, at that point they will always be strings also."
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Truc que j'ai pas compris sur variable local

Message par vil1driver »

Oui mais ici on parle de variables locales (internes au script) ;)
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