p78ch201 Posté(e) le 2 avril 2014 Signaler Posté(e) le 2 avril 2014 Pour fêter ma nomination pour Mr Avril en fanfare, voici mon petit module qui gère mes prises automatiquement pour couper la veille des appareils. Etape 1 Créer une variable globale "SysPrise_auto" avec les vlaeurs "ON" et "OFF" Créer une variable globale "Jour_semaine" avec 7 valeurs "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi" et "Dimanche" Etape 2 Créer un module avec - 1 label - 2 boutons Etape 3 - Label Label : "Prise auto : " ID : "Label1" Etape 4 - Bouton 1 Label "Auto" code lua : fibaro:setGlobal("SysPrise_auto", "ON"); fibaro:call(103, "setProperty", "ui.Label1.value", "Auto"); icone : 103 est l'ID du module virtuel Etape 5 - Bouton 2 Label "Manuel" code lua : fibaro:setGlobal("SysPrise_auto", "OFF"); fibaro:call(103, "setProperty", "ui.Label1.value", "Manuel"); icone : 103 est l'ID du module virtuel Etape 6 - Main Loop --[[ %% properties %% globals --]] local ID_wallplug = {35,40,55}; --ID wallplug local conso = 50; -- consommation en dessous de laquelle on coupe les prises local sysprise_auto = fibaro:getGlobal("SysPrise_auto"); local jour = fibaro:getGlobal("Jour_semaine"); ------------------------------------------------------------------------------------------------------------- -- Définition des horaires Auto des Prises ------------------------------------------------------------------------------------------------------------- local time_off_1 = "08:30"; -- Si on décide de couper les prises en journée, ici est l'heure de coupure local time_on_1 = "16:30"; -- Si on décide de couper les prises en journée, ici est l'heure de rallumage local time_off_2; -- heure ou on éteint les prises la nuit local time_on_2 = "06:30"; -- l'heure de rallumage de la coupure de nuit if jour == "Samedi" or jour == "Dimanche" then time_off_2 = "02:00"; -- Le samedi et le Dimanche, les prises sont coupées à 2h du matin else time_off_2 = "00:01"; -- Les jours de semaine, les prises sont coupées à minuit. end ------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------- -- Dans la partie suivante se trouve le code qui fait varié la variable "Jour_semaine" ------------------------------------------------------------------------------------------------------------- local minute = 60000 --in milliseconds local currentDate = os.date("*t"); local currentTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min); if (currentDate.wday == 1 ) then fibaro:setGlobal("Jour_semaine", "Dimanche") end if (currentDate.wday == 2 ) then fibaro:setGlobal("Jour_semaine", "Lundi") end if (currentDate.wday == 3 ) then fibaro:setGlobal("Jour_semaine", "Mardi") end if (currentDate.wday == 4 ) then fibaro:setGlobal("Jour_semaine", "Mercredi") end if (currentDate.wday == 5 ) then fibaro:setGlobal("Jour_semaine", "Jeudi") end if (currentDate.wday == 6 ) then fibaro:setGlobal("Jour_semaine", "Vendredi") end if (currentDate.wday == 7 ) then fibaro:setGlobal("Jour_semaine", "Samedi") end local id_w; if sysprise_auto == "ON" then ------------------------------------------------------------------------------------------------------------- -- Nuit ------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------- -- Coupure Nuit ------------------------------------------------------------------------------------------------------------- if time_off_2 <= currentTime and currentTime < time_on_2 then fibaro:debug("Coupure nuit") for i=1, #ID_wallplug do id_w = tonumber(ID_wallplug[i]); --fibaro:debug(id_w.."valeur : "..tonumber(fibaro:getValue(id_w, "valueSensor"))) if tonumber(fibaro:getValue(id_w, "value")) then fibaro:debug(id_w.." allumé") if tonumber(fibaro:getValue(id_w, "valueSensor")) < conso then fibaro:debug("veille => turnOff "..id_w) fibaro:call(id_w, 'turnOff'); end end end end ------------------------------------------------------------------------------------------------------------- -- Rallumage Nuit ------------------------------------------------------------------------------------------------------------- local id_w; if time_on_2 == currentTime then fibaro:debug("Rallumage nuit") for i=1, #ID_wallplug do id_w = tonumber(ID_wallplug[i]); --fibaro:debug(id_w.."valeur : "..tonumber(fibaro:getValue(id_w, "valueSensor"))) if tonumber(fibaro:getValue(id_w, "value")) == 1 then fibaro:debug("r_nuit prise allumé =1 "..tonumber(fibaro:getValue(id_w, "value"))); fibaro:debug(id_w.." déjà allumé") else fibaro:debug("r_nuit prise allumé =0 "..tonumber(fibaro:getValue(id_w, "value"))); fibaro:debug(id_w.." turnOn") fibaro:call(id_w, 'turnOn'); end end end ------------------------------------------------------------------------------------------------------------- -- Jour - définir ici les jours ou vous souhaitez couper les prises en journée ------------------------------------------------------------------------------------------------------------- if jour == "Samedi" or jour == "Dimanche" or jour == "Lundi" or jour == "Jeudi" then fibaro:debug("Prise OFF soir seulement"); elseif jour == "Mardi" or jour == "Mercredi" or jour == "Vendredi" then fibaro:debug("Prise OFF journée et soir"); ------------------------------------------------------------------------------------------------------------- -- Coupure Jour ------------------------------------------------------------------------------------------------------------- if time_off_1 <= currentTime and currentTime < time_on_1 then fibaro:debug("Coupure jour") for i=1, #ID_wallplug do id_w = tonumber(ID_wallplug[i]); --fibaro:debug(id_w.."valeur : "..tonumber(fibaro:getValue(id_w, "valueSensor"))) if tonumber(fibaro:getValue(id_w, "value")) == 1 then fibaro:debug(id_w.." allumé") if tonumber(fibaro:getValue(id_w, "valueSensor")) < conso then fibaro:debug("veille => turnOff "..id_w) fibaro:call(id_w, 'turnOff'); end end end end ------------------------------------------------------------------------------------------------------------- -- Rallumage Jour ------------------------------------------------------------------------------------------------------------- if time_on_1 == currentTime then fibaro:debug("Rallumage jour") for i=1, #ID_wallplug do id_w = tonumber(ID_wallplug[i]); if tonumber(fibaro:getValue(id_w, "value")) == 1 then fibaro:debug("r_jour prise allumé =1 "..tonumber(fibaro:getValue(id_w, "value"))); fibaro:debug(id_w.." déjà allumé") else fibaro:debug("r_jour prise allumé =0 "..tonumber(fibaro:getValue(id_w, "value"))); fibaro:debug(id_w.." turnOn") fibaro:call(id_w, 'turnOn'); end end end ------------------------------------------------------------------------------------------------------------- end ------------------------------------------------------------------------------------------------------------- end et voila ! ce module coupe les prises en veille : - la nuit à partir de 00:01 et les rallume à 6h30 - le jour (sauf le weekend et les jour ou ma femme est à la maison) entre 8h30 et 16h30. Les lignes à modifier pour chacun sont : ligne 7 : id du smartphone (ça ne sert à rien, il n'ya plus de modifications push dans le module, c'etait juste pour les phases de tests) ligne 8 : id de vos wallplug a renseigner ici ligne 15 à 25 : mettre vos horaires souhaités ligne 102 & 104 : définissez les jours ou vous coupez les prises le jour. pour alleger le code, vous pouvez aussi supprimer toutes les lignes fibaro:debug(xxx) qui me servait a vérifier mon code, maintenant qu'il est plutot fonctionnel, elle ne serve plus a grand chose, si ce n'est vérifié ce que fait le code. 2
Lazer Posté(e) le 2 avril 2014 Signaler Posté(e) le 2 avril 2014 Sympa Ce qui serait top, c'est que dans la main loop tu surveilles la consommation de la prise, et dès que celle-ci passe sous un certain seuil (par exemple 5W), alors on considère que l'appareil est en veille et on peut couper complètement le courant. Un mode super économique quoi.
p78ch201 Posté(e) le 2 avril 2014 Auteur Signaler Posté(e) le 2 avril 2014 c'est déja un peu le cas : - pendant les plages horaires d'extinction, la loop vérifie la consommation de la prise et si la conso passe en dessous d'un seuil (chez moi 50W - ligne 52 et 97) il l’éteint. J'ai fait cette loop pour éviter que la télé s'éteigne si je n'ai pas fini mon film avant le début de la plage horaire. - ensuite j'ai réfléchie à une autre mode ou effectivement il coupait la prise des que ça passait sous une valeur => problème, si je veux rallumer ma télé, faut que j'aille rallumer ma prise et faire en sorte que la conso dépasse la valeur de 50W avant que la loop n’éteigne ma prise... et généralement la loop est plus rapide que moi donc je me contente de les eteindre quand je suis pas la et les appareils sont en veille quand je suis la. si tu as une autre idée, je suis preneur ! (sur uniquement télé x2 + home cinema + ps3 x2, je gagné env. 60€ par an, c'est deja ça de pris... ca rembourse les 3 wallplug en 3 ans )
Lazer Posté(e) le 2 avril 2014 Signaler Posté(e) le 2 avril 2014 Ah oui c'est très bien comme ça J'ai regardé le code trop vite en fait... j'avais pas vu la vérification de la consommation. Tu devrais mettre une variable en début de script à personnaliser par l'utilisateur pour qu'on puisse l'adapter à la consommation de nos équipements.
p78ch201 Posté(e) le 2 avril 2014 Auteur Signaler Posté(e) le 2 avril 2014 bonne idée => c'est fait (par contre, je peux pas tester si j'ai écrit une boulette, je crois pas, mais je suis jamais trop sur !) faudrait également que je fasse une variable au début du script pour définir les jours ou on veut pas que ça coupe en journée (ligne 84 / 86)
jimbo007be Posté(e) le 2 avril 2014 Signaler Posté(e) le 2 avril 2014 perso j'utilise le scheduler LUA pour allumer àl'heure du coucher du soleil - 30 minutes et éteindre à22h30 (oui je sais on va dormir avec les poules ! LOL)
p78ch201 Posté(e) le 2 avril 2014 Auteur Signaler Posté(e) le 2 avril 2014 mais du coup, si tu es en train de mater la télé à 22h30, ça coupe la prise ? J'ai bien essayé le scheduler (très rapidement, certes...) et j'ai pas tout compris. Je suis sur qu'on peut faire plein de chose avec, mais j'aime bien comprendre le code pour savoir ce qu'il s'y passe vraiment.
jimbo007be Posté(e) le 2 avril 2014 Signaler Posté(e) le 2 avril 2014 @p78ch201 : en fait non, j'ai pris un "raccourci" pour l'explication ... la coupure à22h30 c'est en mode "vacances" ... en mode "normal", je coupe le wallplug lorsque je tape mon code pour armer l'alarme de nuit (SATEL)
p78ch201 Posté(e) le 2 avril 2014 Auteur Signaler Posté(e) le 2 avril 2014 ça me fait penser qu'il faudrait que j'integre ce module au simulateur de présence. @jimbo : question subsidiaire : si tu es en "vacances", pourquoi ne pas laisser la prise éteinte (ça doit dépendre de ce qui est branché dessus j'imagine )
jimbo007be Posté(e) le 2 avril 2014 Signaler Posté(e) le 2 avril 2014 @p78ch201 : exact celui-là c'est juste pour la petite lampe à coté de la télé (la seule qu'on allume le soir en semaine) ... -> simulation de présence pendant les vacances en meme temps
jimbo007be Posté(e) le 2 avril 2014 Signaler Posté(e) le 2 avril 2014 yes .... j'avoue que je suis assez fan de ce scheduler ... commande des volets aussi en fonction du lever/coucher du soleil ...
DG83VER Posté(e) le 12 avril 2014 Signaler Posté(e) le 12 avril 2014 Bonjour, Super idée pour le module, du coup je l'ai mis en place... Tout fonctionne (du moins presque). J'ai bien crée la variable Jour_Semaine avec les jours de la semaine comme valeur... MAIS... Je me retrouve avec la même valeur chaque jour de la semaine... (Script mis en place vendredi soir... donc valeur à "Vendredi" mais samedi la valeur était "Vendredi"... Et aujourd'hui pareil... Ayant commencé la domotique il y a très peux de temps je ne suis pas encore bien à l'aise avec le LUA... Quelqu'un pourrait il me donner une piste pour faire en sorte que ma variable corresponde au jour J ?Merci d'avance
p78ch201 Posté(e) le 13 avril 2014 Auteur Signaler Posté(e) le 13 avril 2014 il faut que tu mettes ce code dans la main loop pour faire varier la variable Jour_semaine (en fait copie les lignes 17 à37 suivante àla ligne 38 du code du premier post) local minute = 60000 --in milliseconds local currentDate = os.date("*t"); local currentTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min); --wday=1 is Sunday --wday=2 is Monday --wday=3 is Tuesday --wday=4 is Wednesday --wday=5 is Thursday --wday=6 is Friday --wday=7 is Saturday local jour = fibaro:getGlobal("Jour_semaine"); if (currentDate.wday == 1 ) then fibaro:setGlobal("Jour_semaine", "Dimanche") end if (currentDate.wday == 2 ) then fibaro:setGlobal("Jour_semaine", "Lundi") end if (currentDate.wday == 3 ) then fibaro:setGlobal("Jour_semaine", "Mardi") end if (currentDate.wday == 4 ) then fibaro:setGlobal("Jour_semaine", "Mercredi") end if (currentDate.wday == 5 ) then fibaro:setGlobal("Jour_semaine", "Jeudi") end if (currentDate.wday == 6 ) then fibaro:setGlobal("Jour_semaine", "Vendredi") end if (currentDate.wday == 7 ) then fibaro:setGlobal("Jour_semaine", "Samedi") end
DG83VER Posté(e) le 13 avril 2014 Signaler Posté(e) le 13 avril 2014 Super ! Un grand merci tout fonctionne !
Steven Posté(e) le 15 avril 2014 Signaler Posté(e) le 15 avril 2014 Il y a un petit truc qui pourrais améliorer cela. Imaginons une boucle qui vérifie tous les wallplugs tout les 10 secondes uniquement dans les plages horaires ou tu souhaites éteindre. Dès qu'un wallplug descend en dessous de tes 50W tu incrémentes un compteur (ex. WallPlug1=WallPlug1 + 1), dès qu'il passe en dessus, tu remet à zéro (WallPlug1=0). Ensuite si ta variable WallPlug1 >= 6 tu vas l'éteindre. Cela permet de t'assurer que ton Wallplug est en dessous du seuil depuis plus de 1 minutes (6X10 secondes) . Ce qu'est une idée parmi tant d'autre
p78ch201 Posté(e) le 15 avril 2014 Auteur Signaler Posté(e) le 15 avril 2014 c'est une idée en effet, a voir pour mettre en oeuvre. les plages horaire définie sont celle ou je suis absent ou au lit, donc j'éteins les wallplug des télés. et je les rallume avant de me lever ou rentrer, ce qui evite d'avoir a rallumer la wallplug manuellement. ensuite on pourrai imaginer qu'en cas de détection de mouvement, alors on rallume les wallplug. c'est la prochaine evolution de ce module que je voulais mettre en place. je viens d'installer les motion sensor, mais je suis encore en phase de test pour l'instant (je crois qu'il ne réagisse pas très bien, donc je dois régler tout ça et ensuite reflechir a quelle action va rallumer les wallplug et quelle action va les eteindre). je vais avoir un peu de temps libre la semaine prochaine et ce week end, j'ai bien l'intention de me pencher la dessus (après avoir installer des spots encastrés à l'exterieur...) PS : je viens de me relire, c'est plein de fautes, j'ai écrit trop vite, désolé !
Steven Posté(e) le 15 avril 2014 Signaler Posté(e) le 15 avril 2014 M'enfiche, mon cerveau ne lit pas les fautes ... par contre, il les écrit aussi
Domodial Posté(e) le 15 avril 2014 Signaler Posté(e) le 15 avril 2014 les plages horaire définie sont celle ou je suis absent ou au lit, donc j'éteins les wallplug des télés. et je les rallume avant de me lever ou rentrer, ce qui evite d'avoir a rallumer la wallplug manuellement. Et bien c'est absolument mon cas. Au début ça m'amusait, mais aujourd'hui plus du tout ^^ Franchement, pour regarder la TV c'est comme s'il fallait que je branche ma prise murale a chaque fois Donc, je vais installer ton script ! Merci
Steven Posté(e) le 15 avril 2014 Signaler Posté(e) le 15 avril 2014 J'ai 3 systèmes différents pour allumer le wall plug de la télé : Mon Karotz (les enfants en raffolent) Il passe une clé rfid devant son nez J'ai installé un interrupteur Chacon sur le meuble adossé au canapé donc dès qu'on s'assoit on peut allumer J'ai une femme qui est systématiquement devant la télé avant moi. Le point 3 est donc le plus fiable mais le plus coûteux.
Domodial Posté(e) le 15 avril 2014 Signaler Posté(e) le 15 avril 2014 Par contre, est-ce que tu pourrais faire une mise à jour de ton script ? Dans le premier post il n'y a pas tout le script (concernant les jours de la semaine). 103 est l'ID du module Et modifier l'explication du ID 103 du wallplug, car du coup tu as modifié le script pour pouvoir mettre plusieurs wallplug Merci
p78ch201 Posté(e) le 15 avril 2014 Auteur Signaler Posté(e) le 15 avril 2014 103 est l'id du module virtuel. Je vais essayer de mettre àjour le code afin que ce plugin soit autonome. Jour_semaine est dans un autre module chez moi car j utilise cette variable dans plusieurs modules virtuels
p78ch201 Posté(e) le 15 avril 2014 Auteur Signaler Posté(e) le 15 avril 2014 voila, c'est mis àjour dans le premier post mais je viens de modifier sur le pc, je n'ai pas modifié mon module car comme dit précédemment, Jour_semaine est modifié ailleurs chez moi. si tu as un soucis, fais le moi savoir
p78ch201 Posté(e) le 15 avril 2014 Auteur Signaler Posté(e) le 15 avril 2014 Super ! Un grand merci tout fonctionne ! Donc, je vais installer ton script ! Merci vous pouvez reprendre le script du premier post qui a une modification non négligeable (ben oui, c'est un de mes premiers modules ) dans le précédent script, que vous cliquiez sur ON ou OFF, le module coupait les prises de toute façon !! en plus de cette modif, j'ai changé le nom des boutons pour que ce soit plus clair : ON est devenu Auto OFF est devenu Manuel voila !
Messages recommandés