sebcbien Posté(e) le 7 mars 2015 Signaler Posté(e) le 7 mars 2015 Petit script permettant de se réveiller en douceur. J'avais fait ce script il y a déjà pas mal de temps, il me permettait de déclencher l'allumage en douceur dans ma chambre et dans celle des enfant dès que le réveil sonnait. Avec le script ALARM de Steven et son GEA, j'en ai profité pour l'améliorer. Maintenant le script se lance soit via mon révei, soit via le Virtual Device ALARM de Steven et GEA Ce script permet de: - choisir la durée de l'allumage des lampes (en minutes) - détecte ces conditions individuellement pour chaque chambre: - Si une lampe est déjà allumée, elle est exclue de l'allumage (évite de passer de 100% à 5% lorsque le script démarre et que l'on est déjà levé) - Si on modifie une lampe elle est exclue (extinction ou allumage à 100% par exemple) - Si toutes les lampes ont été modifiées, fin du script - allumer mon routeur Wifi de l'étage (qui est coupé s'il n'y a pas de mouvement détecté pendant 30 minutes) Depuis ce script, je gagne 15 minutes au lit le matin, plus besoin de réveil qui gueule et les enfants sont réveillés en douceur et de bonne humeur (et moi aussi ) Le voici: Pour ajouter ou supprimer des lampes, je pense que le script parle de lui mème, il suffit de supprimer/modifier/ajouter les lignes Question copyright, je pense l'avoir fait complètement seul (il y a longtemps que je l'ai, et franchement je ne me souvient plus de sa genèse) --[[ %% properties 1277 value %% globals --]] -------------------------------------------------- -- Sweet Wakeup -- Gradually dim up lights, excluding already on lights or modified during the wakeup -- Sebastien Jauquet -- Mars 2015 -------------------------------------------------- local id = { LAMPE_CH_THOMAS = 41, LAMPE_DRESSING = 42, LAMPE_CH_PARENTS = 47, LAMPE_CH_EMILIEN = 58, REVEIL_1_SEB = 1277, PRISE_ROUTEUR_1ER = 22 } local cycle = 30 --duration (in minutes) of the complete cycle of wakeup local dim = 5 -- dimming starting value (5=5%) local startSource = fibaro:getSourceTrigger(); -- launch script if started trough device in the header or "manually"/trough an other script if (( tonumber(fibaro:getValue(id["REVEIL_1_SEB"], "value")) > 0 ) or startSource["type"] == "other") then -- Always execute actions on this/those device(s): fibaro:call(id["PRISE_ROUTEUR_1ER"], "turnOn"); -- If one light is not turned off, disable it from the wakeup loop if(tonumber(fibaro:getValue(id["LAMPE_CH_THOMAS"], "value")) ~= 0 ) then id["LAMPE_CH_THOMAS"] = 0; fibaro:debug("LAMPE_CH_THOMAS Desactivated"); end if(tonumber(fibaro:getValue(id["LAMPE_DRESSING"], "value")) ~= 0 ) then id["LAMPE_DRESSING"] = 0; fibaro:debug("LAMPE_DRESSING Desactivated"); end if(tonumber(fibaro:getValue(id["LAMPE_CH_PARENTS"], "value")) ~= 0 ) then id["LAMPE_CH_PARENTS"] = 0; fibaro:debug("LAMPE_CH_PARENTS Desactivated"); end if(tonumber(fibaro:getValue(id["LAMPE_CH_EMILIEN"], "value")) ~= 0 ) then id["LAMPE_CH_EMILIEN"] = 0; fibaro:debug("LAMPE_CH_EMILIEN Desactivated"); end -- Main wakeup loop while dim < 91 do -- set dim value to all dimmers (excluding disabled: Id["xxx"] not equal to 0) if (id["LAMPE_CH_THOMAS"] ~= 0) then fibaro:call(id["LAMPE_CH_THOMAS"], "setValue", dim) end if (id["LAMPE_DRESSING"] ~= 0) then fibaro:call(id["LAMPE_DRESSING"], "setValue", dim) end if (id["LAMPE_CH_PARENTS"] ~= 0) then fibaro:call(id["LAMPE_CH_PARENTS"], "setValue", dim) end if (id["LAMPE_CH_EMILIEN"] ~= 0) then fibaro:call(id["LAMPE_CH_EMILIEN"], "setValue", dim) end fibaro:debug("Set Dimmers Value at: " .. dim) fibaro:sleep(cycle*3000); -- Check if dimmer value modified, then disable it from the wakeup loop if ((id["LAMPE_CH_THOMAS"]) ~= 0) then if((tonumber(fibaro:getValue(id["LAMPE_CH_THOMAS"], "value")) - dim) ~= 0 ) then id["LAMPE_CH_THOMAS"] = 0; fibaro:debug("LAMPE_CH_THOMAS Desactivated"); end; end; if ((id["LAMPE_DRESSING"]) ~= 0) then if((tonumber(fibaro:getValue(id["LAMPE_DRESSING"], "value")) - dim) ~= 0 ) then id["LAMPE_DRESSING"] = 0; fibaro:debug("LAMPE_DRESSING Desactivated"); end; end; if ((id["LAMPE_CH_PARENTS"]) ~= 0) then if((tonumber(fibaro:getValue(id["LAMPE_CH_PARENTS"], "value")) - dim) ~= 0 ) then id["LAMPE_CH_PARENTS"] = 0; fibaro:debug("LAMPE_CH_PARENTS Desactivated"); end; end; if ((id["LAMPE_CH_EMILIEN"]) ~= 0) then if((tonumber(fibaro:getValue(id["LAMPE_CH_EMILIEN"], "value")) - dim) ~= 0 ) then id["LAMPE_CH_EMILIEN"] = 0; fibaro:debug("LAMPE_CH_EMILIEN Desactivated"); end; end; if id["LAMPE_CH_THOMAS"] == 0 and id["LAMPE_DRESSING"] == 0 and id["LAMPE_CH_PARENTS"] == 0 and id["LAMPE_CH_EMILIEN"] == 0 then fibaro:debug("All Dimmer Values Modified, stopping script"); fibaro:abort(); end dim = dim +5 end -- end of wakeup, set dimmers to max value fibaro:call(id["LAMPE_CH_THOMAS"], "setValue", 99); fibaro:call(id["LAMPE_DRESSING"], "setValue", 99); fibaro:call(id["LAMPE_CH_PARENTS"], "setValue", 99); fibaro:call(id["LAMPE_CH_EMILIEN"], "setValue", 99); end 5
chrispec Posté(e) le 9 mars 2015 Signaler Posté(e) le 9 mars 2015 Top! Mais comme j'ai mis des FGS221 et lampes hue dans les chambres... du coup ... faut adapter ton scripts ...
sebcbien Posté(e) le 9 mars 2015 Auteur Signaler Posté(e) le 9 mars 2015 Du coup c'est moins soft le réveil douceur :-)
chrispec Posté(e) le 9 mars 2015 Signaler Posté(e) le 9 mars 2015 Les FGS221 ... c'est pour madame (WAF) ... voulant être sûre que les lumières soient éteintes ... Les Hue sont àcouleur et intensité variables ... donc si soft ... Moins soft ... retravailler ton code ... mais il a le mérite de donner des idées et de faciliter l'architecture du code ...
sebcbien Posté(e) le 9 mars 2015 Auteur Signaler Posté(e) le 9 mars 2015 Ahhh le WAF, très important. Je fais toujours tout valider avant par la chef et je pense que ça transparaît dans mes codes Si tu veux marier le meilleur des mondes, pour être sur que tes lampes soient éteintes, il suffit de configurer les fgs avec une valeur minimum de 30% par exemple. Ainsi plus de doute.
D-GK Posté(e) le 9 mars 2015 Signaler Posté(e) le 9 mars 2015 Merci pour le partage. Désolé si ma question est bête mais je débute, j'ai bien compris le code (ça aide d'être informaticien) mais comment gères-tu l'heure du réveil ?
sebcbien Posté(e) le 9 mars 2015 Auteur Signaler Posté(e) le 9 mars 2015 Deux solutions: - J'ai un module universel monté dans mon réveil (id 1277) qui est mis dans l'entête et qui lance le script. - Et j'utilise aussi le module alarm de Steven, pour ça, voir le fil du support gea.
pepite Posté(e) le 9 mars 2015 Signaler Posté(e) le 9 mars 2015 Super, Bon j'ai pas d'ampules dimmables dans la chambre, mois soft le reveil hihih Sinon je l'utiliserais avec GEA Alarm, c'est plutot WAF, par contre des que le reveil des 2 n'est pas à la mee heure...heuuu je pense queje vais l'entendre le WAF mode hihih
sebcbien Posté(e) le 9 mars 2015 Auteur Signaler Posté(e) le 9 mars 2015 Pour ça moi j'ai mis un wallplug "lapin". Chez moi ils ont tendance àse réveiller à6h le week-end... Donc "tant que le rond làil n'est pas vert, tu ne vient pas réveiller papa ou Maman :-p et j'ai deux programmation pour les deux enfants 1
trainkill666 Posté(e) le 9 mars 2015 Signaler Posté(e) le 9 mars 2015 Voici une proposition de modification de ton programme : Je ne peux pas le tester car je n'ai pas de dimmer, il doit donc y avoir quelques coquilles. --[[ %% properties 1277 value %% globals --]] ---------------------------------------------------------------------------- --DECLARATION DES VARIABLES ET FONCTIONS local variateurs = { "LAMPE_CH_THOMAS", "LAMPE_DRESSING", "LAMPE_CH_PARENTS", "LAMPE_CH_EMILIEN", } local sauvariateurs = {} local idappareils = { LAMPE_CH_THOMAS = 41, LAMPE_DRESSING = 42, LAMPE_CH_PARENTS = 47, LAMPE_CH_EMILIEN = 58, REVEIL_1_SEB = 1277, PRISE_ROUTEUR_1ER = 22 } local cycle = 30 --duration (in minutes) of the complete cycle of wakeup local dim = 5 -- dimming starting value (5=5%) --getValue local recupvaleur = function (nom, valeur) return tonumber(fibaro:getValue(idappareils[nom], valeur)) end --action sur 1 appareil sans variateur local actionmodule = function (nom, etat) fibaro:call(idappareils[nom], etat) end --action sur tous les appareils avec variateur local actionmodules = function(liste, etat) for index,valeur in ipairs(liste) do fibaro:call(idappareils[valeur], "setValue", etat) end end --suppression du variateur actif local suppressionmodule = function(chiffrecompare) for index,valeur in ipairs(variateurs) do if recupvaleur(valeur, "value") - chiffrecompare ~= 0 then fibaro:debug(valeur .. " Desactivated") table.insert(sauvariateurs, valeur) table.remove(variateurs, index) end end end ---------------------------------------------------------------------------- -- launch script if started trough device in the header or "manually"/trough an other script if recupvaleur("REVEIL_1_SEB", "value") > 0 or startSource["type"] == "other") then -- Always execute actions on this/those device(s): actionmodule("PRISE_ROUTEUR_1ER", "turnOn") -- If one light is not turned off, disable it from the wakeup loop suppressionmodule(0) -- Main wakeup loop while dim < 91 do -- set dim value to all dimmers actionmodules(variateurs, dim) fibaro:debug("Set Dimmers Value at: " .. dim) fibaro:sleep(cycle*3000); -- Check if dimmer value modified, then disable it from the wakeup loop suppressionmodule(dim) if variateurs[1] == nil then fibaro:debug("All Dimmer Values Modified, stopping script") fibaro:abort() end dim = dim +5 end -- end of wakeup, set dimmers to max value actionmodules(sauvariateurs, 99) end Il suffit simplement de modifier les tables variateurs et idappareils pour ajouter et supprimer ou renommer des dimmers. Soyez indulgents, je suis débutant en Lua. 1
sebcbien Posté(e) le 9 mars 2015 Auteur Signaler Posté(e) le 9 mars 2015 Joli ! Je n'avais pas eu "le courage" de faire ça avec des array. Ceci dit je n'ai pas trop analysé le code, avec tapatalk ça ne le fait pas trop Et je ne pourrai pas tester tout de suite car je suis en voyage pour le moment et si je me plante àdistance ma femme me crucifiera àmon retour Je testerai ça ce week-end.
Did Posté(e) le 9 mars 2015 Signaler Posté(e) le 9 mars 2015 @sebcbien, Marrant tes rabbitplug,une initiation au code de la route. Mais les enfants peuvent quand même vous réveiller s'ils ne sont pas bien (malade) ou c'est aussi géré par la domotique?
sebcbien Posté(e) le 9 mars 2015 Auteur Signaler Posté(e) le 9 mars 2015 Ah bah non, ils doivent envoyer un fax au service de gardiennage. Sinon, on leur a dit que on les remettrais en vente sur eBay 1
Krikroff Posté(e) le 10 mars 2015 Signaler Posté(e) le 10 mars 2015 C' est une alternative à celui-la "Simulateur d'aube paramètrable" . Tu pourrais implémenter les courbes pour avoir une progression (transition) plus douce
sebcbien Posté(e) le 10 mars 2015 Auteur Signaler Posté(e) le 10 mars 2015 Ah oui je me souviens être tombé dessus à l'époque ! Ceci dit, je dois dire que je n'en ressent pas le besoin, je trouve que une réponse linéaire sur une longue durée (30 minutes) me convient bien. Je suis du genre à me réveiller avec la tête dans le c*l et les yeux très sensibles à la luminosité. Je me réveille en général quand la lampe atteint 30-40%, je sors de mon lit et j'apprécie cette "faible" luminosité. il reste encore 15-20 minutes pour arriver au max, et là je serai bien réveillé. Si je trouve du temps, je pourrais probablement ajouter ces courbes, si il y a de la demande. Il faut d'abord que je teste la proposition de trainkill666 (un peu morbide le pseudo )
trainkill666 Posté(e) le 10 mars 2015 Signaler Posté(e) le 10 mars 2015 @sebcbien : mon pseudo est "un reste" de mes longues parties en multiplayer sur PC , il y a presque 20 ans, sur Unreal Tournament™ , Medal of Honor™ ...
sebcbien Posté(e) le 10 mars 2015 Auteur Signaler Posté(e) le 10 mars 2015 Ah j'étais pas mauvais non plus. C'est le dernier jeu sur lequel j'ai perdu de trop nombreuses heures, ... depuis je suis vacciné
jpr105 Posté(e) le 17 mars 2015 Signaler Posté(e) le 17 mars 2015 Bonjour Sebcbien, Je viens de tomber sur ton post et j'ai été attiré par cette phrase ... - allumer mon routeur Wifi de l'étage (qui est coupé s'il n'y a pas de mouvement détecté pendant 30 minutes) Peux-tu m'en dire plus à ce propos ? Pour ma part je souhaiterais créer un module virtuel de type ON/OFF qui me permettrait d'activer ou non mon réseau wifi INVITÉ. à‡a ne sert à rien de le laisser tourner lorsqu'on n'a pas d'invités à la maison ... on prend assez d'ondes comme ça mon bon Monsieur Mon routeur est un ASUS RT-AC68U et je voudrais bien le piloter via requêtes HTTP mais je n'ai rien trouvé en ce sens. Des pistes ??? Merci d'avance et bonne journée. Jean-Paul
sebcbien Posté(e) le 18 mars 2015 Auteur Signaler Posté(e) le 18 mars 2015 En fait j'ai acheté un petit point d'accès wifi en POE. (TP-Link TL-WA801ND - 32€) Les injecteurs POE se trouvent dans mon patch panel réseau dans ma remise. J'ai des injecteurs POE pour mes caméras intérieures, accesspoint wifi etc. Les alimentations de ces injecteurs sont sur une multiprise greenwave Si je veux allumer mon point d'accès wifi de l'étage, il me suffit de commander la prise 3 de la greenwave. Et ça marche très bien et discrétos
tim974 Posté(e) le 2 août 2016 Signaler Posté(e) le 2 août 2016 En modifiant le code en mettant : dim = dim -5 On peut crée un simulateur de "coucher de soleil"? Pour dormir avec la lumières qui s'éteint progressivement. ps: dommage qu'on ne trouve plus la multiprise greenwave, j'en aurais pris quelques une...
sebcbien Posté(e) le 4 août 2016 Auteur Signaler Posté(e) le 4 août 2016 salut @tim974, alors, tu as essayé ? ça marche ?
Fred.domotique Posté(e) le 14 juin 2022 Signaler Posté(e) le 14 juin 2022 Salut Sebcbien, Je déterre ce vieux post.. Est ce que quelqu'un à déjà fait une adaptation d'un simulateur d'aube sur HC3 ?
Messages recommandés