Aller au contenu

Domo Piscine avec chauffage


Messages recommandés

Posté(e)

Bonjour je souhaiterais votre aide car je n'arrive pas à le faire en mode bloc donc faut passer en LUA on en Variables et la je suis perdu.

Donc voici mes deux scènes pour enclencher le chauffage de ma piscine et pour le couper (bien sur la pompe se mettra en route si le chauffage se lance )

 

ON:

image.thumb.png.ead3c45c5de8ad0b4b780b1c9799fec2.png

 

OFF :

image.thumb.png.389157584a3f6d3822460b40c2f4f4c5.png

 

Mais voila je souhaite qu'il  ne coupe pas la pompe si elle est en parallèle en fonction sur une des trois scénes horaires de filtration.

 

exemple de mes scènes de filtration il yen a trois par jour seul les horaires diffères :

image.thumb.png.39a7326d8fbeea67138abba86b03fd0e.png

 

merci de votre aide !!!!!!!

 

Domotiquement

Posté(e) (modifié)

Bonjour @hermanos,

 

Je n'ai pas testé, mais cette scène devrait vérifier toutes les heures si la température est correcte.

Si la température est égale ou inférieure à la valeur indiquée dans TempMini, le filtre et le chauffage sont allumés.

Si la température est égale ou supérieure à la valeur indiquée dans TempMaxi, le chauffage sera éteint. Le filtre ne le sera pas si une filtration est programmée.

Par la même occasion, si l'heure actuelle correspond à une des heures paramétrées pour la filtration (variable Horaires), la filtration se mettra en route.

Lorsqu'une filtration sera lancée suite à un horaire programmé dans la variable Horaires, elle s'éteindra automatiquement 5mn (variable DureeFiltration) après, seulement si la température est égale ou supérieure à TempMaxi.

Pour tester, il faut modifier la valeur des 3 premières variables :

  • IDSondeTemp
  • IDChauffage
  • IDFiltre

Et copier le contenu de cette scène dans une nouvelle scène LUA qui pourra être démarrée automatiquement.

Si cela fonctionne et que cela te convient, cette scène sera apte à remplacer tes cinq scènes en mode blocs.

EDIT : Nouvelle version ci-dessous

Modifié par J3R3M
Posté(e) (modifié)

Hier je n'avais pas de HC2 sous la main, je viens de tester le code et l'ai modifié en ajoutant des messages d'information.

Cette scène devrait faire ce que tu attends :

 

--[[
%% autostart
%% properties
%% weather
%% events
%% globals
--]]

-- IDs de tes modules
local IDSondeTemp = 1
local IDChauffage = 2
local IDFiltre = 3

-- Réglages de températures
local TempMini = 24
local TempMaxi = 29

-- Horaires de filtration, séparés par une virgule
local Horaires = {5,12,19};

-- Durée Filtration en minutes
local DureeFiltration = 5

local function Check()
  local Temp = tonumber(fibaro:getValue(IDSondeTemp, "value"));
  local Nb = #Horaires;
  local Heure = tonumber(os.date("%H"));
  local Return = false;
  for i=1,Nb do
    if Horaires[i] == Heure then
      fibaro:call(IDFiltre, "turnOn");
      fibaro:debug(Heure.." - Cycle de filtration démarré...");
      Return = true;
      setTimeout(function() if Temp >= TempMaxi then fibaro:call(IDFiltre, "turnOff"); fibaro:debug(DureeFiltration.." écoulées - Cycle de filtration terminé"); end end,DureeFiltration*60*1000);
    end
  end
  if Temp <= TempMini then
    fibaro:call(IDChauffage, "turnOn");
    fibaro:call(IDFiltre, "turnOn");
    fibaro:debug("Chauffage et filtre activés car la température de l'eau ("..Temp..") <= à la valeur définie ("..TempMini..")");
  elseif Temp >= TempMaxi then
    fibaro:call(IDChauffage, "turnOff");
    fibaro:debug("Chauffage arrêté car la température de l'eau ("..Temp..") >= à la valeur définie ("..TempMaxi..")");
    if not Return then fibaro:call(IDFiltre, "turnOff");  fibaro:debug("Filtre désactivé également car aucun cycle n'était en cours.");end
  end
  setTimeout(Check,60*60*1000);
end


Check();

 

Modifié par J3R3M
Posté(e) (modifié)

Si tu souhaites que les vérifications (et actions qui en découlent) ne soient faites que sur une plage horaire, utilise plutôt cette version : ICI

