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
mais ce que tu compares est
Mesure et non
otherdevices_svalues[Mesure]
je te disais de faire ceci
pour te rendre compte que
Mesure =
'BREADBOARD_Lumiere' et non
otherdevices_svalues[Mesure]
puisque tu as commenté la ligne qui aurait fait le taf !
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?)??