hermanos Posté(e) le 7 avril 2020 Signaler Posté(e) le 7 avril 2020 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: OFF : 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 : merci de votre aide !!!!!!! Domotiquement
J3R3M Posté(e) le 7 avril 2020 Signaler Posté(e) le 7 avril 2020 (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é le 8 avril 2020 par J3R3M
J3R3M Posté(e) le 8 avril 2020 Signaler Posté(e) le 8 avril 2020 (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é le 8 avril 2020 par J3R3M
J3R3M Posté(e) le 8 avril 2020 Signaler Posté(e) le 8 avril 2020 (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é le 8 avril 2020 par J3R3M
hermanos Posté(e) le 8 avril 2020 Auteur Signaler Posté(e) le 8 avril 2020 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)
J3R3M Posté(e) le 8 avril 2020 Signaler Posté(e) le 8 avril 2020 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.
hermanos Posté(e) le 8 avril 2020 Auteur Signaler Posté(e) le 8 avril 2020 --[[ %% 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();
hermanos Posté(e) le 8 avril 2020 Auteur Signaler Posté(e) le 8 avril 2020 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
J3R3M Posté(e) le 8 avril 2020 Signaler Posté(e) le 8 avril 2020 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.
hermanos Posté(e) le 8 avril 2020 Auteur Signaler Posté(e) le 8 avril 2020 je n'arrive pas ouvrir ton fichier Citation
hermanos Posté(e) le 8 avril 2020 Auteur Signaler Posté(e) le 8 avril 2020 les scénes de filtration je dois aussi les enlever copier:coller de nouveau et voila mais il dit chauffage activée mais faux
J3R3M Posté(e) le 8 avril 2020 Signaler Posté(e) le 8 avril 2020 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ù...
J3R3M Posté(e) le 8 avril 2020 Signaler Posté(e) le 8 avril 2020 (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 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? Modifié le 8 avril 2020 par J3R3M
hermanos Posté(e) le 8 avril 2020 Auteur Signaler Posté(e) le 8 avril 2020 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
J3R3M Posté(e) le 8 avril 2020 Signaler Posté(e) le 8 avril 2020 il y a 1 minute, hermanos a dit : 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.
hermanos Posté(e) le 8 avril 2020 Auteur Signaler Posté(e) le 8 avril 2020 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
J3R3M Posté(e) le 8 avril 2020 Signaler Posté(e) le 8 avril 2020 (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é le 8 avril 2020 par J3R3M
J3R3M Posté(e) le 8 avril 2020 Signaler Posté(e) le 8 avril 2020 (modifié) il y a 1 minute, hermanos a dit : Oui, j'ai eu peur que tu sois trop rapide! Erreur de copier/coller de mon côté Tu peux rééssayer avec le code ci-dessus désormais, j'ai rectifié Modifié le 8 avril 2020 par J3R3M
hermanos Posté(e) le 8 avril 2020 Auteur Signaler Posté(e) le 8 avril 2020 dit moi je désactive mes scène bloque de filtration ou pas
J3R3M Posté(e) le 8 avril 2020 Signaler Posté(e) le 8 avril 2020 à 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.
hermanos Posté(e) le 8 avril 2020 Auteur Signaler Posté(e) le 8 avril 2020 alors elle fonctionnent mais je dois a chaque fois faire démarrer pour que action se passe
J3R3M Posté(e) le 8 avril 2020 Signaler Posté(e) le 8 avril 2020 (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é le 8 avril 2020 par J3R3M
hermanos Posté(e) le 8 avril 2020 Auteur Signaler Posté(e) le 8 avril 2020 j'avais déja regarder mais oui elle était bien en auto
Messages recommandés