Modifié par J3R3M
Posté(e)
Il y a 7 heures, J3R3M a dit :

Si tu souhaites que les vérifications (et actions qui en découlent) ne soient faites que sur une plage horaire, utilise plutôt cette version :


--[[
%% autostart
%% properties
%% weather
%% events
%% globals
--]]

-- IDs de tes modules
local IDSondeTemp = 1
local IDChauffage = 2
local IDFiltre = 3

-- Réglages de températures
local TempMini = 24
local TempMaxi = 29

-- Horaires Mini et Maxi de vérification de la température
local HeureMini = 8
local HeureMaxi = 19

-- Horaires de filtration, séparés par une virgule
local Horaires = {5,11,12,19};

-- Durée Filtration en minutes
local DureeFiltration = 5

local function Check()
  local Temp = tonumber(fibaro:getValue(IDSondeTemp, "value"));
  local Nb, Heure, retour = #Horaires, tonumber(os.date("%H")), false;
  if Heure >= HeureMini and Heure <= HeureMaxi then
  	for i=1,Nb do
      if Horaires[i] == Heure then
        fibaro:call(IDFiltre, "TurnOn");
        fibaro:debug(Heure.." - Cycle de filtration démarré...");
        retour = true;
        setTimeout(function() if Temp >= TempMaxi then fibaro:call(IDFiltre, "TurnOff"); fibaro:debug(DureeFiltration.." écoulées - Cycle de filtration terminé"); end end,DureeFiltration*60*1000);
      end
    end
    if Temp <= TempMini then
      fibaro:call(IDChauffage, "TurnOn");
      fibaro:call(IDFiltre, "TurnOn");
      fibaro:debug("Chauffage et filtre activés car la température de l'eau ("..Temp..") <= à la valeur définie ("..TempMini..")");
    elseif Temp >= TempMaxi then
      fibaro:call(IDChauffage, "turnOff");
      fibaro:debug("Chauffage arrêté car la température de l'eau ("..Temp..") >= à la valeur définie ("..TempMaxi..")");
      if not retour then fibaro:call(IDFiltre, "turnOff");  fibaro:debug("Filtre désactivé également car aucun cycle n'était en cours.");end
    end
    setTimeout(Check,60*60*1000);
  elseif Heure < HeureMini then
    local calc = HeureMini-Heure;
    setTimeout(Check,calc*60*60*1000);
    fibaro:debug("En dehors des heures réglées. Prochaine vérification dans "..calc.." heures");
  elseif Heure > HeureMaxi then
    local calc = 24-Heure+HeureMini;
    setTimeout(Check,calc*60*60*1000);
    fibaro:debug("En dehors des heures réglées. Prochaine vérification dans "..calc.." heures");
  end
end


Check();

 

Bonsoir merci de prendre un peut de temps pour mon dossier 

je change seulement les id du début sonde, chauff, filtre 

si c'est ça (fait mais aucune différence avec ou sans)

Posté(e)

Oui, il faut simplement que tu remplaces les IDs des trois premières variables.

Pour constater le fonctionnement de la scène LUA, il te faut bien évidemment désactiver tes scènes en mode bloc.

Posté(e)

--[[
%% autostart
%% properties
%% weather
%% events
%% globals
--]]

-- IDs de tes modules
local IDSondeTemp = 569
local IDChauffage = 550
local IDFiltre = 546

-- Réglages de températures
local TempMini = 24
local TempMaxi = 29

-- Horaires de filtration, séparés par une virgule
local Horaires = {5,12,18};

-- Durée Filtration en minutes
local DureeFiltration = 5

local function Check()
  local Temp = tonumber(fibaro:getValue(IDSondeTemp, "value"));
  local Nb = #Horaires;
  local Heure = tonumber(os.date("%H"));
  local Return = false;
  for i=1,Nb do
    if Horaires == Heure then
      fibaro:call(IDFiltre, "TurnOn");
      fibaro:debug(Heure.." - Cycle de filtration démarré...");
      Return = true;
      setTimeout(function() if Temp >= TempMaxi then fibaro:call(IDFiltre, "TurnOff"); fibaro:debug(DureeFiltration.." écoulées - Cycle de filtration terminé"); end end,DureeFiltration*60*1000);
    end
  end
  if Temp <= TempMini then
    fibaro:call(IDChauffage, "TurnOn");
    fibaro:call(IDFiltre, "TurnOn");
    fibaro:debug("Chauffage et filtre activés car la température de l'eau ("..Temp..") <= à la valeur définie ("..TempMini..")");
  elseif Temp >= TempMaxi then
    fibaro:call(IDChauffage, "turnOff");
    fibaro:debug("Chauffage arrêté car la température de l'eau ("..Temp..") >= à la valeur définie ("..TempMaxi..")");
    if not Return then fibaro:call(IDFiltre, "turnOff");  fibaro:debug("Filtre désactivé également car aucun cycle n'était en cours.");end
  end
  setTimeout(Check,60*60*1000);
