Aller au contenu

Recommended Posts

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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

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:

Partager ce message


Lien à poster
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 ?

Partager ce message


Lien à poster
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 ?

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

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é)

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
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:

Partager ce message


Lien à poster
Partager sur d’autres sites

T'inquiete je regarde sa.

Par contre je pourrais pas le tester donc j'attendrais tes retours :D

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Pourrais-tu développer le but et le fonctionnement de ce scheduler? Merci

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

@ 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"...  ;)

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

-Oui pour TempPiscine

-j ai enlevé les guillemets 

-oui pour l ID 

 

par contre toujours rien, aucune valeur ne n affiche 

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ?

Partager ce message


Lien à poster
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 ?!

Partager ce message


Lien à poster
Partager sur d’autres sites

Ca veux dire qu'on pourrait faire un VD pour afficher les températures de toutes les pièces :D

Partager ce message


Lien à poster
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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :)

Partager ce message


Lien à poster
Partager sur d’autres sites

×