Mise à jour variable utilisateur dans un script
Publié : 28 juin 2021, 23:46
Débutant, je galère depuis plusieurs jours avec un problème de mise à jour d'une variable utlisateur.
Cette ligne :
donne ça dans les logs :
donc C04 = 160.0 et 'Besoin_filtration' =333.0
C'est commande ne devrait elle pas la modifier ?
Si non comment faire pour ecrire la valeur de C04 dans la variable utilisateur ?
Le script complet suivi du log:
le log:
Cette ligne :
Code : Tout sélectionner
commandArray ['Variable:Besoin_filtration'] = (C04) and print("C04 - temps nécessaire = "..C04.." mn "..(uservariables['Besoin_filtration']))Code : Tout sélectionner
C04 - temps nécessaire = 160.0 mn 333.0C'est commande ne devrait elle pas la modifier ?
Code : Tout sélectionner
commandArray ['Variable:Besoin_filtration'] = (C04)Le script complet suivi du log:
Code : Tout sélectionner
--------------------------------
------ Variables à éditer ------
--------------------------------
local user_var = 'Pompe Piscine' -- Nom de la variable utilisateur (uservariable)utilisé pour mémoriser la valeur en minutes dans Domoticz (Domoticz-->configuration-->plus d'options-->variables utilisateurs).
local switch = 'Relais_pompe_piscine' -- Nom de l'interrupteur virtuel de la pompe dans Domoticz
local Heure_Besoin = 'Besoin_filtration' --Durée de filtration requise en fonctione de la temperature
local counter_txt = 345 -- Numéro idx du capteur virtuel texte "Durée filtration"
local besoin_txt = 344 -- Numéro idx du capteur virtuel texte "Besoin_filtration"
local Heure_Raz = 10 -- Heure de remise à zéro du compteur.
local duree_cycle = 80 --M3 piscine / débit M3 pompe *60
--Definition de la durée de filtration en fonction du temps d'un cycle/Température
local T_eau=tonumber((otherdevices_svalues['Sortie_piscine']))
local T_eau_chaude=tonumber((otherdevices_svalues['entree_piscine']))
local M3 = 4
local M3H = 3
local duree_cycle = tonumber(M3)/tonumber(M3H)*60 --M3 piscine / débit M3 pompe *60
local C01=(0.1 *duree_cycle) -- si <10°
local C02=(0.5*duree_cycle) -- si 10-14°
local C03=(1*duree_cycle) -- si 15-20°
local C04=(2*duree_cycle) -- si 20-28°
local C05=(3*duree_cycle) -- si >28°
--------------------------------
-- Fin des variables à éditer --
--------------------------------
local scriptName = 'Cyclage_Filtration'
local scriptVersion = '0.1'
print "---------------------------------------------------------------------------------------------------"
print "--------------------Calcul du temps de fonctionnement quotidien -----------------------------------"
print "---------------------------------------------------------------------------------------------------"
commandArray = {}
time=os.time()
local minutes = tonumber(os.date('%M',time))
local hours = tonumber(os.date('%H',time))
local NowInMinutes = (hours * 60 + minutes)
local h_min = (Heure_Raz * 60)
print "----------------------------------------------------------------------------------------------------"
print "--------------------Calcul du temps de cycles ------------------------------------------------------"
print "----------------------------------------------------------------------------------------------------"
if tostring(Valeur_Compteur) > tostring(Valeur_Besoin) then domoticz.device('switch').switchOff()
----------------------------------------------------------------------------------------------------------
elseif tostring(T_eau) < '10' then
commandArray ['Variable:Besoin_filtration'] = (C01) and print("C01 - temps nécessaire = "..C01.." mn "..(uservariables['Besoin_filtration']))
----------------------------------------------------------------------------------------------------------
elseif tostring(T_eau) >= '10' and tostring(T_eau) < '14' then
commandArray ['Besoin_filtration'] = (C02) and print("C02 - temps nécessaire = "..C02.." mn "..(uservariables['Besoin_filtration']))
----------------------------------------------------------------------------------------------------------
elseif tostring(T_eau) >= '14' and tostring(T_eau) < '20' then
commandArray ['Besoin_filtration'] = (C03) and print("C03 - temps nécessaire = "..C03.." mn "..(uservariables['Besoin_filtration']))
----------------------------------------------------------------------------------------------------------
elseif tostring(T_eau) >= '20' and tostring(T_eau) < '28' then
commandArray ['Besoin_filtration'] = (C04) and print("C04 - temps nécessaire = "..C04.." mn "..(uservariables['Besoin_filtration']))
----------------------------------------------------------------------------------------------------------
elseif tostring(T_eau) >= '28' then
commandArray ['Variable:Besoin_filtration'] = (C05) and print("C05 - temps nécessaire = "..C05.." mn "..(uservariables['Besoin_filtration']))
----------------------------------------------------------------------------------------------------------
end
print("Température "..T_eau)
print("Valeur du scenario 1 -> "..C01.." si <10° ") --Status: LUA: 8.0
print("Valeur du scenario 2 -> "..C02.." si 10-14° ") -- Status: LUA: 40.0
print("Valeur du scenario 3 -> "..C03.." si 15-20° ") -- Status: LUA: 80
print("Valeur du scenario 4 -> "..C04.." si 20-28° ") -- Status: LUA: 160
print("Valeur du scenario 5 -> "..C05.." si >28° ") -- Status: LUA: 160
print(Heure_Besoin.." <- Valeur de la variable Heure_Besoin")
print(uservariables['Besoin_filtration'].." <- Valeur de la variable user 'Besoin_filtration'")
print(uservariables['Pompe Piscine'].." <- Valeur de la variable user 'Pompe Piscine'")
print "----------------------------------------------------------------------------------------------------"
print "--------------------Fin du calcul du temps de cycles--------------------------------"
print "----------------------------------------------------------------------------------------------------"
---Mise à jour de la valeur ndas l'interrupteur virtuel
if (otherdevices[switch]=='On') then
commandArray['Variable:'..user_var] = tostring(uservariables[user_var] +1)--Lecture user variable et enregistrement et incrementation
Valeur_Compteur = tostring(uservariables[user_var]) --Lecture de la variable temporaire
Valeur_Besoin = (uservariables[Heure_Besoin]) --Lecture de la variable temporaire
Valeur_Compteur_txt = tostring("0"..math.floor((Valeur_Compteur/60)).. "h"..math.floor(Valeur_Compteur-(math.floor((Valeur_Compteur/60))*60)).." Heure de raz "..(Heure_Raz).."h00".."")--Calcul et enregistrement dans valeur tempo txt + formatage
Valeur_Besoin_txt = tostring("0"..math.floor((Valeur_Besoin/60)).. "h"..math.floor(Valeur_Besoin-(math.floor((Valeur_Besoin/60))*60)).. "")--Calcul et enregistrement dans valeur tempo txt + formatage
commandArray[1] = {['UpdateDevice'] = besoin_txt ..'|0|'.. Valeur_Besoin_txt} --Enregistrement dans Compteur Txt
commandArray[2] = {['UpdateDevice'] = counter_txt ..'|0|'.. Valeur_Compteur_txt} --Enregistrement dans Compteur Txt
print (Valeur_Besoin_txt.." <- Valeur de la variable Heure_Besoin_txt")
print (Valeur_Besoin.." <- Valeur de la variable Heure_Besoin")
print (Valeur_Compteur_txt.." <- Valeur de la variable Valeur_Compteur_txt")
print (Valeur_Compteur.." <- Valeur de la variable Valeur_Compteur")
end
if ((NowInMinutes > h_min) and (NowInMinutes < (h_min + 10))) then--RAZ journalier à l'heure voulu.
commandArray['Variable:'..user_var]= tostring(0)
Valeur_Compteur_txt = tostring("0H:0Mn")
commandArray['UpdateDevice'] = counter_txt .. '|0|' .. Valeur_Compteur_txt
end
print "----------------------------------------------------------------------------------------------------"
print "--------------------Fin Calcul du temps de fonctionnement quotidien --------------------------------"
print "----------------------------------------------------------------------------------------------------"
return commandArray
Code : Tout sélectionner
2021-06-28 23:42:01.719 Status: LUA: ---------------------------------------------------------------------------------------------------
2021-06-28 23:42:01.719 Status: LUA: --------------------Calcul du temps de fonctionnement quotidien -----------------------------------
2021-06-28 23:42:01.719 Status: LUA: ---------------------------------------------------------------------------------------------------
2021-06-28 23:42:01.719 Status: LUA: ----------------------------------------------------------------------------------------------------
2021-06-28 23:42:01.719 Status: LUA: --------------------Calcul du temps de cycles ------------------------------------------------------
2021-06-28 23:42:01.719 Status: LUA: ----------------------------------------------------------------------------------------------------
2021-06-28 23:42:01.719 Status: LUA: C04 - temps nécessaire = 160.0 mn 333.0
2021-06-28 23:42:01.719 Status: LUA: Température 20.3
2021-06-28 23:42:01.719 Status: LUA: Valeur du scenario 1 -> 8.0 si <10°
2021-06-28 23:42:01.719 Status: LUA: Valeur du scenario 2 -> 40.0 si 10-14°
2021-06-28 23:42:01.719 Status: LUA: Valeur du scenario 3 -> 80.0 si 15-20°
2021-06-28 23:42:01.719 Status: LUA: Valeur du scenario 4 -> 160.0 si 20-28°
2021-06-28 23:42:01.719 Status: LUA: Valeur du scenario 5 -> 240.0 si >28°
2021-06-28 23:42:01.719 Status: LUA: Besoin_filtration <- Valeur de la variable Heure_Besoin
2021-06-28 23:42:01.719 Status: LUA: 333.0 <- Valeur de la variable user 'Besoin_filtration'
2021-06-28 23:42:01.719 Status: LUA: 147.0 <- Valeur de la variable user 'Pompe Piscine'
2021-06-28 23:42:01.719 Status: LUA: ----------------------------------------------------------------------------------------------------
2021-06-28 23:42:01.719 Status: LUA: --------------------Fin du calcul du temps de cycles--------------------------------
2021-06-28 23:42:01.719 Status: LUA: ----------------------------------------------------------------------------------------------------
2021-06-28 23:42:01.719 Status: LUA: 05h33 <- Valeur de la variable Heure_Besoin_txt
2021-06-28 23:42:01.719 Status: LUA: 333.0 <- Valeur de la variable Heure_Besoin
2021-06-28 23:42:01.719 Status: LUA: 02h27 Heure de raz 10h00 <- Valeur de la variable Valeur_Compteur_txt
2021-06-28 23:42:01.719 Status: LUA: 147.0 <- Valeur de la variable Valeur_Compteur
2021-06-28 23:42:01.719 Status: LUA: ----------------------------------------------------------------------------------------------------
2021-06-28 23:42:01.719 Status: LUA: --------------------Fin Calcul du temps de fonctionnement quotidien --------------------------------
2021-06-28 23:42:01.719 Status: LUA: ----------------------------------------------------------------------------------------------------
2021-06-28 23:42:01.748 Status: EventSystem: Script event triggered: Script_time_Piscine