end


Check();

 

image.thumb.png.a0d9730893d5c36c3e146dba5015740e.png

Posté(e)
il y a 2 minutes, J3R3M a dit :

Oui, il faut simplement que tu remplaces les IDs des trois premières variables.

Pour constater le fonctionnement de la scène LUA, il te faut bien évidemment désactiver tes scènes en mode bloc.

J'ai désactiver mes scénes mais aucune réaction même si la température monte a 32  

Posté(e)

Etrange! J'ai testé exactement ce code dans une nouvelle scène de ma HC2 et je n'ai aucune erreur!

En cas d'erreur de copier/coller, essaie de télécharger le fichier et de copier son contenu dans une nouvelle scène : Chauff Piscine.lua

En ce qui concerne les IDs de tes modules : 569, 550 et 546, tu es sûr de ceux-ci? Même si une mauvaise indication ne te donnerait pas cette erreur du tout.

Posté(e)

les scénes de filtration je dois aussi les enlever 

 

copier:coller de nouveau et voila mais il dit chauffage activée mais faux

image.thumb.png.220585a4e6da3cb157aaad2ffbacd371.png

Posté(e)

Il faut télécharger le fichier sur ton ordinateur et l'ouvrir avec un éditeur de texte.
Le contenu sera le code ci-dessus.

 

L'éditeur LUA intégré à la HC2 dispose d'un compteur de lignes sur la partie gauche.

Tu pourras remarquer que la ligne 8 correspond à un simple retour à la ligne, tu peux simplement essayer de supprimer ce retour à la ligne, au cas où...

Posté(e) (modifié)
il y a 6 minutes, hermanos a dit :

les scénes de filtration je dois aussi les enlever 

 

copier:coller de nouveau et voila mais il dit chauffage activée mais faux

image.thumb.png.220585a4e6da3cb157aaad2ffbacd371.png

Comment ça faux? Cela t'affiche ce message alors que le module apparaît sur OFF dans ton espace HC2?

Une eau qui était à 32 degrés il y a 20 minutes est déjà descendue à 18 degrés? Tu vis au Pôle Nord? :huh::lol:

Modifié par J3R3M
Posté(e)

:1:non je mes la sonde dans ma main ou dans l'eau pour faire des test hihihihihihi

 

Comment ça faux? oui il activés et le relais ne s'enclenche pas

 Cela t'affiche ce message alors que le module apparaît sur OFF dans ton espace HC2? oui

et pour que action ce face il faut que jappuie sur demarrer en bas de ta scénes LUA

Posté(e)
il y a 1 minute, hermanos a dit :

:1:non je mes la sonde dans ma main ou dans l'eau pour faire des test hihihihihihi

 

Comment ça faux? oui il activés et le relais ne s'enclenche pas

 Cela t'affiche ce message alors que le module apparaît sur OFF dans ton espace HC2? oui

et pour que action ce face il faut que jappuie sur demarrer en bas de ta scénes LUA

Quel est le module qui gère le chauffage, s'il-te-plaît?

O plus simplement et de manière plus complète, tu peux aussi transformer ta scène "ON" (actuellement en mode blocs) en mode LUA.

Ne valide pas la conversation, mais copie juste l'intégralité du code LUA proposé et colle-le en réponse ici, avant d'annuler la conversation du mode blocs en mode LUA.

Cela permettra d'y voir plus clair sur la manière dont sont gérés tes modules actuellement.

Posté(e)
il y a 3 minutes, J3R3M a dit :

Quel est le module qui gère le chauffage, s'il-te-plaît? qubino 

O plus simplement et de manière plus complète, tu peux aussi transformer ta scène "ON" (actuellement en mode blocs) en mode LUA.

Ne valide pas la conversation, mais copie juste l'intégralité du code LUA proposé et colle-le en réponse ici, avant d'annuler la conversation du mode blocs en mode LUA.

