Deux commandarray dans le même script

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
dokho
Messages : 685
Inscription : 28 déc. 2014, 19:32

Deux commandarray dans le même script

Message 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 :)
Jeff
Messages : 1007
Inscription : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: Deux commandarray dans le même script

Message 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'}
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
georges.attali
Messages : 58
Inscription : 19 févr. 2016, 21:35

Re: Deux commandarray dans le même script

Message 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.
dokho
Messages : 685
Inscription : 28 déc. 2014, 19:32

Re: Deux commandarray dans le même script

Message par dokho »

Bonjour,

Cela fonctionne parfaitement: merci à vous.

Bonne journée et bonnes fêtes :)
Répondre