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 <\>.
PoDeZebi a écrit : 09 janv. 2021, 10:24
pour la ligne DimVal = otherdevices_svalues[ Widget ] je pensais qu'en mettant la valeur du dimmer dans une variable, je pourrais plus simplement l'incrémenter par la suite, mais ça ne fonctionne pas du tout.
Cela ne fonctionne pas car tu enregistres la variable dans le premier bloc "If ON". Quand tu es dans les autres blocs, tu n'es pas passer par "If ON" donc tu si tu fais appel à cette variable, tu auras une erreur Nil Value.
PoDeZebi a écrit : 09 janv. 2021, 10:24
- Je fais une pression sur "+" => tu vois bien 95, le slider va directement sur cette valeur, sans s'incrémeter de un !
Pourquoi 15, je croyais que tu essayais de faire une variation de 5 en 5 ??
Sans voir ton code pour la modification du dimer, on ne pourra pas t'aider
commandArray = {}
print (' #### DEBUT DU SCRIPT HUE REMOTE ####')
------------------------------
-- Definition des variables --
------------------------------
Widget = 'Hue_Remote'
local DimVal
local DimVal2
if (devicechanged[ Widget ]) then
------------------------------
-- If On --
------------------------------
if otherdevices_svalues[ Widget ] == "On" then
print ('___ Remote sur On ___')
commandArray[ Widget ]='Set Level:80'
--DimVal = otherdevices_svalues[ Widget ]
--print ( '____ Dimmer Apres ON = ' ..DimVal )
--DimVal2 = DimVal
------------------------------
-- If Off --
------------------------------
elseif otherdevices_svalues[ Widget ] == "Off" then
print ('___ Remote sur Off ___')
-------------------------------
-- If nombre --
-------------------------------
elseif otherdevices_svalues[ Widget ] ~= "On" or otherdevices_svalues[ Widget ] ~= "Off" then
print ('____ Remote sur dimmer ___')
DimVal = otherdevices_svalues[ Widget ]
DimVal = DimVal +5
print ('____ Dimmer Update = '.. DimVal ..' ____')
commandArray[ Widget ]='Set Level:'..DimVal
end
end
print (' #### FIN DU SCRIPT HUE REMOTE ####')
return commandArray
Actuellement mon code à l'aire de fonctionner... Si je fais un clic sur la télécommande, il me fait plus 5... Je voudrais bien le faire aller à -5 maintenant.
Je vais aussi rajouter une condition "Si dimmer >=100 alors DimVal = 100... Histoire qu'il m'incrémente pas la variable à l'infinie.
Oui corrigé ! Je m'obstine ... bêtement !
En revanche suite à la modif pour +5/-5, toujours la même erreur
2021-01-09 12:00:19.430 Status: LUA: ____ Remote sur dimmer ___
2021-01-09 12:00:19.430 Error: EventSystem: in HUE Remote: [string "commandArray = {}..."]:38: attempt to concatenate a nil value (local 'DimVal')
[string "commandArray = {}..."]:38: attempt to concatenate a nil value (local 'DimVal')
Cela indique que tu essayes d'utiliser la variable DimVal à la ligne 38 mais elle n'est pas définie (nil value).
En fait, c'est ta condition qui n'est pas bonne. Regarde pour savoir si tu demandes du + ou du - et en fonction tu calcules la nouvelle valeur que tu dois donner au device.
Si télécommande bouton + alors
valeur = valeur_actuelle + 5
Sinon Si télécommande bouton - alors
valeur = valeur_actuelle - 5
fin
si valeur > 100 alors
valeur = 100
sinon si valeur < 0 alors
valeur = 0
fin
envoi de la valeur dans le device
C'est exactement ce que je veux faire !
Le seul soucis, c'est que le "Si télécommande bouton +" ou "Si télécommande bouton -" n'existe pas !
les seuls commandes que j'ai à ma disposition sont :
otherdevices_idx[ Widget ] (pas besoin du coup ! )
ou
otherdevices_svalues !
Voila pourquoi je cherche a faire un truc du genre :
fixer la valeur courante du dimmer dans DimVal
Si valeur suivante > Dimval Alors Dimval + 5
Si valeur suivante < DimVal Alors DimVal - 5
Je sais pas si je suis vraiment claire !
mais tu mets le doigts sur le probleme que j'ai depuis le debut !
Par exemple, j'ai une telecommande Tradfri, qui a chaque pression d'un bouton me retourne un état dans le Widget... donc facil de dire "si tel etat, alors fait ca"... mais la, sur cette télécommande philips, je n'ai rien !: Juste on/off/et le slider
Tu as quoi comme bouton sur la télécommande ? (comment tu fais pour demander + ou -)
Cela se traduit comment sur DomoticZ ? (si tu peux faire une image du widget, ce serait top).
if (devicechanged['CDESALON'] == 'up-press') then
if otherdevices['LED SALON'] == 'Off' then -- turn on led salon
commandArray['LED SALON']='On'
end
Bulbvalue = otherdevices_svalues['LED SALON']; -- On récupère la valeur actuelle de luminosité de l'ampoule à piloter
CalcValue = (Bulbvalue + 10) --CalcValue va être notre valeur finale à appliquer à l'ampoule (valeur actuelle de l ampoule +10)
if CalcValue > 100 then
CalcValue = 100 --valeur maximale à 100%
end
print('new light level '..CalcValue)
commandArray['LED SALON']='Set Level '..CalcValue..''
end
if (devicechanged['CDESALON'] == 'down-press') then
Bulbvalue = otherdevices_svalues['LED SALON']; -- On récupère la valeur actuelle de luminosité de l'ampoule à piloter
CalcValue = (Bulbvalue - 10) --CalcValue va être notre valeur finale à appliquer à l'ampoule (valeur actuelle de l ampoule -10)
if CalcValue < 0 then
CalcValue = 0 --valeur minimale à 0%
end
print('new light level '..CalcValue)
commandArray['LED SALON']='Set Level '..CalcValue..''
end