Cela permettra d'y voir plus clair sur la manière dont sont gérés tes modules actuellement.

--[[
%% autostart
%% properties
569 value
%% weather
%% events
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( (math.floor(os.time()/60)-math.floor(1586239200/60))%60 == 0  and  tonumber(fibaro:getValue(569, "value")) >= 24 )
)
then
    fibaro:call(550, "turnOn");
    fibaro:call(546, "turnOn");
end

setTimeout(tempFunc, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
tempFunc()
else

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( true  and  tonumber(fibaro:getValue(569, "value")) >= 24 )
or
startSource["type"] == "other"
)
then
    fibaro:call(550, "turnOn");
    fibaro:call(546, "turnOn");
end

end
 

Posté(e) (modifié)

Merci de ton retour!

Mais au temps pour moi, j'ai trouvé le problème : il y a une majuscule mal placée sur toutes les actions : TurnOn au lieu de turnOn.

Essaie avec ce code plutôt :

 

--[[
%% autostart
%% properties
%% weather
%% events
%% globals
--]]

-- IDs de tes modules
local IDSondeTemp = 569
local IDChauffage = 550
local IDFiltre = 546

-- Réglages de températures
local TempMini = 24
local TempMaxi = 29

-- Horaires Mini et Maxi de vérification de la température
local HeureMini = 8
local HeureMaxi = 19

-- Horaires de filtration, séparés par une virgule
local Horaires = {5,11,12,19};

-- Durée Filtration en minutes
local DureeFiltration = 5

local function Check()
  local Temp = tonumber(fibaro:getValue(IDSondeTemp, "value"));
  local Nb, Heure, retour = #Horaires, tonumber(os.date("%H")), false;
  if Heure >= HeureMini and Heure <= HeureMaxi then
  	for i=1,Nb do
      if Horaires[i] == Heure then
        fibaro:call(IDFiltre, "turnOn");
        fibaro:debug(Heure.." - Cycle de filtration démarré...");
        retour = true;
        setTimeout(function() if Temp >= TempMaxi then fibaro:call(IDFiltre, "turnOff"); fibaro:debug(DureeFiltration.." écoulées - Cycle de filtration terminé"); end end,DureeFiltration*60*1000);
      end
    end
    if Temp <= TempMini then
      fibaro:call(IDChauffage, "turnOn");
      fibaro:call(IDFiltre, "turnOn");
      fibaro:debug("Chauffage et filtre activés car la température de l'eau ("..Temp..") <= à la valeur définie ("..TempMini..")");
    elseif Temp >= TempMaxi then
      fibaro:call(IDChauffage, "turnOff");
      fibaro:debug("Chauffage arrêté car la température de l'eau ("..Temp..") >= à la valeur définie ("..TempMaxi..")");
      if not retour then fibaro:call(IDFiltre, "turnOff");  fibaro:debug("Filtre désactivé également car aucun cycle n'était en cours.");end
    end
    setTimeout(Check,60*60*1000);
  elseif Heure < HeureMini then
    local calc = HeureMini-Heure;
    setTimeout(Check,calc*60*60*1000);
    fibaro:debug("En dehors des heures réglées. Prochaine vérification dans "..calc.." heures");
  elseif Heure > HeureMaxi then
    local calc = 24-Heure+HeureMini;
    setTimeout(Check,calc*60*60*1000);
    fibaro:debug("En dehors des heures réglées. Prochaine vérification dans "..calc.." heures");
  end
end


Check();

 

Modifié par J3R3M
Posté(e) (modifié)
il y a 1 minute, hermanos a dit :

image.thumb.png.f3fecf5912fde60cb4c2543e9be47c1d.png

Oui, j'ai eu peur que tu sois trop rapide! Erreur de copier/coller de mon côté :D

Tu peux rééssayer avec le code ci-dessus désormais, j'ai rectifié ;)

Modifié par J3R3M
Posté(e)
à l’instant, hermanos a dit :

dit moi je désactive mes scène bloque de filtration ou pas

Oui, si cette scène est fonctionnelle et te convient, elle remplacera tes 5 scènes en mode blocs.

Posté(e) (modifié)

Dans les réglages de ta scène, le démarrage doit certainement être actuellement sur Manuel. Dans le menu déroulant, mets-la sur automatique et enregistre.

La scène fera ensuite sa vie toute seule et fera le nécessaire chaque heure ;)

 

Modifié par J3R3M
×
×
  • Créer...