Page 2 sur 2

Re: help sur script eclairage

Publié : 11 juil. 2017, 22:04
par FPA
la commande
commandArray['Variable:Besoin_Lumiere_Salon']= '1'

fonctionne, en revanche
commandArray['Besoin_Lumiere_Salon']='1'

ne fonctionne pas chez moi!

Re: help sur script eclairage

Publié : 12 juil. 2017, 07:45
par vil1driver
Salut,

Le debug passe par l'usage de print en masse..

Tu veux savoir pourquoi mesure n'est jamais inférieure à consigne ?
Affiche dans le log ce qu'elles contiennent..

Et tu comprendra qu'elle sont mal déclarées.

Re: help sur script eclairage

Publié : 12 juil. 2017, 09:20
par FPA
Bonjour et merci pour ton aide!

Dans le code de base, j'affiche toutes les valeurs necessaires au traitement lorsque le script démarre,
ensuite j'affiche un message en cas de changement d'état des besoins en luminosité. Au niveau des variables, les consignes et le besoin sont des uservariables, mesure est une otherdivices, je ne sais pas si celà est à priori comparable, cependant lorsque les besoins sont à 0 et que la luminosité est inferieure à la consigne de d'enclenchement, les besoins passent bien à 1 et la variable est bien mise à jour.
C'est lorsque les besoins sont à 1 et que la mesure est superieure à la consigne de déclenchement que le problème apparait

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é : 12 juil. 2017, 10:41
par vil1driver
c'est bien beau de faire ceci

Code : Tout sélectionner

print ('Luminosite mesurée: '..otherdevices_svalues[Mesure])
mais ce que tu compares est Mesure et non otherdevices_svalues[Mesure]

Code : Tout sélectionner

if Mesure < Consigne_enclenchement then
je te disais de faire ceci

Code : Tout sélectionner

print ('Luminosite mesurée: '..Mesure )
pour te rendre compte que Mesure = 'BREADBOARD_Lumiere' et non otherdevices_svalues[Mesure]
puisque tu as commenté la ligne qui aurait fait le taf !

Code : Tout sélectionner

--local mesure = otherdevices_svalues['BREADBOARD_Lumiere']
et au passage, gaff ! à la casse, mesure n'est pas Mesure !

même choses pour consigne..

Re: help sur script eclairage

Publié : 12 juil. 2017, 11:46
par FPA
J'ai modifié le code conformément à tes recomandations:

Code : Tout sélectionner

-- Calcul des besoins de luminosite
-- 

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


local Consigne_enclenchement = uservariables['Salon_luminosite_enclenchement']
local Consigne_declenchement = uservariables['Salon_luminosite_declenchement']
local Occupation = 'GENERAL_OCCUP'
local Vacances = 'GENERAL_VACANCES'
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: '..Mesure)  
print ('Consigne d"enclenchement:'..Consigne_enclenchement)
print ('Consigne de declenchement:'..Consigne_declenchement)
print ('Besoin lumiere: '..Besoin)



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

voici ce que me dit le log:

Code : Tout sélectionner

 2017-07-12 11:42:07.288 LUA: Luminosite mesurée: 93
2017-07-12 11:42:07.288 LUA: Consigne d"enclenchement:30
2017-07-12 11:42:07.288 LUA: Consigne de declenchement:50
2017-07-12 11:42:07.288 LUA: Besoin lumiere: 1
2017-07-12 11:42:07.288 Error: EventSystem: in test2: [string "-- Calcul des besoins de luminosite..."]:30: attempt to compare number with string 

Re: help sur script eclairage

Publié : 12 juil. 2017, 12:09
par vil1driver

Code : Tout sélectionner

local Consigne_enclenchement = tonumber(uservariables['Salon_luminosite_enclenchement'])
local Consigne_declenchement = tonumber(uservariables['Salon_luminosite_declenchement'])

Re: help sur script eclairage

Publié : 12 juil. 2017, 13:39
par FPA
Yes ça marche, t'es trop fort!
Je me doutais bien qu'il y avait un problème au niveau des variables.
C'est tordu comme langage quand même! Quel est l'interet de considérer toutes les variables comme string?
et pourquoi l'opération fonctionne sans aucune modif dans le cas ou on doit faire passer les besoins à 1 (dans mon script?)??