lionel Posté(e) le 4 janvier 2014 Signaler Posté(e) le 4 janvier 2014 Avant que les beaux jours ne reviennent 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
Shad Posté(e) le 4 janvier 2014 Signaler Posté(e) le 4 janvier 2014 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
lionel Posté(e) le 4 janvier 2014 Auteur Signaler Posté(e) le 4 janvier 2014 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
i-magin Posté(e) le 4 janvier 2014 Signaler Posté(e) le 4 janvier 2014 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 ?
lionel Posté(e) le 4 janvier 2014 Auteur Signaler Posté(e) le 4 janvier 2014 - 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 ?
i-magin Posté(e) le 4 janvier 2014 Signaler Posté(e) le 4 janvier 2014 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
lionel Posté(e) le 4 janvier 2014 Auteur Signaler Posté(e) le 4 janvier 2014 turnON dans une autre scène la filtration démarre a une heure précise aussi shah a donné une bonne idée du virtuel device (histoire de tout regroupé)
Shad Posté(e) le 4 janvier 2014 Signaler Posté(e) le 4 janvier 2014 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.
Shad Posté(e) le 4 janvier 2014 Signaler Posté(e) le 4 janvier 2014 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.
lionel Posté(e) le 4 janvier 2014 Auteur Signaler Posté(e) le 4 janvier 2014 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
Shad Posté(e) le 4 janvier 2014 Signaler Posté(e) le 4 janvier 2014 T'inquiete je regarde sa. Par contre je pourrais pas le tester donc j'attendrais tes retours
lolomail Posté(e) le 4 janvier 2014 Signaler Posté(e) le 4 janvier 2014 Déjàil faut utiliser le scheduler de robmac. Pourrais-tu développer le but et le fonctionnement de ce scheduler? Merci
Shad Posté(e) le 4 janvier 2014 Signaler Posté(e) le 4 janvier 2014 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.
Moicphil Posté(e) le 4 janvier 2014 Signaler Posté(e) le 4 janvier 2014 @ 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"...
lionel Posté(e) le 5 janvier 2014 Auteur Signaler Posté(e) le 5 janvier 2014 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
i-magin Posté(e) le 5 janvier 2014 Signaler Posté(e) le 5 janvier 2014 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 ?
lionel Posté(e) le 5 janvier 2014 Auteur Signaler Posté(e) le 5 janvier 2014 -Oui pour TempPiscine -j ai enlevé les guillemets -oui pour l ID par contre toujours rien, aucune valeur ne n affiche
i-magin Posté(e) le 5 janvier 2014 Signaler Posté(e) le 5 janvier 2014 Le debug te renvoie une valeur ?
lionel Posté(e) le 5 janvier 2014 Auteur Signaler Posté(e) le 5 janvier 2014 oui le debug me renvoie bien la température
i-magin Posté(e) le 5 janvier 2014 Signaler Posté(e) le 5 janvier 2014 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 ?
lionel Posté(e) le 5 janvier 2014 Auteur Signaler Posté(e) le 5 janvier 2014 ç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 ?!
lolomail Posté(e) le 5 janvier 2014 Signaler Posté(e) le 5 janvier 2014 Ca veux dire qu'on pourrait faire un VD pour afficher les températures de toutes les pièces
i-magin Posté(e) le 5 janvier 2014 Signaler Posté(e) le 5 janvier 2014 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 ?
lolomail Posté(e) le 5 janvier 2014 Signaler Posté(e) le 5 janvier 2014 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
Messages recommandés