help sur script eclairage

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
FPA
Messages : 40
Inscription : 23 juin 2017, 10:40

help sur script eclairage

Message 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
Dernière modification par FPA le 12 juil. 2017, 11:47, modifié 1 fois.
FPA
Messages : 40
Inscription : 23 juin 2017, 10:40

Re: help sur script eclairage

Message 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!
cyberbob
Messages : 511
Inscription : 28 nov. 2016, 19:43
Localisation : Belgique

Re: help sur script eclairage

Message 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
?
Domoticz Stable V4.9700 sur Synology DSM 6.2 / 2 x RFlink V48.4 - 433.92MHz(Dio/Chacon) & 433.42MHz(RTS) / Script en LUA & Blocky
FPA
Messages : 40
Inscription : 23 juin 2017, 10:40

Re: help sur script eclairage

Message 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!
cyberbob
Messages : 511
Inscription : 28 nov. 2016, 19:43
Localisation : Belgique

Re: help sur script eclairage

Message 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 ...
Domoticz Stable V4.9700 sur Synology DSM 6.2 / 2 x RFlink V48.4 - 433.92MHz(Dio/Chacon) & 433.42MHz(RTS) / Script en LUA & Blocky
FPA
Messages : 40
Inscription : 23 juin 2017, 10:40

Re: help sur script eclairage

Message 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!!
FPA
Messages : 40
Inscription : 23 juin 2017, 10:40

Re: help sur script eclairage

Message 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
cyberbob
Messages : 511
Inscription : 28 nov. 2016, 19:43
Localisation : Belgique

Re: help sur script eclairage

Message 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 !
Domoticz Stable V4.9700 sur Synology DSM 6.2 / 2 x RFlink V48.4 - 433.92MHz(Dio/Chacon) & 433.42MHz(RTS) / Script en LUA & Blocky
FPA
Messages : 40
Inscription : 23 juin 2017, 10:40

Re: help sur script eclairage

Message par FPA »

je fais des test dans un petit script, je suis censé écrire
print ('Mise à jour besoin = 0')
si Mesure>Consigne
FPA
Messages : 40
Inscription : 23 juin 2017, 10:40

Re: help sur script eclairage

Message 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!
Répondre