Aller au contenu
Steven

Gea : Gestionnaire D'événements Automatique

Recommended Posts

@lolomail

 

Ton code en optimisé

GEA.add({"Global", "Absence", "0"}, 60, "", {{"Group", 1},{"Group", 2},{"Group", 3}}) -- si "Absence" = "0"
GEA.add({"Global", "Vacances", "0"}, 60, "", {{"Group", 1},{"Group", 2},{"Group", 3}}) -- si "Vacances" = "0"    


-- Chambre fermeture volet si température supérieure à  21°c
GEA.add({"Value+", 37, 20.9}, 60, "", {{"Group", 1}}) -- Température < 20.9°
-- Si toutes les conditions du group 1 sont respectées plus de 10 minutes
-- On met le volet à  50%  et uniquement entre 10:00 et 18:00
GEA.add({"Group", 1}, 10*60, "Fermeture volet chambre à  60% à  #time#, température >= 21°", {{"Value", 78, 50},{"Time", "10:00", "18:00"}})
 
-- Chambre fermeture volet si température supérieure à  23°c
GEA.add({"Value+", 37, 22.9}, 60, "", {{"Group", 2}}) -- Température < 22.9°
-- Si toutes les conditions du group 1 sont respectées plus de 10 minutes
-- On met le volet à  70%  et uniquement entre 10:00 et 18:00
GEA.add({"Group", 2}, 10*60, "Fermeture volet chambre à  70% à  #time#, température >= 21°", {{"Value", 78, 70},{"Time", "10:00", "18:00"}})
 
-- Chambre fermeture volet si température inférieure à  21°c
GEA.add({"Value-", 37, 20.9}, 60, "", {{"Group", 3}}) -- Température < 20.9°
-- Si toutes les conditions du group 1 sont respectées plus de 10 minutes
-- On met le volet à  100%  et uniquement entre 10:00 et 18:00
GEA.add({"Group", 3}, 10*60, "Ouverture volet chambre à  #time#, température < 21°", {{"Value", 78, 100},{"Time", "10:00", "18:00"}})
 

Chaque élément peut être inclus dans plusieurs groupe.

 

Pour tes autres suggestions, ils sont en effet presque toutes déjà  réalisable :)

Partager ce message


Lien à poster
Partager sur d’autres sites

@Steven

Ton GEA, ça me rappelle un noyau évènementiel qu'on avait développé pour nos programmations sur micro-controleurs Motorola 68HC11.

C'était àl'époque une grosse révolution, après des années de programmation "linéaire".

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

En tout cas c'est top ce système, vais pouvoir gérer mes volets pièce par pièce en fonction de la température à  l'intérieure et des variables :).

J'aurais essayer de faire un truc cela aurait été moche comme pas possible et m'aurais pris 10 ans à  le faire...

 

Tiens dans le style défi à  relever mais je sens que Steven va y arriver haut la main, toujours sur les volets serait-il possible de faire un bout de script de sorte que:

- Avec la variable présence maison cela autorise l'ouverture / fermeture des volets quand elle est à  1

- Que les volets s'ouvrent à  l'heure du levée du soleil si cette dernière est supérieure à  7h30 en semaine ou bien à  7h30 si l'heure du levée de soleil est inférieure à  7h30

- Gestion des jours semaines et weekend,

- Changement de l'heure de levée pour les vacances / jour fériés via une variable

- Décalage dans les ouvertures de qqs minutes entre les volets paramétrable

 

J'expose pas mal de paramètres que j'aimerais avoir, je ne sais pas si cela est réalisable simplement.

 

Milles merci Steven pour tout ce que tu fais pour nous!!!!

 

Gestion des jours ... c'est déjà  fait.

Décalage dans les ouvertues de qqs minutes ... c'est une idée mais difficile

Un truc intéressant dans ce que tu demandes est la possibilité d'effectuer une action uniquement si une variable globale est a X ou Y sans faire un groupe.

 

Ensuite pour l'ouverture à  7h30 ou avant .. c'est tordu ton truc mais c'est une idée.

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut Steven tu peux getter un Å“il la dessus stp car la scène ne se lance pas, j'oublié c'est la V3 

