mise à jour des variable user

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 <\>.
paya.aabg
Messages : 35
Inscription : 11 déc. 2015, 19:54

mise à jour des variable user

Message par paya.aabg »

bonsoir à tous,
je n'arrive pas à mettre à jour des variable user, de telle manière qu'elles soient IMMEDIATEMENT enregistrées.
J'arrive à les mettre à jour, mais il faut attendre le 'return commandArray' final pour qu'elles soient réellement enregistrées.
Elles sont donc disponibles à l'appel suivant du script.
j ai essayé en LUA strict et en JSON, mais rien n'y fait.

J'ai raté quelque chose ?
Tout en WiFi et MQTT (2019)
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: mise à jour des variable user

Message par vil1driver »

Salut,

Comportement normal
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
Datawolf
Messages : 273
Inscription : 03 avr. 2018, 13:51

Re: mise à jour des variable user

Message par Datawolf »

Salut,
Je ne comprends pas la question.
En attendant que les variables utilisateur soient "commitées", tu dois pouvoir utiliser des variables du script, non ?
@+
Datawolf
Laulo77
Messages : 8
Inscription : 17 juin 2018, 21:30
Localisation : Soruges (84)

Re: mise à jour des variable user

Message par Laulo77 »

paya.aabg a écrit : 03 déc. 2018, 19:48 bonsoir à tous,
je n'arrive pas à mettre à jour des variable user, de telle manière qu'elles soient IMMEDIATEMENT enregistrées.
J'arrive à les mettre à jour, mais il faut attendre le 'return commandArray' final pour qu'elles soient réellement enregistrées.
Elles sont donc disponibles à l'appel suivant du script.
j ai essayé en LUA strict et en JSON, mais rien n'y fait.

J'ai raté quelque chose ?
Bonsoir,
pour pouvoir utiliser ta variable 'user' immédiatement, copie là dans une variable déclaré dans ton script.
It's a long way to the top!
paya.aabg
Messages : 35
Inscription : 11 déc. 2015, 19:54

Re: mise à jour des variable user

Message par paya.aabg »

Merci à tous de vos réponses;
oui je peux utiliser les variables non encore enregistrées directement dans le script.
ce n'est qu une petite fonction "facilitratrice" (crée ou met à jour une variable string) qui pose problème lors du premier usage d'une variable:

Code : Tout sélectionner

function dim_uvs(uservariable,value,...)	-- crée si besoin une Uservariable STRING contenant sa valeur ou bien la met a jour
--[[ dim(ensionner)_u(ser)v(ariable)s(tring)
-- si ma_variable n existe pas:-----------------------------------------
-- dim_uvs('ma_variable','ma_valeur') crée ma_variable contenant ma_valeur
-- dim_uvs('ma_variable) crée ma_variable contenant 'NIL' il semble que DZ ne sait pas enregistrer des variables a valeur nulle
-- dim_uvs('ma_variable','') idem
-- si ma_variable existe déjà:------------------------------------------
-- dim_uvs('ma_variable','ma_valeur') met à jour ma_variable avec ma_valeur
-- dim_uvs('ma_variable') ne fait rien 
-- dim_uvs('ma_variable','') idem
]]
	local maj=1
	--local debugg_old=debugg
	
    value=tostring(value)
	if (value==nil) or (value=='') then
	    print3('value==nil => value = NIL')
		value='NIL' -- ??? impossible de créer une variable de valeur vide ???
		maj=0       -- ce n est pas une maj
	end

if (uservariables[uservariable] == nil) then    -- si la USERVARIABLE n existe pas   
	print3('La USERVARIABLE ('..uservariable..') n existe pas.')
	print3('Création par:dim_uvs('..uservariable..' , '..value..')')
    index="Variable:"..uservariable
    commandArray[index]=tostring(value)
	os.execute(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?type=command&param=saveuservariable&vname='..url_encode(uservariable)..'&vtype=2&vvalue='..url_encode(value)..'" &')
else	-- l uservariable existe et value <> nil => mise a jour
	print3('La USERVARIABLE ('..uservariable..') existe déjà, elle a la valeur:'..uservariables[uservariable]..'.')
	if (maj==1) then
		print3('Mise a jour avec la valeur:'..value..'. Cette maj ne sera disponible qu apres le return commandArray final.')
--os.execute(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?type=command&param=updateuservariable&vname='..url_encode(uservariable)..'&vtype=2&vvalue='..url_encode(value)..'" &')
commandArray['Variable:'..uservariable]=value

end

end
--debugg=debugg_old
end	--function dim_uvs(uservariable,value,...)
et puis j'avoue les habitudes avec d autres langages de programmation.
en tout cas merci à tous.
Tout en WiFi et MQTT (2019)
Répondre