mprinfo Posté(e) le 12 mai 2015 Signaler Posté(e) le 12 mai 2015 Présentation : Cette Scène va permettre d'actionner vos volets :au lever et coucher du soleil avec un décalage en minutes possible Les jours fériés A heure fixe Prérequis : Il va falloir installer les scènes et Virtual device suivant :VD Jour Chômé ICI Scene Lua - Jour / Nuit Avec Décalge Possible Et Optimisation Du Sleep ICI Scene Lua - Trigger Horaire Sans Boucle While ... Do ICI Configuration : Saisir le nom de ces volets et leurs ID local mesvolets ={ ["Bureau"] = 5, ["Ch_Amis"] = 7, ["Chaufferie"] = 9, ["Ch_Parents"] = 17, ["Ch_Enfants"] = 19, ["Cuisine"] = 23, ["SAM"] = 25, ["SdB"] = 27, ["Salon"] = 29, } Créer des groupes de volets (Ce n'est pas obligatoire) local RDC = {"Bureau", "Ch_Amis", "Chaufferie"} local Rue = {"Bureau", "Cuisine", "SAM"} local Jardin = {"Chaufferie", "Ch_Amis", "SdB"} local Chambre = {"Ch_Parents", "Ch_Enfants"} Saisir le Nom des différents Variables globales --[[ %% globals SoleilLever SoleilCoucher Heure --]] local nomLever = "SoleilLever" --> Nom de la Variable Globale lever soleil local nomCoucher = "SoleilCoucher" --> Nom de la Variable Globale coucher soleil local Heure = "Heure" --> Nom de la variable globale Heure local JourChome = fibaro:getGlobalValue("JourChome") --> Nom de la variable Module Virtuel Hansloo local IdTel = fibaro:getGlobalValue("IdTel") -- Recuperation de id du tel pour le push Saisir le temps de pause entre chaque volets (Seulement si on utilise des groupes de volets) -------------------------------------------------------------------------- local Pause = 0 -- Temp de pause entre chaque commande de modules en seconde Copier la scène suivante version 1.00b --[[ %% globals SoleilLever SoleilCoucher Heure --]] local mesvolets ={ ["Bureau"] = 5, ["Ch_Amis"] = 7, ["Chaufferie"] = 9, ["Ch_Enfants"] = 17, ["Ch_Parents"] = 19, ["Cuisine"] = 23, ["SAM"] = 25, ["SdB"] = 27, ["Salon"] = 29, } -- Table Zone (Groupes de modules) local RDC = {"Bureau", "Ch_Amis", "Chaufferie"} local Rue = {"Bureau", "Cuisine", "SAM"} local Jardin = {"Chaufferie", "Ch_Amis", "SdB"} local Chambre = {"Ch_Parents", "Ch_Enfants"} -------------------------------------------------------------------------- local nomLever = "SoleilLever" --> Nom de la Variable Globale lever soleil local nomCoucher = "SoleilCoucher" --> Nom de la Variable Globale coucher soleil local Heure = "Heure" --> Nom de la variable globale Heure local JourChome = fibaro:getGlobalValue("JourChome") --> Nom de la variable Module Virtuel Hansloo local IdTel = fibaro:getGlobalValue("IdTel") -- Recuperation de id du tel pour le push -------------------------------------------------------------------------- local Pause = 0 -- Temp de pause entre chaque commande de modules en seconde ---------------------------------------------------------------------- -- Envoi d'un Push pour avertir que le box à démarrer ou redémarrer -- ---------------------------------------------------------------------- function EnvoiPush(Message) fibaro:debug("Envoi Push : "..Message) fibaro:call(IdTel, "sendPush", Message) end ----------------------------------------------------------------------- -- Test si la valeur a enoyer est différente de la valeur du module ----------------------------------------------------------------------- function testvaleur(id, valeurs) local GetValeur = tonumber(fibaro:getValue(id, "value")) if valeurs ~= GetValeur then fibaro:call(id, "setValue", valeurs) --fibaro:debug(id.." - action en cours... - Valeur "..valeurs) fibaro:sleep(Pause*1000) end end ---------------------------------------------------------------------------- -- Recupération de l'id par rapport au nom de la tables mesvolets ---------------------------------------------------------------------------- function volets(zone, valeurs) if (type(zone) == "table") then local messages = "Les "..#zone.." Volets : " for i,v in ipairs(zone) do messages = (messages..v..", ") local id = mesvolets[v] if id == nil then fibaro:debug("ERREUR NOM DU VOLET - "..v.." - dans une table") EnvoiPush("ERREUR NOM DU VOLET - "..v.." - dans une table") else testvaleur(id, valeurs) end end messages = (messages.."ont été actionnés à "..valeurs.."%") EnvoiPush(messages) elseif (type(zone) == "string") then local id = mesvolets[zone] if id == nil then fibaro:debug("ERREUR DANS LE NOM DU VOLET : "..zone) EnvoiPush("EERREUR DANS LE NOM DU VOLET : "..zone) else testvaleur(id, valeurs) EnvoiPush("Le volet : "..zone.." a été actionné à "..valeurs.."%") end else fibaro:debug("Erreur......") EnvoiPush("Erreur......") end end -------------------------------------------------------------------- -- test si le déclencheur est lever ou coucher du soleil -------------------------------------------------------------------- function Test(zone, valeurs, minutes) if zone ~= nil then if minutes == nil then; minutes = 0 end volets(zone, valeurs) else fibaro:debug("Erreur dans la table ou table inéxitante") EnvoiPush("Erreur dans la table ou table inéxitante") end end -------------------------------------------------------------------- -- test Lever -------------------------------------------------------------------- function lever(zone, valeurs, minutes, Jchome) if nomTrigger == nomLever and valeurTrigger == minutes then if Jchome == JourChome or Jchome == nil then Test(zone, valeurs, minutes) end end end -------------------------------------------------------------------- -- test Coucher -------------------------------------------------------------------- function coucher(zone, valeurs, minutes, Jchome) if nomTrigger == nomCoucher and valeurTrigger == minutes then if Jchome == JourChome or Jchome == nil then Test(zone, valeurs, minutes) end end end -------------------------------------------------------------------- -- test Heure -------------------------------------------------------------------- function heure(zone, valeurs, minutes, Jchome) if nomTrigger == Heure and valeurTrigger == minutes then if Jchome == JourChome or Jchome == nil then Test(zone, valeurs, minutes) end end end -------------------------------------------------------------------------- -- Demarrage du programme -------------------------------------------------------------------------- local trigger = fibaro:getSourceTrigger() if (trigger['type'] == 'global') then nomTrigger = trigger['name'] valeurTrigger = tonumber(fibaro:getGlobalValue(nomTrigger)) print("Nom du déclencheur = ", nomTrigger, " - Minutes : ", valeurTrigger) else fibaro:debug("La scéne ne peut être lancer que par une Variable Globale") fibaro:abort(); --nomTrigger = "Heure" --valeurTrigger = 6 end ------------------------------------------------------------------------- -- Ne rien modifier au dessus de cette ligne ------------------------------------------------------------------------- -- Commandes a écrit pour lever du soleil -- lever (Funtion qui traite le lever du soleil -- coucher(zone, valeur, minutes) -- exemple pour actionné les volets de la table Rue a 80% 10 minutes avant le lever -- lever(Rue, 80, -10) -- exemple pour actionné le volet "Bureau" au lever du jour -- lever("Bureau", 99, 0) -- Pour actionner un volet au coucher du soleil -- Il faut remplacer lever par coucher -- ex : coucher(Rue, 0, 20) ------------------------------------------------------------------------ -- Vous pouvez entrer vos commande en dessous de cette ligne Utilisation : lever ou coucher("Nom du volet" ou Nom du groupes de volets, valeur a envoyer, le décalage par rapport au lever ou coucher) Exemples : lever("Ch_Enfants", 99, -15) -- ouvre le volets 15 minutes avant le lever du soleil lever("Salon", 99) ou lever("Salon", 99, 0) -- ouvre le volets au lever du soleil (le 0 n'est pas obligatoire) coucher(Rue, 0, 0, "NON") -- Ferme les volets du groupe Rue au coucher du soleil si Jour Non férié coucher(Jardin, 0, 30) -- Ferme les volets du groupe jardin 30 mn après le coucher du soleil (Attention le 3° paramètre qui représente les minutes doit se trouver dans la table de la scène jour nuit, dans ces 2 tables vous pouvez mettre autant de valeurs que vous voulez chaque valeur représentera un déclencheur) -- Minutes de décalages par rapport au lever du soleil local TLever = {-30, -15, 10, 20, 30, 45, 60} -- Minutes de décalages par rapport au Coucher du soleil local TCoucher = {-30, -15, 10, 20, 30, 45} Pour l'utilisation de l'heure je n'ai prévu qu'un déclenchement avec la variable globale heure, on ne pourra donc exécuter une commande qu'a heure fixe (1h, 2h, 3h, 4h, 5h etc....) Exemples : heure("Ch_Parents", 99, 6, "NON") -- Ouverture du volets Ch_Parents a 6h00 si jour non férié heure(Nord, 0, 20) -- Fermeture du groupes de volets Nord à 20h00 4
Nico Posté(e) le 12 mai 2015 Signaler Posté(e) le 12 mai 2015 Cool cool mprinfo, mais bon, ne vaut il pas mieux faire une grosse partie dans GEA, car làcela multiplies les modules
mprinfo Posté(e) le 12 mai 2015 Auteur Signaler Posté(e) le 12 mai 2015 Je préfère plusieurs scripts qui tournent de temp en temp qu'un scripts énorme qui tourne en permanence de plus je n'utilise pas GEA lol
BenjyNet Posté(e) le 12 mai 2015 Signaler Posté(e) le 12 mai 2015 Huhu comme moi, j'utilise pas GEA 1
cybersquat Posté(e) le 12 mai 2015 Signaler Posté(e) le 12 mai 2015 @mprinfo, GG comme d'hab, superbe taf de pro ! J'ai pas de volets roulant, mais un travail énorme pour les autres ^^ Merci
turlututu74 Posté(e) le 13 mai 2015 Signaler Posté(e) le 13 mai 2015 Cool good job! Bientôt, un jour j'aurai des volets ouvrant !
chrispec Posté(e) le 18 octobre 2015 Signaler Posté(e) le 18 octobre 2015 Bonjour à tous, Les codes de mprinfo marchent. Je me pose la question de la valeur 'orientation des lamelles' cf le post: http://www.domotique-fibaro.fr/index.php/topic/3398-ouvrir-seulement-les-lamelles-de-mes-volets-v%C3%A9nitiens/?hl=lamelles Comment peut-on rajouter le paramètre "orientation des lamelles" à la fonction Lever() et Coucher() ? Comme dit razowski: Pour garder le store en bas mais juste ouvrir les lamelles : (ouverture le matin) fibaro:call(ID_de_ton_module, "setValue", "2"); ...2% d'ouverture du volet fibaro:call(ID_de_ton_module, "setValue2", "99"); ...ouverture à 100% des lamelles (position horizontale...) Pour garder le store en bas mais juste fermer les lamelles: (le soir fibaro:call(ID_de_ton_module, "setValue", "99"); fibaro:call(ID_de_ton_module, "setValue2", "99"); Merci de vos pistes et aides...
kinou.69 Posté(e) le 20 décembre 2015 Signaler Posté(e) le 20 décembre 2015 Bonjour, je souhaiterais faire une télécommande virtuelle pour la gestion des volets roulants. celle-ci serait composée en autre de deux boutons Auto et Manu pour l'ouverture a automatique ou non des volets. J'aimerais également intégrer une commande pour exclure des volets roulants de la gestion automatique. Dans le même principe du module virtuel de l'alarme avancée avec l'exclusion des ouvrants. Le problème c'est que je n'arrive pas a faire les boutons auto et manu, alors ... Merci de votre aide et bonnes fêtes de fin d'année a tous.
mprinfo Posté(e) le 27 mars 2020 Auteur Signaler Posté(e) le 27 mars 2020 Petit upEnvoyé de mon BLA-L29 en utilisant Tapatalk
Messages recommandés