-- Gestion volets "EST" matin
-- Si la luminosité est supérieur à  1200 Lux pendant 10 minutes entre 5:30 h et 13 h, on lève les volets 19 et 24 à  75
GEA.add({"Value+", 41, 1200}, 10*60, "Fermeture des volets Ouest Partiel #value# Lux", {{"Time","05:30","20:00"},{"Close",24,75},{"Close",19,75}})

post-495-0-26306900-1400420569_thumb.png

Partager ce message


Lien à poster
Partager sur d’autres sites

A vu d'oeil, tout est juste de ton côté. J'ai sà»rement un soucis avec le "close" car c'est une des fonctions que je n'arrive pas tester.

 

Arriverais-tu juste remplacer les {"Close", <id>, 75} par {"Value", <id>, 25} pour tester ?

 

 

 

 

Edit : le "close" et le open sont buggé, je le confirme :(

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai essayé avec "open" est c'est la même chose  ;)

 

Je modifie tous de suite je te dis quoi

Partager ce message


Lien à poster
Partager sur d’autres sites

Je confirme c'est ok avec "value"

-- Gestion volets "EST" matin
-- Si la luminosité est supérieur à1200 Lux pendant 10 minutes entre 5:30 h et 13 h, on lève les volets 19 et 24 à75
GEA.add({"Value+", 41, 600}, 1*60, "Fermeture des volets Ouest Partiel #value# Lux", {{"Time","05:30","20:00"},{"Value",24,75},{"Value",19,75}})

Partager ce message


Lien à poster
Partager sur d’autres sites

Ensuite pour l'ouverture à7h30 ou avant .. c'est tordu ton truc mais c'est une idée.

Bah c'est pour éviter de se taper àchanger la prog du script de levée ou de couché en fonction de la saison car moyen de voir le volet s'ouvrir à6h du mat quand tu te lèves à7h... :15:

Partager ce message


Lien à poster
Partager sur d’autres sites

Version 3.10 disponible

  • Correction des paramètres {"Open", <id>, <valeur>} et {"Close", <id>, <valeur>}
  • Ajout du paramètre {"DST"} pour n'effectuer une action uniquement en mode "heure d'été"
  • Ajout du paramètre {"If", {<condition>[,<condition>[,...]}} Voir exemple ci-dessous
     
-- Si la lumière (69) est allumée un Lundi, Samedi ou Dimanche
-- ET que "Vacances = 0" ET que "Absence" = 1
-- ET que la température (8) est inférieur à  18°
local condition = {"If",{{"Global", "Absence", "1"},{"Global", "Vacances", "0"},{"Value-", 8, 18}}}
GEA.add(69, -1, "La lumière est allumée", {{"Days", "Monday, Weekend"}, condition})

La gestion des parenthèses devient compliquée alors faite attention.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Super, y'a plus qu'a migrer toutes mes diverses scènes sur GEA!

Merci pour ton boulot... et bonne nuit

Partager ce message


Lien à poster
Partager sur d’autres sites

Bah c'est pour éviter de se taper à  changer la prog du script de levée ou de couché en fonction de la saison car moyen de voir le volet s'ouvrir à  6h du mat quand tu te lèves à  7h... :15:

 

Si tu fais quelque chose comme

 

GEA.add(<condition>, 30, "", {{"Time", "Sunrise", "Sunset"}, {"Group", 1}}
GEA.add(<condition>, 30, "", {{"Time", "07:00", "23:00"}, {"Group", 1}}
GEA.add({"Group", 1}, 30, "Au plus tot à  07:00", {{"Open", 18, 50}})
Il faut que les 2 conditions soient valable pour effectuer les opérations du Group1. Donc si on est entre Sunrise et Sunset et que l'on est entre 7:00 et 23:00.

Donc si le levé est à  06:15 ... on n'est pas encore à  07:00 donc au plus tôt les volets se lève à  07:00 et au plus tard à  Sunrise.

Paris gagné :)

Partager ce message


Lien à poster
Partager sur d’autres sites

 Alors, ça avance. Pour le portail, je check à  22h20 si le portail est fermé au bout de 10mn, le bouton 1 du module virtuel me le ferme. Je peux donc supprimer ma scène en blocs avec le timer à  22h30?

 Pour les volets, je n'ai pas testé, de plus j'en ai 4 (Id112,113,114,115) que je vais fermer à  80% entre 9h & 19h quand la température de ma sonde (Id67) sera supérieure à  24°. Je ferme actuellement les volets avec une variable Jour_Nuit (couché du soleil + 15mn) mais pas l'ouverture: comme le sunset-sunrise est géré par le GEA, je pense que cela doit pouvoir s'intégrer mais le coucher du soleil en hiver (bien avant 19h) ne va-t-il pas déranger la condition de température entre 9h & 19h (certes pas dépassée surtout en hiver)?

 Enfin les arroseurs, c'est juste pour limiter à  15 mn l'ouverture des EV en cas de mise en ON ponctuelle, j'en ai 12. Faut-il répéter la ligne 12 fois avec les Id différents ou les définir dans un même groupe? J'ai aussi un pluviomètre (FGBS: Id194), peut-on l'intégrer au GEA. Je n'est pas testé s'il (le GEA) était prioritaire sur une programmation dans le panneau d'arrosage (il est un peu tard).

GEA.add(61, 10*60, "", {{"VirtualDevice", 169, 1},{"Time", "22:20", "07:00"}}) -- Fermer automatiquement le Portail à  22h30
GEA.add({"Value+", 67, 24}, 5*60, "", {{"Value", 112, 80},{"Time", "09:00", "19:00"}}) -- Fermer à  80% VR Dressing si température < 24°
GEA.add(86, 15*60, "", {{"turnOff"}}) -- Eteindre automatiquement l'arrosage Pelouse 1

 

Partager ce message


Lien à poster
Partager sur d’autres sites

"Alors, ça avance. Pour le portail, je check à22h20 si le portail est fermé au bout de 10mn, le bouton 1 du module virtuel me le ferme. Je peux donc supprimer ma scène en blocs avec le timer à22h30?"

GEA.add(61, 10*60, "", {{"VirtualDevice", 169, 1},{"Time", "22:20", "07:00"}}) -- Fermer automatiquement le Portail à22h30
Correct :)

"Pour les volets, je n'ai pas testé, de plus j'en ai 4 (Id112,113,114,115) que je vais fermer à80% entre 9h & 19h quand la température de ma sonde (Id67) sera supérieure à24°."

GEA.add({"Value+", 67, 24}, 60, "", {{"Group",1},{"Time", "09:00", "19:00"}})
GEA.add({"Value+", 67, 24}, 60, "", {{"Group",1},{"Time", "09:00", "Sunset"}})
GEA.add({"Group",1}, 5*60, "", {{"Value", 112, 80},{"Value", 113, 80},{"Value", 114, 80},{"Value", 115, 80}}
Ainsi tu ne positionne tes volets à80% uniquement si il fait +24°, ce jusqu'au couché du soleil et au plus tard 19:00.

Fermeture au couché + 15 minutes

GEA.add(112, 15*60, "", {{"Value", 112, 0},{"Value", 113, 0},{"Value", 114, 0},{"Value", 115, 0},{"Time", "Sunset", "Sunrise"}})
Pour les arrosseurs, soit tu les controle 1 à1 et dans ce cas il te faut 12 lignes

GEA.add(86, 15*60, "", {{"turnOff"}}) -- Eteindre automatiquement l'arrosage Pelouse 1
GEA.add(87, 15*60, "", {{"turnOff"}}) -- Eteindre automatiquement l'arrosage Pelouse 2
Soit tu vérifies uniquement le 1er et les fermes tous

GEA.add(86, 15*60, "", {{"turnOff",86},{"turnOff",87},{"turnOff",88}}) -- Eteindre automatiquement l'arrosage Pelouse 1,2 et 3
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

 Merci beaucoup Steven pour ce SAV tardif. Je crois que je suis le premier à  passer en 3.10.

Au sujet des volets, je dois mettre les 3 lignes pour les conditions de température + celle de la fermeture au coucher?

Je vais contrôler les arroseurs 1 à  1 car ils s'ouvrent chacun leur tour (sinon pas assez de pression) et jamais 2 en même temps.

Je viens de testé ma ligne pour l'arroseur en mettant 2*60 (2mn) et en le programmant dans le panneau d'arrosage pour 5mn

GEA.add(86, 2*60, "", {{"turnOff"}}) -- Eteindre automatiquement l'arrosage Pelouse 1

Et bien le GEA m'a coupé l'EV au bout de 2mn malgré la programmation du panneau d'arrosage (c'est bon à  savoir).

Une idée sur mon module universel déguisé en pluviomètre pour interdire à  toutes les EV de s'ouvrir (sauf une pour la serre) quand il est en alerte?

 Ce script est vraiment top, il faut que je m'occupe aussi de mon éclairage de plaque de rue (éclairage à  Led de l'interphone + plaque avec mon activité + intérieur de la boîte aux lettres). Il doit s'allumer au coucher du soleil + 15mn et s'éteindre à  23h30 l'été et 22h30 l'hiver (variable saison) et s'allumer en hiver le matin à  7h30 pour s'éteindre au lever du soleil (pas besoin d'allumage les matins d'été).

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci une nouvelle fois, la partie if est tres intéressante car je voulais créer un trc du genre: si ma plaque de cuissson consomme moins de 15w pendant 10 mins et que l'une des 2 vitesses de hotte est activé alors j'éteins la hotte ( lumiere + ventil). Inversement si la plaque de cuisson consomme plus de 15w pendant 30 secondes alors j'allume la petite vitesse et la lumiere et je passe la VMC en position grange vitesse. Si la plaque consomme plus de 1000w alors je passe ma hotte en grande vitesse :)

 

Merci mes reves deviennent réalités  :P

Partager ce message


Lien à poster
Partager sur d’autres sites

Le contrôle de la hotte, tiens j'y avais jamais pensé àça...

Partager ce message


Lien à poster
Partager sur d’autres sites

Nouvelle version 3.15

  • [Nouveauté] ajout du paramètre {"NOTDST"} pour vérifier que nous sommes en heure d'hiver .. à  contrario de {"DST"}
@Did

Il faut que tu reprennes la version 3.15 pour le NOTDST

 

Au sujet des volets, je dois mettre les 3 lignes pour les conditions de température + celle de la fermeture au coucher?

Oui, ce code empèche le système de contrôler de la température une fois le coucher du soleil. Comme cela tu n'as pas de confision avec la fermeture des volets.

Si le faux pluviomètre (disons que son ID est 999) est en alerte, il faut éteindre les EV

GEA.add(999, 1, "", {{"turnOff",86},{"turnOff",87},{"turnOff",88}) -- Eteindre automatiquement l'arrosage Pelouse 1, 2 et 3
Le système fermera tes EV (dans les 30 secondes) si le module est en alerte, mais on ne peux pas empêcher l'allumage si ce dernier est programmer dans le panneau d'arrosage.

Il doit s'allumer au coucher du soleil + 15mn et s'éteindre à  23h30 l'été et 22h30 l'hiver (variable saison) et s'allumer en hiver le matin à  7h30 pour s'éteindre au lever du soleil (pas besoin d'allumage les matins d'été)

local id_eclairage = 998
GEA.add(id_eclairage , 15*60, "", {{"Inverse"}{"Time", "Sunset", "Sunrise"}} -- on allume au coucher du soleil
GEA.add(id_eclairage , 60, "", {{"Inverse"}{"Time", "07:30", "Sunset"}, {"NOTDST"}} -- on allume à  7:30 en hiver
GEA.add(id_eclairage , 15*60, "", {{"Time", "22:30", "Sunrise"}, {"NOTDST"}} -- on éteint à  22:30 en hiver
GEA.add(id_eclairage , 15*60, "", {{"Time", "23:30", "Sunrise"}, {"DST"}} -- on éteint à  23:30 en été 

Partager ce message


Lien à poster
Partager sur d’autres sites

 Quelle réactivité! et encore une version améliorée. Merci Mr Steven. :60:

J'ai intégrer les lignes pour les volets et ça tourne impec. Je m'étais gouré au niveau des 80% d'ouverture, en fait c'était 20%. Je vais ré-essayer à  18h45 de monter la sonde au dessus de 24° pour vérifier s'ils remonte à  19h (si je suis rentré).

Je vais me pencher sur le pluviomètre et ma plaque de rue. Je commence à  piger le coup des parenthèses et accolades. N'en manquerait-il pas une en fin de ligne sur le pluviomètre?

Partager ce message


Lien à poster
Partager sur d’autres sites

Incroyable !

J'ai ajouté les parametre été/hiver, pour la lumière c'est trop top !

 

Juste un truc que je ne comprends pas pour le Karotz (OpenKarotz)

Pour le moment le lapin parle bien sur un évènement GEA.

 

Mais, pour que cela fonctionne, il faut que j'écrive mes phrases dans un VD.

Et que je demande a GEA d'appuyer sur un bouton du VD.

 

Comment faire avec mon VD pour que ce soit la phrase passé en paramètre dans GEA, qui soit lue (?)

Partager ce message


Lien à poster
Partager sur d’autres sites

N'en manquerait-il pas une en fin de ligne sur le pluviomètre?

Absolument, tu as raison ... bien vu.

J'ai ajouté le {"Open", <id>, 20} qui veux dire Ouverture du volet de 20% pour éviter ce genre de confusion.

Il y a aussi

{"Close", <id>, 20) pour fermeture de 20% --- soit ouverture de 80%

Enfin, cela permet d'être plus parlant que Value 20 ou 80 ou ... je sais plus :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Juste un truc que je ne comprends pas pour le Karotz (OpenKarotz)

Pour le moment le lapin parle bien sur un évènement GEA.

 

Mais, pour que cela fonctionne, il faut que j'écrive mes phrases dans un VD.

Et que je demande a GEA d'appuyer sur un bouton du VD.

 

Comment faire avec mon VD pour que ce soit la phrase passé en paramètre dans GEA, qui soit lue (?)

Moi je fais ainsi

1) Je met à  jour une variable globale avec la phrase à  dire

2) J'appuie sur le bouton du module virtuel

Le bouton du module virtuel reprend la phrase de la variable globale et envoi la phrase à  OpenKarotz.

Exemple :

-- On met le messsage dans la variable globale puis on appuie sur le bouton du module virtuel
GEA.add(69, 10*60, "", {{"Global", "Karotz", "GEA est trop pratique"}, {"VirtualDevice", 19, 1}}
Code du bouton de mon virtual device 19 .. bouton 1

local phrase = fibaro:getGlobal("Karotz")
if (phrase ~= "") then -- si la phrase n'est pas vide
   Lapin = Net.FHttp("<adresse ip du rongeur>")
   Lapin:GET("/cgi-bin/tts?voice=alice&text="..phrase.."&nocache=1")
end

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est une vraie tuerie ce script que tu nous a fait Steven plus toute les inclusions de demandes tordues comme les miennes! Milles merci!!!

 

Bon je fini de mettre en place la gestion des volets suivant la température puis je passe à  la gestion des volets le matin et soir :).

Partager ce message


Lien à poster
Partager sur d’autres sites

Je suis juste les mains qui transcode vos idées complètement tordues et inhumaines en pauvre script LUA :)

Le seul mérite que j'ai ... est de vous comprendre ;)


Ok,  :98:

Partager ce message


Lien à poster
Partager sur d’autres sites

En tout cas et encore une fois milles merci car tu nous mets a dispo un super script!!!

Je commence a le mixer avec le scheduler d'ailleurs, en fait pour la gestion des volets j'ai mis la vérif de la variable schedulergroup a summernormal, comme cela cette partie sera neutraliser l'hiver :). Vais poser une question mais je suis quasi sur que tu as déjàprévu, on pourrait faire vérifier la valeur d'une variable avec 4 états? M'explique toujours avec Schedulergroup tu as winternormal, wintervacation, summernormal, summervacation, donc si on voulait faire exécuter un script que lors des periodes normal faudrait faire comment?

La je viens de recevoir une notif le volet c'est bien ferme car la temp de la pièce est passée au delàde 22 :)

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est pas vraiment possible car il faudrait winternormal OU summernormal et je ne gère pas les OU.

 

Par contre si tu doubles le tout

GEA.add(<condition>, <secondes>, "Uniquement si je suis en winternormal", {{"If", {{"Global", "Schedulergroup", "winternormal"}}}}
GEA.add(<condition>, <secondes>, "Uniquement si je suis en summernormal ", {{"If", {{"Global", "Schedulergroup", "summernormal"}}}}

Ton problème sera résolu.

 

Certes, c'est moins beau mais faisable.

 

 

 

Cool pour les volets à  22°

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.

×