Aller au contenu

Code Lua Pour Activer Scene En Fonction De Paramètres Edf Tempo?


elacombe

Messages recommandés

Bonjour à  tous,


 


Je souhaiterais mettre en place une scène LUA qui puisse m'activer ou désactiver des instances GEA en fonction de la valeur du paramètre Tempo de mon compteur EDF.


Quand on est en Tempo Rouge (électricité chère, très chère...), je dois activer une instance de scène GEA qui exécute un certain nombre d'actions et désactiver une autre instance GEA.


A l'inverse, quand on est en Tempo Blanc ou Bleu, (électricité pas chère), je dois activer et désactiver l'inverse de mes 2 instances GEA.


 


Pour récupérer l'info de la valeur EDF Tempo, j'ai un capteur universel Fibaro FGBS qui est relié au circuit de mes Pompes à  Chaleur et qui récupère un état au travers un relai (ID du capteur = 262) :


- Quand le relai est ouvert (Repos), on est en Tempo blanc ou bleu => le FGBS est désarmé (valeur 0)


- Quand le relai est fermé (Travail), on est en Tempo Rouge => le FGBS est armé (valeur 1)


 


J'ai crée 2 instances GEA :


- "GEA Normal" quand on est en Tempo blanc ou bleu (ID de la scène = 190)


- "GEA Tempo Rouge" quand on est en Tempo Rouge (ID de la scène = 73)


 


Je souhaiterais créer une scène en LUA (nommée Gestion Tempo) qui fasse les choses suivantes :


 


- Activer "GEA Normal" (190) quand on est pas en Tempo blanc ou bleu, et désactiver "GEA Tempo Rouge"


- Activer "GEA Tempo Rouge" (73) quand on est en Tempo Rouge,  et désactiver "GEA Normal"


 


Ceci afin de m'éviter de cocher ou décocher à  la main la case "Scene Active" des ces 2 instances GEA.


 


Comme base de travail, je pensais me resservir de la scene d'armement automatique d'alarme que m'avais faite MoicPhill :



--[[
%% properties
35 value
%% globals
--]]

-- activation auto de l'alarme --
---------------------------------
local capteur = 35

local etat = tonumber(fibaro:getValue(capteur, "value"))
fibaro:debug(etat)

if etat == tonumber(0)
then
fibaro:call(45, "pressButton", "3")-- appui sur le bouton 3 du module alarme
end

if etat == tonumber(1)
then
fibaro:call(45, "pressButton", "1")-- appui sur le bouton 1 du module alarme
end 

En mettant en local la valeur de mon capteur d'ouverture (Tempo), cela me permettrait de déclencher les actions...

En revanche je ne sais pas quoi écrire en LUA pour remplacer les actions PressButton par les actions pour activer/Désactiver mes scènes GEA...

 

Quelqu'un pourrait-il m'aider à  écrire cette scène?

 

Merci.

 

@+

 

François

Lien vers le commentaire
Partager sur d’autres sites

je n'ai pas tout lu, mais de ce que j'ai lu au début, je me demande pourquoi tu ne fais pas tout dans une instance GEA.

Et là, pour chaque action, tu rajoutes la condition sur la valeur d'une variable, qui peux soit être mise àjour par une scène indépendante, soit par GEA

keep it simple

Lien vers le commentaire
Partager sur d’autres sites

Ben ouais, mais je sais pas faire ça...

 

Voilà  ce que j'ai dans GEA Normal : 

--[[
%% autostart
%% properties

18 value
173 value
197 value
260 value
30 value
180 value

%% globals
--]]


-- v 5.40
-- Optimisation possible, cf : GEA.optimize = GEA.typeOptimize["IMEDIATE_ONLY"]
-- ==================================================
-- GEA : Gestionnaire d'Evénements Automatique
-- ==================================================
-- [FR] Scénario permettant de contrôler si une périphérique est 
-- activé depuis trop longtemps ou lancer un push d'avertissement
-- Ce scénario permet une annotation plus simple que le code LUA
-- il nécessite néanmoins quelques connaissances
--
-- [EN] This scene allow you to check every X second the status
-- of a module and send actions if the module is activated since too long.
-- This scene allow you a more simple annotation than LUA
-- it requires some knowledge
--
-- Auteur : Steven P. with modification of Hansolo and Shyrka973
-- Version : 5.40
-- Special Thanks to :
-- jompa68, Fredric, Diuck, Domodial, moicphil, lolomail, byackee,
-- JossAlf, Did,  sebcbien, chris6783 and all other guy from Domotique-fibaro.fr
-- ------------------------------------------------------------
-- Historique / History
-- ------------------------------------------------------------
-- L'historique complet est diponible ici :
-- http://www.domotique-fibaro.fr/index.php/topic/1082-gea-gestionnaire-dévénements-automatique/?p=12428

