script de deennoo adapté pour régler luminosité milight avec xiaomi cube

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 <\>.
johnnybravo
Messages : 63
Inscription : 04 mai 2017, 14:15

script de deennoo adapté pour régler luminosité milight avec xiaomi cube

Message par johnnybravo »

Voir message suivant, j'ai laissé tomber la commande brightenessup
--------------
Je voudrais plus tard utiliser le cube Xiaomi pour augmenter/baisser la luminosité de mes quelques ampoules milight (en m'inspirant du modèle de ce que deennoo a réalisé)

"brightnessup".. ne semble donner aucun résultat probant quand je regarde l'ampoule.
Quelqu'un pourrait me dire comment est utilisée cette commande ?

Pour info, si j'utilise ce code, la luminosité varie bien

Code : Tout sélectionner

commandArray['OpenURL']='127.0.0.1:7373/json.htm?type=command&param=switchlight&idx=9&switchcmd=Set%20Level&level=100'
Domoticz V3.8330
Milight: modèle RGBWW

j'ai ce petit morceau de code lua Device activé par changement d'état d'un interrupteur modèle push On qui revient à Off 1s plus tard.
Normalement la luminosité de l'ampoule (idx=9) devrait donc augmenter 2 fois par cycle - mais je ne vois aucun changement

Code : Tout sélectionner

commandArray = {}
-- increase brightness every time it goes on, and also when it goes off

if devicechanged['TestSwitch2']== 'On'  then
    print('we are On') 
    commandArray['OpenURL']='127.0.0.1:7373/json.htm?type=command&param=brightnessup&idx=9'
elseif devicechanged['TestSwitch2']== 'Off'  then
   print('Off, we do it again')
     commandArray['OpenURL']='127.0.0.1:7373/json.htm?type=command&param=brightnessup&idx=9'
end
return commandArray
Dans le code et les log, semble passer comme une lettre à la poste, pas d'erreur

La même commande dans firefox, toujours pas d'erreur, mais aucun changement non plus au niveau de l'ampoule

Code : Tout sélectionner

localipdedomotoicz:7373/json.htm?type=command&param=brightnessup&idx=9
donne
status "OK"
title "Set brightness up!"
Dernière modification par johnnybravo le 13 nov. 2017, 17:33, modifié 1 fois.
johnnybravo
Messages : 63
Inscription : 04 mai 2017, 14:15

Re: lua & json brightnessup pour milight

Message par johnnybravo »

Je me réponds à moi-même.
j'ai repris le script de deennoo http://domo-attitude.fr/tuto-le-cube-xi ... -domoticz/ et comme il m'est impossible de récupérer en direct le niveau de luminosité des milights, j'utilise une variable pour partir d'une luminosité et en augmenter ou réduire la valeur suivant la rotation du cube.

Le script semble tourner sans problème
Seul souci.. si la luminosité est réglée autrement qu'avec le cube, la valeur dans la variable ne changera pas.
Résultat: la prochaine fois que le cube est utilisé, la luminosité sera établie suivant dernière valeur stockée dans la variable + nouvelle rotation.
J'ai pensé utiliser le mouvement "shake" du cube pour ré-initialiser la variable à par exemple 50%

Voici le code, encore une fois 99% de celui-ci vient de deennoo ! UN GRAND MERCI À LUI !
J'ai rajouté les lignes avec commentaires en anglais.

Code : Tout sélectionner

commandArray = {}

if devicechanged['Xiaomi Cube'] then --après le commandarray, on se sert d'un changement de valeur du widget texte affichant la rotation comme du provocateur d’événement
   
    if otherdevices['ML - ALL'] == 'Off' then -- turn on all milights in the room if they were off (I think this if section is actually not needed, to be tested)
    commandArray['OpenURL']='127.0.0.1:7373/json.htm?type=command&param=switchlight&idx=6&switchcmd=On'
    end

    --Bulbvalue = otherdevices_svalues['Appliques'];        -- On récupère la valeur actuelle de luminosité de l'ampoule à piloter 
    Bulbvalue = tonumber(uservariables["MyBrightness"])      --above not possible with milights, start with value stocked in variable
   
    RotValue = otherdevices_svalues['Xiaomi Cube'];             --On récupère la valeur de rotation qui provoque le script
    RotValue = string.sub(RotValue, 1, string.len(RotValue) - 4)--On récupère l'angle à la mode xiaomi (donc enleve les 4 derniers caractères du widget texte
    NumericValue0 = tonumber(RotValue)                          --Lua est exigent, il faut transformer les caractères récupérés précédemment en valeur numérique
    NumericValue = math.floor(5*NumericValue0/25)               -- a value of 25 corresponds to 90 degrees rotation (i.e. 25% of full rotation)
                                                                -- I want a 90 degrees rotation to mean 5% plus or minus
    
    CalcValue = (Bulbvalue + NumericValue)                      --CalcValue va être notre valeur finale à appliquer à l'ampoule (valeur actuelle de l ampoule + la valeur de rotation)
   
    if CalcValue > 100 then
        CalcValue = 100 --valeur maximale à 100%
         commandArray['Variable:MyBrightness']= tostring(100)   --Store new brightness level in the variable
    elseif CalcValue < 0 then
        CalcValue = 0 --valeur minimale à 0%
        commandArray['Variable:MyBrightness']= tostring(0)      --Store new brightness level in the variable
    end

    -- commandArray['Appliques']='Set Level '..CalcValue..''
    print('new light level '..CalcValue)    
    commandArray['Variable:MyBrightness']= tostring(CalcValue)  -- Store new brightness level in the variable
    commandArray['ML - ALL']='Set Level '..commandArray['Variable:MyBrightness']..''    -- apply new brightness to all milights in the room
    
end    
return commandArray
Répondre