LUA - Script s'exécutant plusieurs fois
Publié : 20 août 2018, 17:36
Bonjour a tous,
Pour commencer je m'excuse d'être un chèvre ... Mais là je suis au fond du seau et j'au besoin d'aide pour comprendre n'étant absolument pas doué en info.
Je fais un script tout bête de compteur virtuel pour un moteur de piscine:
----------------------------------------------
------ Configuration ------
----------------------------------------------
-- radiateur
local Pompe Piscine = 'Pompe Piscine' -- Nom de l'interrupteur
local puissance = 2700 -- puissance
local conso = 'Conso Piscine' -- nom du capteur virtuel de consommation électrique (type= instant + counter)
local conso_id = 279 -- idx du capteur virtuel de consommation électrique
----------------------------------------------
-- Fin de la partie configuration --
----------------------------------------------
commandArray = {}
npower, energy = string.match(otherdevices_svalues[conso],"(%d+%.*%d*);(%d+%.*%d*)")
local m = os.date('%S')
if (m % 60 == 0) then
print("1 Minutes ecoulees")
-- calcul de la conso
if (otherdevices[Pompe Piscine] == 'On') then
power = tonumber(puissance)
energy = tonumber(energy + (puissance / 60))
commandArray[1]={['UpdateDevice'] = conso_id .. '|0|' .. power .. ';' .. energy}
else
commandArray[2]={['UpdateDevice'] = conso_id .. '|0|' .. 0 .. ';' .. energy}
end
end
return commandArray
Mais quand je le lance, de temps en temps il perd les chèvres et s'exécute plusieurs fois ce qui fausse les données:
"2018-08-20 17:25:00.628 (Module ZWave) Temp + Humidity (Température Salon)
2018-08-20 17:25:00.356 Status: LUA: 1 Minutes ecoulees
2018-08-20 17:25:00.362 Status: EventSystem: Script event triggered: Conso Piscine 2
2018-08-20 17:25:00.544 Status: LUA: 1 Minutes ecoulees
2018-08-20 17:25:00.553 Status: EventSystem: Script event triggered: Conso Piscine 2
2018-08-20 17:25:00.630 Status: LUA: 1 Minutes ecoulees
2018-08-20 17:25:00.633 Status: EventSystem: Script event triggered: Conso Piscine 2
2018-08-20 17:25:04.812 (RFXCOM) Temp + Humidity (Meteo Ext)
2018-08-20 17:25:04.880 (RFPlayer) Devices already exist. Unit=1
2018-08-20 17:25:04.882 (RFPlayer) Devices already exist. Unit=2
2018-08-20 17:25:04.884 (RFPlayer) Devices already exist. Unit=3
2018-08-20 17:25:43.814 (RFXCOM) Temp + Humidity (Meteo Ext)
2018-08-20 17:25:43.849 (RFPlayer) Devices already exist. Unit=1
2018-08-20 17:25:43.851 (RFPlayer) Devices already exist. Unit=2
2018-08-20 17:25:43.852 (RFPlayer) Devices already exist. Unit=3
2018-08-20 17:26:00.483 Status: LUA: 1 Minutes ecoulees
2018-08-20 17:26:00.486 Status: EventSystem: Script event triggered: Conso Piscine 2
2018-08-20 17:26:22.811 (RFXCOM) Temp + Humidity (Meteo Ext)
2018-08-20 17:26:22.866 (RFPlayer) Devices already exist. Unit=1
2018-08-20 17:26:22.867 (RFPlayer) Devices already exist. Unit=2
2018-08-20 17:26:22.868 (RFPlayer) Devices already exist. Unit=3
2018-08-20 17:26:29.710 Status: EventSystem: reset all events...
2018-08-20 17:27:00.499 Status: LUA: 1 Minutes ecoulees
2018-08-20 17:27:00.504 Status: EventSystem: Script event triggered: Conso Piscine 2
2018-08-20 17:27:01.811 (RFXCOM) Temp + Humidity (Meteo Ext)"
Quelqu'un aurait une idée pour stabiliser la chose ? Cela me rend marteau ! Je sais plus par quel bout le prendre ...
Pour commencer je m'excuse d'être un chèvre ... Mais là je suis au fond du seau et j'au besoin d'aide pour comprendre n'étant absolument pas doué en info.
Je fais un script tout bête de compteur virtuel pour un moteur de piscine:
----------------------------------------------
------ Configuration ------
----------------------------------------------
-- radiateur
local Pompe Piscine = 'Pompe Piscine' -- Nom de l'interrupteur
local puissance = 2700 -- puissance
local conso = 'Conso Piscine' -- nom du capteur virtuel de consommation électrique (type= instant + counter)
local conso_id = 279 -- idx du capteur virtuel de consommation électrique
----------------------------------------------
-- Fin de la partie configuration --
----------------------------------------------
commandArray = {}
npower, energy = string.match(otherdevices_svalues[conso],"(%d+%.*%d*);(%d+%.*%d*)")
local m = os.date('%S')
if (m % 60 == 0) then
print("1 Minutes ecoulees")
-- calcul de la conso
if (otherdevices[Pompe Piscine] == 'On') then
power = tonumber(puissance)
energy = tonumber(energy + (puissance / 60))
commandArray[1]={['UpdateDevice'] = conso_id .. '|0|' .. power .. ';' .. energy}
else
commandArray[2]={['UpdateDevice'] = conso_id .. '|0|' .. 0 .. ';' .. energy}
end
end
return commandArray
Mais quand je le lance, de temps en temps il perd les chèvres et s'exécute plusieurs fois ce qui fausse les données:
"2018-08-20 17:25:00.628 (Module ZWave) Temp + Humidity (Température Salon)
2018-08-20 17:25:00.356 Status: LUA: 1 Minutes ecoulees
2018-08-20 17:25:00.362 Status: EventSystem: Script event triggered: Conso Piscine 2
2018-08-20 17:25:00.544 Status: LUA: 1 Minutes ecoulees
2018-08-20 17:25:00.553 Status: EventSystem: Script event triggered: Conso Piscine 2
2018-08-20 17:25:00.630 Status: LUA: 1 Minutes ecoulees
2018-08-20 17:25:00.633 Status: EventSystem: Script event triggered: Conso Piscine 2
2018-08-20 17:25:04.812 (RFXCOM) Temp + Humidity (Meteo Ext)
2018-08-20 17:25:04.880 (RFPlayer) Devices already exist. Unit=1
2018-08-20 17:25:04.882 (RFPlayer) Devices already exist. Unit=2
2018-08-20 17:25:04.884 (RFPlayer) Devices already exist. Unit=3
2018-08-20 17:25:43.814 (RFXCOM) Temp + Humidity (Meteo Ext)
2018-08-20 17:25:43.849 (RFPlayer) Devices already exist. Unit=1
2018-08-20 17:25:43.851 (RFPlayer) Devices already exist. Unit=2
2018-08-20 17:25:43.852 (RFPlayer) Devices already exist. Unit=3
2018-08-20 17:26:00.483 Status: LUA: 1 Minutes ecoulees
2018-08-20 17:26:00.486 Status: EventSystem: Script event triggered: Conso Piscine 2
2018-08-20 17:26:22.811 (RFXCOM) Temp + Humidity (Meteo Ext)
2018-08-20 17:26:22.866 (RFPlayer) Devices already exist. Unit=1
2018-08-20 17:26:22.867 (RFPlayer) Devices already exist. Unit=2
2018-08-20 17:26:22.868 (RFPlayer) Devices already exist. Unit=3
2018-08-20 17:26:29.710 Status: EventSystem: reset all events...
2018-08-20 17:27:00.499 Status: LUA: 1 Minutes ecoulees
2018-08-20 17:27:00.504 Status: EventSystem: Script event triggered: Conso Piscine 2
2018-08-20 17:27:01.811 (RFXCOM) Temp + Humidity (Meteo Ext)"
Quelqu'un aurait une idée pour stabiliser la chose ? Cela me rend marteau ! Je sais plus par quel bout le prendre ...