function yourcode()
  -- ==================================================
  -- [FR] A VOUS DE JOUER
  -- [EN] YOUR TIME TO PLAY
  -- ==================================================
  GEA.isVersionFour = true --- On est en version 4.017 Beta ou suppérieur
  
  -- [FR] Votre langue : FR (default)
  -- [EN] Your language : EN
  GEA.language = "FR";
  
  -- [FR] On vérifie toutes les X secondes  (default : 30)
  -- [EN] Check every X seconds
  GEA.checkEvery = 30 
  
  -- [FR] Liste des portables devant recevoir une notification {6,8}
  -- [EN] Smarphones you want to be notified {XX, XX} for more than one
  GEA.portables = {6,8} 
  
  -- [FR] Affichage des traces dans la console (default : false)
  -- [EN] Show trace in the debug window
  GEA.debug = false
  --GEA.catchError=false

  -- option : GEA.typeOptimize["NONE"], GEA.typeOptimize["IMEDIATE_ONLY"], GEA.typeOptimize["ALL"]
  -- permet d'optimiser les soucis liés au getName et getRoom de fibaro mais n'affiche plus le nom des modules concernés.
  GEA.optimize = GEA.typeOptimize["IMEDIATE_ONLY"]

  -- [FR] Tableau d'identifiant (facultatif)
  -- [EN] ID table (optional)
  
  
 
  local id = {
    
    --Liste des détecteurs
    
    Presence_Entree_1 = 18, 
    Presence_Entree_2 = 173,
    Presence_Salon = 197,
   
   
   --Listes des actionneurs
    
  Lampe_Bureau_Entree = 260,
  Statut_Alarme = 30,
  Valeur_Tempo = 262,
  Lampe_Console = 180,
  Interrupteur_Evier_Gauche = 169,
  Lampe_Enceinte = 241, 
  Lampe_Piano = 247,  
  Lampe_Chambre_P = 223,
       

  }
  
 
  
  -----------------GESTION DES LUMIERES
  
  ---------ALLUMAGE DES LUMIERES DE L'ENTREE


  --Allumage de la lampe de bureau de l'entrée (Lampe_Bureau_Entree), a la détection de mouvement (Presence_Entree_1 ou Presence_Entree_2), la nuit, puis extinction au bout de 2 minutes si pas de détection de mouvement
GEA.add( id["Presence_Entree_1"], -1, "", {{"Days", "Weekday"}, {"Time", "00:01", "06:12"},{ "turnOn", id["Lampe_Bureau_Entree"]}})
GEA.add( id["Presence_Entree_2"], -1, "", {{"Days", "Weekday"}, {"Time", "00:01", "06:12"},{ "turnOn", id["Lampe_Bureau_Entree"]}})  
GEA.add( id["Lampe_Bureau_Entree"], 2*60, "", {{"Days", "Weekday"}, {"Time", "00:01", "06:12"}, { "turnOff", id["Lampe_Bureau_Entree"] }}) 


GEA.add( id["Presence_Entree_1"], -1, "", {{"Days", "Weekend"}, {"Time", "00:01", "Sunrise-30"},{ "turnOn", id["Lampe_Bureau_Entree"]}})
GEA.add( id["Presence_Entree_2"], -1, "", {{"Days", "Weekend"}, {"Time", "00:01", "Sunrise-30"},{ "turnOn", id["Lampe_Bureau_Entree"]}})  
GEA.add( id["Lampe_Bureau_Entree"], 2*60, "", {{"Days", "Weekend"}, {"Time", "00:01", "Sunrise-26"}, { "turnOff", id["Lampe_Bureau_Entree"] }})   
  
 -- Allumage de la lampe de bureau de l'entrée dans les horaires indiqués, quand on est à  la maison et que l'alarme n'est pas active, la semaine
