Page 1 sur 1

Deux commandarray dans le même script

Publié : 23 déc. 2016, 23:52
par dokho
Bonsoir,

J'ai fais un petit script LUA pour m'afficher les moyennes de températures (RDC et étage) dans ma maison.

Jusqu'ici rien de vraiment sorcier, j'ai bien créé les 2 dummys, le calcul se fait bien (j'ai bien le print dans le log), mais un seul des deux dummys se met à jour ... je ne comprends pas pourquoi ...

Voici le script en question:

Code : Tout sélectionner

-- Fonction Arrondir
function arrondir(num, dec)
   if num == 0 then
      return 0
   else
      local mult = 10^(dec or 0)
      return math.floor(num * mult + 0.5) / mult
   end
end

commandArray = {}

CAPTEUR_TEMP_RDC1 = 'Entree_Temp'
CAPTEUR_TEMP_RDC2 = 'Sejour_Temp'
CAPTEUR_TEMP_RDC3 = 'Salon_Temp'
CAPTEUR_TEMP_RDC4 = 'Veranda_Temp'
CAPTEUR_TEMP_RDC5 = 'Buanderie_Temp'
CAPTEUR_TEMP_RDC6 = 'Atelier_Temp'

CAPTEUR_TEMP_ETAGE1 = 'SDB_TempHum'
CAPTEUR_TEMP_ETAGE2 = 'CH1_Temp'
CAPTEUR_TEMP_ETAGE3 = 'CH2_Temp'
CAPTEUR_TEMP_ETAGE4 = 'Bureau_Temp'
CAPTEUR_TEMP_ETAGE5 = 'Parents_Temp'
CAPTEUR_TEMP_ETAGE6 = 'SDE_TempHum'

temprdc1 = otherdevices_svalues[CAPTEUR_TEMP_RDC1]:match("([^;]+)")
temprdc2 = otherdevices_svalues[CAPTEUR_TEMP_RDC2]:match("([^;]+)")
temprdc3 = otherdevices_svalues[CAPTEUR_TEMP_RDC3]:match("([^;]+)")
temprdc4 = otherdevices_svalues[CAPTEUR_TEMP_RDC4]:match("([^;]+)")
temprdc5 = otherdevices_svalues[CAPTEUR_TEMP_RDC5]:match("([^;]+)")
temprdc6 = otherdevices_svalues[CAPTEUR_TEMP_RDC6]:match("([^;]+)")

tempetage1, humetage1, stathumetage1 = otherdevices_svalues[CAPTEUR_TEMP_ETAGE1]:match("([^;]+);([^;]+);([^;]+)")
tempetage2 = otherdevices_svalues[CAPTEUR_TEMP_ETAGE2]:match("([^;]+)")
tempetage3 = otherdevices_svalues[CAPTEUR_TEMP_ETAGE3]:match("([^;]+)")
tempetage4 = otherdevices_svalues[CAPTEUR_TEMP_ETAGE4]:match("([^;]+)")
tempetage5 = otherdevices_svalues[CAPTEUR_TEMP_ETAGE5]:match("([^;]+)")
tempetage6, humetage2 = otherdevices_svalues[CAPTEUR_TEMP_ETAGE6]:match("([^;]+);([^;]+)")

-- Calcul de la temperature moyenne RDC
Temp_Moyenne_RDC = arrondir(((temprdc1 + temprdc2 + temprdc3 + temprdc4 + temprdc5 + temprdc6) / 6),2)

commandArray['UpdateDevice']= 841 .. '|0|' .. Temp_Moyenne_RDC
print('Temp moyenne RDC = ' ..Temp_Moyenne_RDC .. '°C.' )


-- Calcul de la temperature moyenne ETAGE
Temp_Moyenne_Etage = arrondir(((tempetage1 + tempetage2 + tempetage3 + tempetage4 + tempetage5 + tempetage6) / 6),2)

commandArray['UpdateDevice']= 842 .. '|0|' .. Temp_Moyenne_Etage
print('Temp moyenne Etage = ' ..Temp_Moyenne_Etage .. '°C.' )


return commandArray
Les idx des dummys sont les bons, j'ai vérifié.
Seul le 842 se met à jour.
Si je commente le "commandArray" du 842: le 841 se met bien à jour ...


Si quelqu'un peut éclairer ma lanterne :)

Re: Deux commandarray dans le même script

Publié : 24 déc. 2016, 00:13
par Jeff
Oui peut être ceci, il faut mettre un 1, un 2.
http://www.domoticz.com/wiki/Events

Code : Tout sélectionner

commandArray[0]={['Lamp']='On'}
commandArray[1]={['Lamp']='On'}
commandArray[2]={['Lamp']='On'}

Re: Deux commandarray dans le même script

Publié : 24 déc. 2016, 09:48
par georges.attali
Bonjour,
Jeff a raison, plus précisément :

commandArray[1] = { ['UpdateDevice'] = 841 .. '|0|' .. Temp_Moyenne_RDC }

et

commandArray[2] = { ['UpdateDevice'] = 842 .. '|0|' .. Temp_Moyenne_Etage }

Bonne journée.

Re: Deux commandarray dans le même script

Publié : 24 déc. 2016, 10:32
par dokho
Bonjour,

Cela fonctionne parfaitement: merci à vous.

Bonne journée et bonnes fêtes :)