Aller au contenu

Messages recommandés

Posté(e)

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
Posté(e)

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

Posté(e)

très bonne idée le virtuel device (j ai pas de store) ,mais bouton pour les soirées ( Projo ;musique ;et remise en route de la filtration )

 

super Merci  :60:

Posté(e)

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 ?

Posté(e)

- 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 ?

Posté(e)

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

Posté(e)

turnON dans une autre scène  :wacko:

la filtration démarre a une heure précise aussi

shah a donné une bonne idée du virtuel device (histoire de tout regroupé)

Posté(e)

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.

Posté(e)

Bon j'ai réfléchie et trouver comment faire les choses bien.

Déjà  il faut utiliser le scheduler de robmac.

 

Je vais refaire le tout et je te poste après.

Posté(e)

 

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:

Posté(e)

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.

Posté(e)

@ Shad,

 

Ce qui serais top, c'est de nous faire un résumé de ce script (en francais !) avec un exemple d'utilisation .

Tu pourrais le poster dans "scénario et script lua"...  ;)

Posté(e)

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
Posté(e)

Je suppose que "TempPiscine" s'affiche au niveau de ton label ?

Enlève les guillemets qui entourent TempPiscine dans ta troisième ligne

Et précision pour "ui.Label1.value" : tu as saisi Label1 dans l'ID du label ?

Posté(e)

-Oui pour TempPiscine

-j ai enlevé les guillemets 

-oui pour l ID 

 

par contre toujours rien, aucune valeur ne n affiche 

Posté(e)

Bon, je n'avais pas suffisamment regardé.... ajoute "setProperty"

fibaro:call(176,"setProperty","ui.Label1.value", TempPiscine)

NB : en lançant le debug, tu n'avais pas un retour d'erreur ?

Posté(e)

ç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 ?!

Posté(e)

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 ?

Posté(e)

En fait après réflexion cela ne servirait pas àgrand chose, avec l'appli iPhone tu as une visu rapide des temps de toutes les pièces :)

×
×
  • Créer...