GEA.add(id ["Statut_Alarme"], 1, "", {{"Inverse"}, {"Time", "Sunset", "23:59"}, {"turnOn", id["Lampe_Bureau_Entree"]}})
GEA.add(id ["Statut_Alarme"], 1, "", {{"Inverse"}, {"Days", "Weekday"}, {"Time", "06:15", "Sunrise+30"}, {"turnOn", id["Lampe_Bureau_Entree"]}})
GEA.add( id["Lampe_Bureau_Entree"], 2*60, "", {{"Time", "Sunrise+34", "10:00"}, { "turnOff", id["Lampe_Bureau_Entree"] }}) 
 
  
  
  ---------ALLUMAGE DES LUMIERES DE LA CUISINE
  
  --Allumage de la lumière gauche de l'évier de la cuisine dans les horaires indiqués, quand on est à  la maison et que l'alarme n'es 
  GEA.add(id ["Statut_Alarme"], 1, "", {{"Inverse"}, {"Time", "Sunset", "23:59"}, {"turnOn", id["Interrupteur_Evier_Gauche"]}})  
  GEA.add( id["Interrupteur_Evier_Gauche"], 2*60, "", {{"Time", "00:01", "05:00"}, { "turnOff", id["Interrupteur_Evier_Gauche"] }})  
 
  
   ---------ALLUMAGE DES LUMIERES DU SALON


  --Allumage de la lampe de la Console du Salon (Lampe_Console), a la détection de mouvement (Presence_Salon), la nuit, puis extinction au bout de 2 minutes si pas de détection de mouvement
GEA.add( id["Presence_Salon"], -1, "", {{"Time", "00:01", "Sunrise-30"},{ "turnOn", id["Lampe_Console"]}})
GEA.add( id["Lampe_Console"], 2*60, "", {{"Time", "00:01", "Sunrise-30"}, { "turnOff", id["Lampe_Console"] }}) 

  
--Allumage de la lampe de la console dans les horaires indiqués, quand on est à  la maison et que l'alarme n'est pas active
 GEA.add(id ["Statut_Alarme"], 1, "", {{"Inverse"}, {"Time", "Sunset", "23:59"}, {"turnOn", id["Lampe_Console"]}})
   
    
--Allumage de la lampe de la lampe de l'Enceinte dans les horaires indiqués, quand on est à  la maison et que l'alarme n'est pas active
 GEA.add(id ["Statut_Alarme"], 1, "", {{"Inverse"}, {"Time", "Sunset", "23:59"}, {"turnOn", id["Lampe_Enceinte"]}})
   
    
 --Allumage de la lampe de la lampe du Piano dans les horaires indiqués, quand on est à  la maison et que l'alarme n'est pas active
 GEA.add(id ["Statut_Alarme"], 1, "", {{"Inverse"}, {"Time", "Sunset", "23:59"}, {"turnOn", id["Lampe_Piano"]}})
 
  
 ---------ALLUMAGE DES LUMIERES DE LA CHAMBRE PARENTS

   
 -- Allumage de la lampe de la Chambre Parent dans les horaires indiqués, quand on est à  la maison et que l'alarme n'est pas active
  GEA.add(id ["Statut_Alarme"], 1, "", {{"Inverse"}, {"Time", "Sunset+30", "23:59"}, {"turnOn", id["Lampe_Chambre_P"]}})
  

Peut-on mettre 2 conditions dans une action GEA?

 

Comment pourrais rajouter une condition sur l'action suivante par exemple : 

 

GEA.add(id ["Statut_Alarme"], 1, "", {{"Inverse"}, {"Time", "Sunset", "23:59"}, {"turnOn", id["Interrupteur_Evier_Gauche"]}})  

là  je voudrais rajouter en plus de la condition de statut d'alarme, la condition "Valeur Tempo" (qui doit être 0 en Tempo bleu et blanc et 1 en Tempo Rouge). Quand c'est 1, il ne faut pas que cette action se passe.

 

Je pourrais reproduire le même code pour les actions à  ne pas faire quand Valeur Tempo = 1

 

Je n'ai pas créé de variable globale pour "Statut_Alarme", ni de scène pour mettre à  jour la variable, et pourtant cela fonctionne. Que dois-je faire?

 

Merci.

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...