Script LUA et Dimmer HUE

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 <\>.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Script LUA et Dimmer HUE

Message 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 :?
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
PoDeZebi
Messages : 53
Inscription : 27 oct. 2020, 08:08

Re: Script LUA et Dimmer HUE

Message 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 !
PoDeZebi
Messages : 53
Inscription : 27 oct. 2020, 08:08

Re: Script LUA et Dimmer HUE

Message 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
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Script LUA et Dimmer HUE

Message 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
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
PoDeZebi
Messages : 53
Inscription : 27 oct. 2020, 08:08

Re: Script LUA et Dimmer HUE

Message 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 ! :)
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Script LUA et Dimmer HUE

Message 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
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
PoDeZebi
Messages : 53
Inscription : 27 oct. 2020, 08:08

Re: Script LUA et Dimmer HUE

Message 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 !!!
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Script LUA et Dimmer HUE

Message 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).
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
pierre78@dom
Messages : 23
Inscription : 23 sept. 2019, 20:34

Re: Script LUA et Dimmer HUE

Message 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   
Raspberry PI3b+
-1 clé ZIGBEE2mQTT
-HONEYWELL 4 détecteurs feu
-AQARA 4 détecteurs fuite /4 capteurs température/5 capteurs fenêtre (2 pr alarme)
-PHILIPS HUE 3 dimmer/3 MOTIONS/6 ampoules blanc/3 bandes LED RGB
-SONOFF basic / POW r2
-SONOS 4 PLAY1
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Script LUA et Dimmer HUE

Message 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:
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Répondre