Aller au contenu

lionel

Messages recommandés

Avant que les beaux jours ne reviennent  :rolleyes:

 

j ai créer ce petit script pour gérer le temps de filtration en fonction de la Température de la piscine

(les retours sur une amélioration de celui sont les bienvenues)

 

tout d abord ,j ai une créer un scénario qui:

 

- ce lance tous les jours à  14 hrs 

- relève la température de la piscine

- lance le script ci dessous

--[[
%% properties

%% globals
--]]
--filtration en route en fonction de le température de la piscine
fibaro:debug("HC2 demarre le script le " .. os.date());
local MaVariable
MaVariable=fibaro:getValue(112,'value')--module temperature piscine
  fibaro:debug('value = ' .. MaVariable)
if
  (MaVariable >= '24' and MaVariable < '26')
  then
  sleep(288*100*1000) -- 8 heures
  fibaro:call(115,"turnOff")
  fibaro:debug(115)
if
    (MaVariable >= '26' and MaVariable < '28')
    then
    sleep(360*100*1000) -- 10 heures
    fibaro:call(115,'turnOff')
    fibaro:debug(115)
end
end
Lien vers le commentaire
Partager sur d’autres sites

Sympa, mais si sa peut te donner des idées voilàce que je compte faire:

- remplissage automatique de l'eau

- un virtual device pour la piscine avec température-marche arret moteur- un bouton pour aller àla piscine(déroule les stores..)-bouton sortie piscine pour tout ranger.

- et la musique

Lien vers le commentaire
Partager sur d’autres sites

J'ai un petit peu de mal àsuivre...

- pourquoi deux scripts et pas un seul ?

- ce script arrêterait la filtration en cours selon un délai ?

- Mais quel script lance la filtration ?

- ne serait-il pas judicieux de gérer une variable globale de fin de filtration ?

Lien vers le commentaire
Partager sur d’autres sites

- c était mes premiers pas en LUA (donc une scene bloc et un script), mais c est vrai ,je vais essayer de les fusionner

 

- oui ,en fonction de la température prise a un moment donné je filtre plus ou moins longtemps

 

- celui ci :

--[[
%% autostart
%% properties
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger();
if (sourceTrigger["type"] == "autostart") then
while true do

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "14:00") )
)
then
	fibaro:startScene(54);
end

fibaro:sleep(60*1000);
end
else

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
startSource["type"] == "other"
)
then
	fibaro:startScene(54);
end

end

mais en scene Bloc

 

- c est à  dire ?

Lien vers le commentaire
Partager sur d’autres sites

Ok, je comprends mieux, mais je ne vois pas de "turnOn" ?

Je pensais possible de calculer l'heure de fin de la filtration, qui aurait été traitée par une condition "if"

Mais la fonction "sleep" ira bien dans ton cas, puisqu'il n'y a pas d'autres actions dans ton script

Lien vers le commentaire
Partager sur d’autres sites

Quelque chose me dérange dans ton script.

 

si j'étais toi je ferais:

--[[
%% properties
%% globals
--]]

--filtration en route en fonction de le température de la piscine
fibaro:debug("HC2 demarre le script le " .. os.date());
local startSource = fibaro:getSourceTrigger();
local MaVariable
MaVariable=fibaro:getValue(112,'value')--module temperature piscine
fibaro:debug('value = ' .. MaVariable)

if ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "14:00") then
  fibaro:setGlobal("Piscine", "On");
  fibaro:call(115,"turnOn");
  if (MaVariable >= '24' and MaVariable < '26') then
    sleep(288*100*1000) -- 8 heures
    fibaro:call(115,"turnOff")
    fibaro:debug(115)
  elseif (MaVariable >= '26' and MaVariable < '28') then
    sleep(360*100*1000) -- 10 heures
    fibaro:call(115,'turnOff')
    fibaro:debug(115)
  end
elseif ( startSource["type"] == "other" ) then
  if (fibaro:getGlobalValue("Piscine") == Off) then
    fibaro:call(115,'turnOn');
    fibaro:setGlobal("Piscine", "On");
  elseif (fibaro:getGlobalValue("Piscine") == On) then
    fibaro:call(115,'turnOff');
    fibaro:setGlobal("Piscine", "Off");
  end
end
fibaro:sleep(60*1000)

Là  le script gère tous tout seul juste creer une variable Piscine avec des valeurs définie On et Off. Et il sait si ton moteur est en marche ou arrêter et tu peux l’arrêter de toi même.
Mais je suis toujours pas convaincue par les sleep et ce code car j'aimerais que quand je redémarre la piscine il n'est pas perdu quand est-ce qu'il doit s'arrêter.

 

Je vais m'y penché un peu plus ce soir car je dois le mettre en place pour moi d'ici peu.

Lien vers le commentaire
Partager sur d’autres sites

 

Mais je suis toujours pas convaincue par les sleep et ce code car j'aimerais que quand je redémarre la piscine il n'est pas perdu quand est-ce qu'il doit s'arrêter.

 

si la mise en route de la filtration est gérée par une autre scène (c est mon cas), c est la prise de température qui gère l arrêt ...

donc le code n est pas dépendant du module filtration !?

 

j attends avec impatience ton code ,je sens que je vais passer une semaine a essayer de le comprendre  :unsure:

Lien vers le commentaire
Partager sur d’autres sites

http://forum.fibaro.com/viewtopic.php?t=3200&sid=4bf231e8d7c9f44f48810e0c16974ad5

 

C'est un script développé par robmac avec l'aide de jompa68 et A.Socha.

 

Dans la dernière version il a ajouté un réveil qui permet d’effectuer une action.

 

En fait je suis entrain de basé tout mes scènes dessus.Tu peux choisir à  quel heure, ou quel moment lancer une scène.

C'est vraiment un agenda ou tu met toutes tes taches quotidiennes.

Lien vers le commentaire
Partager sur d’autres sites

une petite question:

 

comment fait t on pour afficher dans un label du VD,la valeur de température d un capteur de porte ?

 

j ai essayer ça mais ça ne fonctionne pas

 

local TempPiscine = fibaro:getValue(112, "value")
fibaro:debug('La Température est de: ' ..TempPiscine)
fibaro:call(176, "ui.Label1.value", " TempPiscine")
 
Merci
Lien vers le commentaire
Partager sur d’autres sites

ça fonctionne ,Merci

 

et non je n avais pas d erreur, par contre peut être pas une bonne idée de faire

sur le debug il recupere la température toutes les 3 secondes la HC2 ne va peut être pas aimée ?!

Lien vers le commentaire
Partager sur d’autres sites

Pour l'impact sur la box, je ne suis pas suffisamment compétent, mais est-ce que tu peux nous dire si l'historique des événements est "alimenté" par le relevé de température que tu déclenches ?

Si ton module est sur batterie, il va falloir prévoir un budget  ;) ... Récupérer la température toutes les 3 secondes ? est-ce bien nécessaire ?

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...