Bonjour à tous !
Je reviens à la charge, j'ai reçu le matériel et cette partie est terminée ( je pilote un relais via un nodemcu et j'ai deux sonde de température connectées qui remontent les températures).

- dlqziMVb7W.png (47.01 Kio) Consulté 1471 fois
Il me reste maintenant la partie script et j'ai trouvé un exemple de script qui remonte la durée d'utilisation de la pompe, c'est justement quelque chose dont j'avais besoin et qui me paraissait insurmontable (je suis grand débutant)
J'ai donc une variable utilisateur [Pompe Piscine] qui stocke la durée d'utilisation de la pompe et que j'affiche dans un device Text.

- nHcUzeoQp6.png (6.68 Kio) Consulté 1471 fois
J'ai ajouté une variable utilisateur [Besoin_filtration]qui doit me servir à stocker la durée de filtration requise en fonction de la temperature. Ca c'est le premier truc qui marche pas, elle reste à zéro mais je ne pense pas que cela soit la root cause, le problème vient sans doute du calcul de cette variable.

- uEqiB4HBe1.png (4.71 Kio) Consulté 1471 fois
Ensuite je recupere la température d'une sonde ['Sortie_piscine'] pour calculer le temps nécessaire de filtration, le stocker dans [Besoin_filtration] puis l'écrire dans les logs pour faciliter le suivi.

- MAcPSpb5es.png (1.99 Kio) Consulté 1471 fois
J'en suis là, il me restera ensuite la mise en route de la pompe mais pour cela j'ai besoin de cette variable.

- kZLsBFA3K9.png (22.79 Kio) Consulté 1464 fois
J'ai essayé plein de chose et appris plein de trucs mais je séche, dans les logs j'obtiens ça :

- bVvggtGpZx.png (6.62 Kio) Consulté 1471 fois
Mes questions :
- Est-ce que la méthode est bonne ? y a t'il plus simple sachant qu'après j'allumerais la pompe en faisant juste après le calcul si [Pompe Piscine]<[Besoin_filtration] alors ON?
- Comment afficher dans les logs le résultat du calcul de besoin à la place de "Scenario 20-25" pour le vérifier
- Pourquoi je n'arrive à le stocker dans la variable utilisateur
J'espère être clair et que le script est assez lisible... pour pouvoir obtenir un peu d'aide car je suis coincé.
Merci à ceux qui prendront du temps pour m'aider !
Voici mon script :
Code : Tout sélectionner
--
-- Domoticz passes information to scripts through a number of global tables
--
-- otherdevices, otherdevices_lastupdate and otherdevices_svalues are arrays for all devices:
-- otherdevices['yourotherdevicename'] = "On"
-- otherdevices_lastupdate['yourotherdevicename'] = "2015-12-27 14:26:40"
-- otherdevices_svalues['yourotherthermometer'] = string of svalues
--
-- uservariables and uservariables_lastupdate are arrays for all user variables:
-- uservariables['yourvariablename'] = 'Test Value'
-- uservariables_lastupdate['yourvariablename'] = '2015-12-27 11:19:22'
--
-- other useful details are contained in the timeofday table
-- timeofday['Nighttime'] = true or false
-- timeofday['SunriseInMinutes'] = number
-- timeofday['Daytime'] = true or false
-- timeofday['SunsetInMinutes'] = number
-- globalvariables['Security'] = 'Disarmed', 'Armed Home' or 'Armed Away'
--
-- To see examples of commands see: http://www.domoticz.com/wiki/LUA_commands#General
-- To get a list of available values see: http://www.domoticz.com/wiki/LUA_commands#Function_to_dump_all_variables_supplied_to_the_script
--
-- Based on your logic, fill the commandArray with device commands. Device name is case sensitive.
--
--------------------------------
------ 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 = 343 -- Numéro idx du capteur virtuel texte.
local besoin_txt = 344 -- Numéro idx du capteur virtuel texte.
local Heure_Raz = 7 -- Heure de remise à zéro du compteur (compris entre 0 et 23).
local duree_cycle = 80 --M3 piscine / débit M3 pompe* 60
local T_eau=tonumber((otherdevices_svalues['Sortie_piscine'])) --tonumber((otherdevices_svalues['Lumière']))
--------------------------------
-- Fin des variables à éditer --
--------------------------------
local scriptName = 'Filtration_ON'
local scriptVersion = '0.1'
-----------------------------------------------------------------------------------------------------
--------------------Calcul du temps de fonctionnement Journalier -------------------------------
-----------------------------------------------------------------------------------------------------
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)
if (otherdevices[switch]=='On') then
commandArray['Variable:'..user_var] = tostring(uservariables[user_var] +1)--Lecture user variable et enregistrement + 1 dans cette même variable
Valeur_Compteur = tostring(uservariables[user_var])--Lecture dans variable temporaire
Valeur_Compteur_txt = tostring(""..math.floor((Valeur_Compteur/60)).. "H:"..math.floor(Valeur_Compteur-(math.floor((Valeur_Compteur/60))*60)).. "Mn")--Calcul et enregistrement dans valeur tempo txt + formatage
commandArray['UpdateDevice'] = counter_txt .. '|0|' .. Valeur_Compteur_txt--Enregistrement dans Compteur Txt
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
--[[-----------Calcul du besoin temps de fonctionnement Journalier -------------------------------
(0,1 * HCYCLE) -- si <10°
(0,5*HCYCLE) -- si 10-14°
(1*HCYCLE) -- si 15-20°
(2*HCYCLE= -- si 20-25°
(3*HCYCLE) -- si >25°
--------------------------------------------------------------------------------------------------------------------------
--]]
if (T_eau < 10) then commandArray['Variable:'..Heure_Besoin] = tostring(duree_cycle * 0.1) and print ("Scenario 10-14°")
elseif (T_eau > 10) and (T_eau <= 15) then commandArray['Variable:'..Heure_Besoin] = tostring(duree_cycle*0.5) and print ("Scenario 10-14°")
elseif (T_eau > 15) and (T_eau <= 20) then commandArray['Variable:'..Heure_Besoin] = tostring(duree_cycle*1) and print ("Scenario 15-20°")
elseif (T_eau > 20) and (T_eau <= 25) then commandArray['Variable:'..Heure_Besoin] = tostring(duree_cycle*2) and print ("Scenario 20-25°")
elseif (T_eau > 25) then commandArray['Variable:'..Heure_Besoin] = tostring(duree_cycle * 3) and print tostring(uservariables['Heure_Besoin'] ">25°")
end
Valeur_Besoin = tostring(uservariables[''..Heure_Besoin]) --Lecture dans variable temporaire
Valeur_Besoin_txt = tostring(""..math.floor((Valeur_Besoin/60)).. "H:"..math.floor(Valeur_Besoin-(math.floor((Valeur_Besoin/60))*60)).. "Mn")--Calcul et enregistrement dans valeur tempo txt + formatage
commandArray['UpdateDevice'] = besoin_txt .. '|0|' .. Valeur_Besoin_txt--Enregistrement dans Compteur Txt
return commandArray