Page 2 sur 4

Re: Script LUA et Dimmer HUE

Publié : 09 janv. 2021, 10:44
par Keros
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 :?

Re: Script LUA et Dimmer HUE

Publié : 09 janv. 2021, 11:32
par PoDeZebi
Keros a écrit : 09 janv. 2021, 10:44
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 :?
Lol :) pour les 15, j'ai pas choisi c'est lui qui fait ça tout seul (bon, ok, j'ai du écrire Nawak... :))

Voila mon code, j'en suis là actuellement :

Code : Tout sélectionner

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.

Merci !

Re: Script LUA et Dimmer HUE

Publié : 09 janv. 2021, 11:38
par PoDeZebi
Je test ça :

Code : Tout sélectionner

  -------------------------------
    --         If nombre         --
    -------------------------------
  
    elseif  otherdevices_svalues[ Widget ] ~= "On" or otherdevices_svalues[ Widget ] ~= "Off" then
        print ('____ Remote sur dimmer ___')
        if otherdevices_svalues[ Widget ] > DimVal then
            DimVal = otherdevices_svalues[ Widget ]
            DimVal = DimVal +5
            if DimVal >=100 then
                DimVal = 100
                Print ('Dimmer A fond')
            end
            print ('____ Dimmer Update = '.. DimVal ..' ____')
            commandArray[ Widget ]='Set Level:'..DimVal
        else
            DimVal = otherdevices_svalues[ Widget ]
            DimVal = DimVal -5
            if DimVal <=0 then
                DimVal = 0
                Print ('Dimmer en bas')
            end
            print ('____ Dimmer Update = '.. DimVal ..' ____')
            commandArray[ Widget ]='Set Level:'..DimVal
        end
    end
end
J'ai un retour :
EventSystem: in HUE Remote: [string "commandArray = {}..."]:37: attempt to compare nil with string

Re: Script LUA et Dimmer HUE

Publié : 09 janv. 2021, 11:40
par Keros
Je traduit ton script :

Si Widget = ON alors
xxxxxxxx
Si non si Widget = OFF alors
xxxxxxxx
Si non si Widget différent de On ou si Widget différent de Off alors
xxxxxxxx
Fin

La condition a la troisième étape n'est pas correct : reprends ce que je t'ai indiqué ici.

Edit précision : ce message répond à l'avant-dernier message

Re: Script LUA et Dimmer HUE

Publié : 09 janv. 2021, 12:03
par PoDeZebi
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')

Code : Tout sélectionner

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         --
    -------------------------------
  
    else
        print ('____ Remote sur dimmer ___')
        print ('____ Dimmer ='..DimVal)
        if otherdevices_svalues[ Widget ] > DimVal then
            DimVal = otherdevices_svalues[ Widget ]
            DimVal = DimVal +5
            if DimVal >=100 then
                DimVal = 100
                Print ('Dimmer A fond')
            end
            print ('____ Dimmer Update = '.. DimVal ..' ____')
            commandArray[ Widget ]='Set Level:'..DimVal
        else
            DimVal = otherdevices_svalues[ Widget ]
            DimVal = DimVal -5
            if DimVal <=0 then
                DimVal = 0
                Print ('Dimmer en bas')
            end
            print ('____ Dimmer Update = '.. DimVal ..' ____')
            commandArray[ Widget ]='Set Level:'..DimVal
        end
    end
end
print (' #### FIN DU SCRIPT HUE REMOTE ####')
return commandArray

Aller, j'y crois ! :)

Re: Script LUA et Dimmer HUE

Publié : 09 janv. 2021, 12:17
par Keros
Tu vas y arriver pas à pas ;)
[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.

Tu pourrais faire :

Code : Tout sélectionner

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

Re: Script LUA et Dimmer HUE

Publié : 09 janv. 2021, 12:33
par PoDeZebi
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

Merci encore !!!

Re: Script LUA et Dimmer HUE

Publié : 09 janv. 2021, 13:53
par Keros
Désolé, je ne connais pas cette télécommande.

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).

Re: Script LUA et Dimmer HUE

Publié : 10 janv. 2021, 01:19
par pierre78@dom
Bonsoir,
Si cela peut aider j'ai un script pour cela qui fonctionne de mon coté.

Code : Tout sélectionner

    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   

Re: Script LUA et Dimmer HUE

Publié : 10 janv. 2021, 09:01
par Keros
Merci pour ce script mais il nécessite d'avoir les infos bouton + et bouton - ce qui semble ne pas être le cas :roll: