Page 1 sur 2

help sur script eclairage

Publié : 10 juil. 2017, 22:27
par FPA
Bonjour,

j'essaie de commander (TOR) une led par lua en fonction de la luminosité, d'une consigne d'enclenchement (luminosité faible), d'une consigne de declenchement (luminosité haute) et d'un detecteur de présence.
mon script fonctionne lorsque le besoin en lumiere passe de o à 1 mais impossible de comprendre pourquoi ça ne fonctionne pas dans l'autre sens.
Si il y a une ame charitable qui peut me filer un coup de main la dessus, je suis preneur!

Merci d'avance!

Code : Tout sélectionner

 -- Calcul des besoins de luminosite
-- 

--
-- 24/06/17 : Version 1 : Redaction initiale


local Consigne_enclenchement = 'Salon_luminosite_enclenchement'
local Consigne_declenchement = 'Salon_luminosite_declenchement'
local Occupation = 'GENERAL_OCCUP'
local Vacances = 'GENERAL_VACANCES'
local Mesure = 'BREADBOARD_Lumiere'
local Besoin ='Besoin_Lumiere_Salon'

--local mesure = otherdevices_svalues['BREADBOARD_Lumiere']
--local besoin = uservariables['Besoin_Lumiere_Salon']

commandArray = {}

if (devicechanged[Occupation]) or devicechanged[Mesure] or devicechanged[Vacances] then
  
print ('Luminosite mesurée: '..otherdevices_svalues[Mesure])  
print ('Consigne d"enclenchement:'..uservariables[Consigne_enclenchement])
print ('Consigne de declenchement:'..uservariables[Consigne_declenchement])
print ('Besoin lumiere: '..uservariables[Besoin])



    if uservariables[Besoin]==0 then
        if Mesure < Consigne_enclenchement then
        print ('Mise à jour besoin = 1')
        commandArray['Variable:Besoin_Lumiere_Salon']= '1'
        end
    end
    if uservariables[Besoin]==1 then
        if Mesure > Consigne_declenchement then
        print ('Mise à jour besoin = 0')
        commandArray['Variable:Besoin_Lumiere_Salon']= '0'
        end
    end
    
    
end
return commandArray

Re: help sur script eclairage

Publié : 11 juil. 2017, 18:21
par FPA
Bonjour,
je relance mon appel n'arrivant toujours pas à comprendre pourquoi domoticz n'arrive pas à résoudre ça!

Code : Tout sélectionner

if Mesure > Consigne_declenchement then
        print ('Mise à jour besoin = 0')
        commandArray['Variable:Besoin_Lumiere_Salon']= '0'
        end
alors qu'il arrive à faire ça:

Code : Tout sélectionner

if Mesure < Consigne_enclenchement then
        print ('Mise à jour besoin = 1')
        commandArray['Variable:Besoin_Lumiere_Salon']= '1'
        end
j'ai beau tourner le problème dans tous les sens, je ne vois pas pourquoi cela ne fonctionne pas!

Re: help sur script eclairage

Publié : 11 juil. 2017, 19:52
par cyberbob
FPA a écrit :commandArray = {}

if (devicechanged[Occupation]) or devicechanged[Mesure] or devicechanged[Vacances] then
Les 2 paranthese sont elles bien placées. C'est pas if ( .. or .. or .. ) then
?

Re: help sur script eclairage

Publié : 11 juil. 2017, 20:39
par FPA
salut, merci pour ta réponse.
En effet je n'ai pas fait gaffe à cette partie du script.
Je viens de la corriger, mais ça ne change pas grand chose sur le fond: lorsque besoin lumiere = 1, if Mesure < Consigne_enclenchement ne fonctionne pas. ça doit etre une histoire de format de variable, mais j'avoue débuter sur domoticz et je seche!

Re: help sur script eclairage

Publié : 11 juil. 2017, 20:47
par cyberbob
si la condition (if) n'est pas remplie le then ne seras pas exécuté, il faut faire des test dans un nouveau script tout simple avec une variable et un if.. then pour bien comprendre le fonctionnement et la syntaxe ...

Re: help sur script eclairage

Publié : 11 juil. 2017, 20:54
par FPA
le truc c'est que la premiere partie du script fonctionne, donc la deuxieme étant exactement du meme type ça devrait logiquement fonctionner également. je ne vois pas ou il pourrait y avoir une erreur, mais si tu en vois, n'hésites pas, j'en peux plus de ce script!!

Re: help sur script eclairage

Publié : 11 juil. 2017, 21:30
par FPA
j'ai simplifié au max le code

Code : Tout sélectionner

if uservariables[Besoin]==1 then
        if Mesure > 10 then
        print ('Mise à jour besoin = 0')
        commandArray['Variable:Besoin_Lumiere_Salon']= '0'
        end
    end
me revois
2017-07-11 21:29:44.596 Error: EventSystem: in test2: [string "-- Calcul des besoins de luminosite..."]:31: attempt to compare number with string

Re: help sur script eclairage

Publié : 11 juil. 2017, 21:36
par cyberbob
Cette syntaxe me semble bizarre :
commandArray['Variable:Besoin_Lumiere_Salon']= '1'
Pourquoi mettre "varable:" je n'ais pas cela dans mes script, et pas d'espace après le = , ce serais plutôt (fait copier/coller de cette ligne) :
commandArray['Besoin_Lumiere_Salon']='1'

Il faut être sur que la variable passe bien a l'état 1, ENCORE UNE FOIS, fait des test dans un petit script !!

Cela a l'air d'être 2 types de variable string et number, on ne peut pas comparer 2 variable de type différent !

Re: help sur script eclairage

Publié : 11 juil. 2017, 21:43
par FPA
je fais des test dans un petit script, je suis censé écrire
print ('Mise à jour besoin = 0')
si Mesure>Consigne

Re: help sur script eclairage

Publié : 11 juil. 2017, 21:53
par FPA
je suis d'accord avec toi, on ne peut pas comparer des types de variable différente!
j'ai l'impression que tout se passe comme si le code

Code : Tout sélectionner

if uservariables[Besoin]==1 then
        if Mesure > Consigne_declenchement then
        print ('Mise à jour besoin = 0')
        commandArray['Variable:Besoin_Lumiere_Salon']= '0'
        end
    end
etait parfaitement conforme à la syntaxe mais que la valeur Mesure était plus élevée que la valeur sensée etre affichée.. je suis vraiment perplexe la!