Did Posté(e) le 3 octobre 2014 Signaler Posté(e) le 3 octobre 2014 Jamais entendu parler de tristable. Je crois que le terme est plus approprié à un contact actionné électriquement (monostable: position relachée ou bistable: position maintenue). En actionnement manuel, il y a aussi trois positions Off/On/Off puis les inters rotatifs avec x position. 1
Steven Posté(e) le 3 octobre 2014 Auteur Signaler Posté(e) le 3 octobre 2014 OK, c'est bon ... merci Did ... maintenant, je suis complètement largué
BenjyNet Posté(e) le 3 octobre 2014 Signaler Posté(e) le 3 octobre 2014 Huhu c'est Did qui a raison, on n'emploie quasi jamais le terme tristable mais bon c’était pour voir si tu suivais
971jmd Posté(e) le 3 octobre 2014 Signaler Posté(e) le 3 octobre 2014 @Steven J'ai fini par trouver, mai peut etre qu'il y a un moyen plus simple, mai sa fonctionne il y un probleme la ligne : GEA.add({"Value+", HALO , 1}, -1, "", {{"Value", 30}, {"MaxTime", 1}} me bloque mon module 30% a la base je cherche plutôt : 30% entre 17H et 17H30 et 100% de 17H30 a 6H local ID_LED = 19 local HALO = 10 local CENTRAL = 33 local ID_FDG = 68 -- Allume les led si elles sont éteinte --GEA.add( id["PORTE"], 1*60, "La porte de la chambre est ouverte depuis plus de #duration#", {"Repeat", 2}) GEA.add({"SceneActivation", ID_FDG , 25}, -1, "FGP111 Plug Ventilateur ", {{"turnOn", ID_LED}, {"Time", "18:19", "01:01"}, {"If", {{"Value-", ID_LED, 1}}}}) GEA.add({"SceneActivation", ID_FDG , 25}, -1, "Halo cuisine ", {{"turnOn", HALO}, {"If", {{"Value-", HALO, 1}}}}) GEA.add({"Value+", HALO , 1}, -1, "", {{"Value", 30}}) GEA.add({"SceneActivation", ID_FDG , 25}, -1, "FGS221 eclairage ext ", {{"turnOn", CENTRAL}, {"If", {{"Value-", CENTRAL, 1}}}}) -- Eteint les LED si elles sont allumées GEA.add({"SceneActivation", ID_FDG , 24}, -1, "OFF VENTILATEUR", {{"turnOff", ID_LED }, {"If", {{"Value+", ID_LED, 0}}}}) GEA.add({"SceneActivation", ID_FDG , 24}, -1, "OFF HALO", {{"turnOff", HALO }, {"If", {{"Value+", HALO, 0}}}}) GEA.add({"Value+", HALO , 1}, -1, "", {{"Value", 30}}) GEA.add({"SceneActivation", ID_FDG , 24}, -1, "OFF EXT", {{"turnOff", CENTRAL }, {"If", {{"Value+", CENTRAL, 0}}}})
971jmd Posté(e) le 4 octobre 2014 Signaler Posté(e) le 4 octobre 2014 bonjour est-ce-qu'il est possible de créée un bouton virtuel pouvant généré 3 clik sur module ID 68 sachant que l' ID de l'entre S2 est 25
971jmd Posté(e) le 4 octobre 2014 Signaler Posté(e) le 4 octobre 2014 ou pourrais-je trouver un Dico sur la fonction des état suivant ? *value *isLight *batteryLevel *dead *parentID *unit *valueMeter *valueSensor *unitMeter *unitSensor *userDescription *timeStamp *color *sceneActivation *timeStamp *open *close *setValue *stop
971jmd Posté(e) le 4 octobre 2014 Signaler Posté(e) le 4 octobre 2014 j'ai créer ce petit scripte pour mieux voire ce qui ce passe je c'est pas si sa peut être utile --[[ %% properties %% globals --]] --[[ %% properties value 68 %% globals --]] local IDM = 68 fibaro:getValue(IDM, "value") local name = fibaro:getValue(IDM, "value" ) fibaro:debug("Valeur en % "..name) fibaro:getValue(IDM, "dead") local name = fibaro:getValue(IDM, "dead" ) fibaro:debug("dead "..name) fibaro:getValue(IDM, "parentID") local name = fibaro:getValue(IDM, "parentID" ) fibaro:debug("parentID "..name) fibaro:getValue(IDM, "unit") local name = fibaro:getValue(IDM, "unit" ) fibaro:debug("unit "..name) fibaro:getValue(IDM, "valueMeter") local name = fibaro:getValue(IDM, "valueMeter" ) fibaro:debug("compteur kw "..name) fibaro:getValue(IDM, "valueSensor") local name = fibaro:getValue(IDM, "valueSensor" ) fibaro:debug("Consommation actuel "..name) fibaro:getValue(IDM, "unitMeter") local name = fibaro:getValue(IDM, "unitMeter" ) fibaro:debug("unitMeter "..name) fibaro:getValue(IDM, "unitSensor") local name = fibaro:getValue(IDM, "unitSensor" ) fibaro:debug("unitSensor "..name) fibaro:getValue(IDM, "userDescription") local name = fibaro:getValue(IDM, "userDescription" ) fibaro:debug("userDescription "..name) fibaro:getValue(IDM, "timeStamp") local name = fibaro:getValue(IDM, "timeStamp" ) fibaro:debug("timeStamp "..name) fibaro:getValue(IDM, "dead") local name = fibaro:getValue(IDM, "dead" ) fibaro:debug("dead "..name) fibaro:getValue(IDM, "sceneActivation") local name = fibaro:getValue(IDM, "sceneActivation" ) fibaro:debug("sceneActivation "..name) fibaro:getValue(IDM, "timeStamp") local name = fibaro:getValue(IDM, "timeStamp" ) fibaro:debug("timeStamp "..name) fibaro:getValue(IDM, "open") local name = fibaro:getValue(IDM, "open" ) fibaro:debug("open "..name) fibaro:getValue(IDM, "close") local name = fibaro:getValue(IDM, "close" ) fibaro:debug("close "..name) fibaro:getValue(IDM, "setValue") local name = fibaro:getValue(IDM, "setValue" ) fibaro:debug("setValue "..name) fibaro:getValue(IDM, "stop") local name = fibaro:getValue(IDM, "stop" ) fibaro:debug("stop "..name)
sebcbien Posté(e) le 5 octobre 2014 Signaler Posté(e) le 5 octobre 2014 Bonsoiiiirrrr :-) Comme certains le savent, je cherche(ait) une méthode WAF pour éteindre les lampes automatiquement Je vois beaucoup de scripts GEA style après 10 minutes on éteint dans le WC si lampe allumée ... le jour ou ma femme reste 12 minutes et que la lumière coupe sans prévenir ça va ch**r (oui je sais, normalement on est là pour ça ;-) ) On avait trouvé une solution avec double click pour relancer le timer.... ma femme pourquoi pas mais les invités, BabySit, Femme de ménage, etc. je me vois mal leur expliquer "oui, alors dans la toilette, après 10 minutes faites un double click... et dans la salle de bain là par contre vous faites.... Bref, je pense avoir enfin trouvé :-D Le principe est qu'après un certain temps, la lampe est fortement dimmée pour signaler que ça va couper. Soit le script est relancé automatiquement via détection de mouvement, soit par un appuy long sur le dimmer. (plus de double click) Exemples: script WC: action sur le dimer (up) et/ou détection de mouvement relance le script ------------------ WC ----------------------- -- Allumage à 95% dès que détection mouvement GEA.add( id["DETECTEUR_AEON"], -1, "",{{"Function", function() fibaro:call(id["LAMPE_WC"], "setValue", "95") end}}) -- On dimme la lampe automatiquement après 2 mn et on l'éteint après 3mn si pas de mouvement ou si la lampe à été remontée a plus de 76% local malampewc = GEA.add({"Value+", id["LAMPE_WC"],89}, 2*60, "Dim 15 CAR 120sec à plus de 89%",{{"Value", 15},{"Repeat"}} ) local malampewcdim = GEA.add({"Value-", id["LAMPE_WC"],55}, 3*60, "TurnOff apres 180s à moins de 55%",{{"turnOff"},{"If", {{"Value+", id["LAMPE_WC"], 1}}}},{"Repeat"}) -- Relance des tâches en cas de détection GEA.add(id["DETECTEUR_AEON"], -1, "Tasks Started", {{"RestartTask", malampewc},{"RestartTask", malampewcdim}}) -------------------------------------------- script Salle à Manger: action sur le dimer (up) et/ou détection de mouvement relance le script Il y a une variante pour le jour et une pour la nuit -------------------SAM------------------------ -- période NUIT entre sunset et sunrise local nuitsam = {"Time", "Sunset", "Sunrise"} -- Allumage à 75% dès que détection mouvement GEA.add( id["DETECTEUR_SAM"], -1, "",{ nuitsam ,{"Function", function() fibaro:call(id["LAMPE_SAM"], "setValue", "75") end}}) -- On dimme la lampe automatiquement après 5mn et on l'éteint après 3mn si pas de mouvement ou si la lampe à été remontée a plus de 70% local malampesam = GEA.add({"Value+", id["LAMPE_SAM"],70}, 5*60, "Dim à 40% CAR 5 min à plus de 70%",{ nuitsam ,{"Value", 40},{"Repeat"}}) local malampesamdim = GEA.add({"Value-", id["LAMPE_SAM"],45}, 3*60,"apres 3 min à moins de 45% set à 75% then TurnOff ",{nuitsam,{"Function", function() fibaro:call(id["LAMPE_SAM"], "setValue", "75") end},{"Function", function() fibaro:sleep(300) end},{"turnOff"},{"If", {{"Value+", id["LAMPE_SAM"], 1}}}},{"Repeat"}) -- Relance des tâches en cas de détection GEA.add(id["DETECTEUR_SAM"], -1, "Tasks Started", { nuitsam , {"RestartTask", malampesam}, {"RestartTask", malampesamdim} }) --------------------- -- Période JOUR entre sunrise et sunset local joursam = {"Time", "Sunrise", "Sunset"} -- On dimme la lampe automatiquement après 60mn et on l'éteint après 70mn si pas d'action manuelle local malampesam2 = GEA.add( {"Value+", id["LAMPE_SAM"],70}, 60*60, "Dim à 40% CAR 60min à plus de 70%",{ joursam ,{"Value", 40},{"Repeat"}} ) local malampesam2dim = GEA.add( {"Value-", id["LAMPE_SAM"],45}, 10*60,"TurnOff apres 10 min à moins de 45%",{joursam,{"Function", function() fibaro:call(id["LAMPE_SAM"], "setValue", "75") end},{"Function", function() fibaro:sleep(300) end},{"turnOff"},{"If", {{"Value+", id["LAMPE_SAM"], 1}}}},{"Repeat"}) -- Une action manuelle relance tout GEA.add( id["LAMPE_SAM"], -1, "", {{"Inverse"}, {"RestartTask", malampesam2}, {"RestartTask", malampesam2dim}}) ----------------------------------------------- Tout ça fonctionne très bien, il y a probablement moyen d'optimiser, mais pour certaines choses je "cale". Exemple qui fonctionne: {nuitsam , {"Function", function() fibaro:call(id["LAMPE_SAM"], "setValue", "75") end}, {"Function", function() fibaro:sleep(300) end}, {"turnOff"}, {"If", {{"Value+", id["LAMPE_SAM"], 1}}} }, Alors que ceci ne fonctionne pas... {nuitsam , {"Value", "75"}, {"Function", function() fibaro:sleep(300) end}, {"turnOff"}, {"If", {{"Value+", id["LAMPE_SAM"], 1}}} }, Steven, Une idée ? Tu vois des améliorations possibles ?
971jmd Posté(e) le 5 octobre 2014 Signaler Posté(e) le 5 octobre 2014 j'ai un petit souci Après 3 clik deux condition pour allumer mon HALO condition 1: {"Time", "08:00", "17:30"} ça fonction nikel condition 2: si la valeur de mon HALo est inférieur à 50%, allumer HALO a 40% ça ne fonction pas local VAL = {"Function", function() fibaro:call(id["HALO"], "setValue-", "50") end} GEA.add({"SceneActivation", ID_FDG , 25}, -1, "",{{"Time", "08:00", "17:30"}, VAL,{"Function", function() fibaro:call(id["HALO"], "setValue", "40") end}})
Steven Posté(e) le 6 octobre 2014 Auteur Signaler Posté(e) le 6 octobre 2014 @971jmd local siMoinsDeCinquante= {"If", {{"Value-", id["HALO"], 50}}} GEA.add({"SceneActivation", ID_FDG , 25}, -1, "",{{"Time", "08:00", "17:30"}, siMoinsDeCinquante, {"Value", id["HALO"], 40}}}) . ----------- . @sebcbien Chez moi le {"Value", 75} ou {"Value", <id>, 75} fonctionne très bien. Essaie en précisant l'ID soit {"Value", id["LAMPE_SAM"], 75} pour essayer car il se peux que je n'arrive pas détecter correctement l'ID que tu souhaite utilisé.
Steven Posté(e) le 6 octobre 2014 Auteur Signaler Posté(e) le 6 octobre 2014 @971jmd "a la base je cherche plutôt : 30% entre 17H et 17H30 et 100% de 17H30 a 6H" GEA.add({"Value+", HALO , 0}, -1, "", {{"Value", 30}, {"Time", "17:00", "17:30"}}) GEA.add({"Value+", HALO , 0}, -1, "", {{"Value", 100}, {"Time", "17:30", "06:00"}}) . "est-ce-qu'il est possible de créée un bouton virtuel pouvant généré 3 clik sur module ID 68 sachant que l' ID de l'entre S2 est 25" Je ne crois pas que cela soit réalisable Dico : *value Valeur du module 0 ou 1 pour un interrupteur .. entre 0 et 100 pour un dimmer, autre par exemple 21.3 pour un thermomètre. *isLight True si le module gère un éclairage *batteryLevel Le niveau de la batterie (pile) *dead True si le module est notifié comme mort (ne répond plus) *parentID L'identifiant du parent. Par exemple pour un thermomètre connecté sur un détecteur de porte le parentID du thermomètre est l'ID du détecteur de porte. *unit L'unité utilisée liée à la "value" par exemple "C" pour Celsius, "W" pour Watt, ... *valueMeter Pour une prise avec indication de consommation, la valeur du cumulé *valueSensor Pour une prise avec indication de consommation, la valeur instantanée *unitMeter L'unité utilisée pour la valeur cumulée par exemple "Kwh" *unitSensor L'unité utilisée pour la valeur instantanée par exemple "W" *userDescription .. aucune idée ... *timeStamp Un timeStamp est un tampon contenant une heure par exemple l'heure de la dernière modification *color La couleur d'un Wall Plug ou d'un module RGBW *sceneActivation La dernière activation par scène (paramètre 41) *open Pour des volets roulants ... Ouvir ... permet d'ouvrir un volet *close Pour des volets roulants ... Fermer ... permet de fermer un volet *setValue Permet de modifier la valeur "value" précisée plus haut *stop Pour des volets roulants ... Arrêter... permet d'arrèter la course d'un volet 1
sebcbien Posté(e) le 6 octobre 2014 Signaler Posté(e) le 6 octobre 2014 @sebcbien Chez moi le {"Value", 75} ou {"Value", <id>, 75} fonctionne très bien. Essaie en précisant l'ID soit {"Value", id["LAMPE_SAM"], 75} pour essayer car il se peux que je n'arrive pas détecter correctement l'ID que tu souhaite utilisé. Yep, en précisant l'id, ça marche nickel ! merci :-) code définitif ici: 1
971jmd Posté(e) le 6 octobre 2014 Signaler Posté(e) le 6 octobre 2014 je souhaite créé deux Boutons Virtuel me permettant de changer la variante 25 mai je voie pas trop comment un bouton + un bouton - local siSupfer25 = {"If", {{"Value+", id["TEMP"], 25}}}
Steven Posté(e) le 6 octobre 2014 Auteur Signaler Posté(e) le 6 octobre 2014 Il n'y a aucun moyen de faire discuter GEA avec un module virtuel ... a moins que le module virtuel modifie une Variable Globale et que GEA lise cette même variable. Mais tout cela ne devrait pas vraiment ce trouver dans ce topique. Il devrait même sà»rement y avoir déjà des exemples sur ce forum. Sinon, hésite pas à poser la question (mais pas sur GEA) et je regarderais à temps perdu (ce qui normalement n'est pas très lent) 1
Yohan Posté(e) le 7 octobre 2014 Signaler Posté(e) le 7 octobre 2014 Salut Steven, Pour la gestion des volets, je compte reprendre ce code : -- Gestion ouverture volets -- Définition variable local absent = {"Global", "Absence", "0"} -- si "Absence" = "0" local travail = {"Global", "repos", "0"} -- si "repos" = "0" local repos = {"Global", "repos", "1"} -- si "repos" = "1" -- Ouverture en semaine GEA.add(..........., {{"If", {absent}}, {"Days", "Weekdays"}, {"Time", "Sunrise>07:30", "Sunset"}}) -- Ouverture en week-end GEA.add(..........., {{"If", {absent}}, {"Days", "Weekend"}, {"Time", "Sunrise>08:30", "Sunset"}}) -- Ouverture en repos GEA.add(..........., {{"If", {absent, repos}}}) J'ai au total 6 volets. Dois je déclarer un GEA.add pour chaque volet ? Pour les variables, on peut utiliser celle de ton VD jourchomé ?
SebDel Posté(e) le 9 octobre 2014 Signaler Posté(e) le 9 octobre 2014 Bonjour Steven, Mon projet tourne maintenant comme une horloge et j'attend encore un peu avant de passer à la version 4.xx. GEA.add({"Sensor-", id["BUR_ORDI_CONSO"], 50}, 5*60, "Arret Ordinateurs #value#", {{"Days","Weekday"}, {"Time", "18:00", "9:00"}, {"turnOff", id["BUR_ORDI_SW1"]},{"If", {{"Value+", id["BUR_ORDI_SW1"], 0}}}}) GEA.add({"Sensor-", id["BUR_ORDI_CONSO"], 50}, 5*60, "Arret Ordinateurs #value#", {{"Days","Weekend"}, {"turnOff", id["BUR_ORDI_SW1"]},{"If", {{"Value+", id["BUR_ORDI_SW1"], 0}}}}) Sur le code ci-dessus, qui fonctionne très bien habituellement j'ai remarqué la chose suivante : Sur la partie des jours de la semaine, j'ai noté de 18h00 à 9h00. Quand la consommation, lors du passage à 18h et à 200w par exemple et qu'il passe ensuite à 15w, après 18h le script capte bien le sensor et fait le travail. Par contre si la consommation est à 15w avant 18 et qu'elle ne bouge plus par la suite, alors l’événement n'est pas vu car j'imagine qu'il n'y a pas de changement et donc la règle n'est pas revu. Je précise que le module envoie son rapport toutes les 30s. Comment puis je faire pour qu'à partir de 18h dans mon cas, le système reprenne la consommation même si elle est stable. Merci à toi. Amicalement Séb
Invité chris6783 Posté(e) le 9 octobre 2014 Signaler Posté(e) le 9 octobre 2014 Bonjour Tu peux appliquer {repeat} àla tâche pour forcer son évaluation même sans changement ou alors la redémarrer à18h via restartTask. Mais peut être que Steven aura une autre alternative àproposer
SebDel Posté(e) le 9 octobre 2014 Signaler Posté(e) le 9 octobre 2014 Bonjour chris6783, En fait je dois créer une nouvelle tache vers 18h pour relancer à ce moment précis la réévaluation de la première. J'imagine que cette solution est plus "économique" en process que la première solution repeat qui devra ce reproduire même quand la condition n'a pas changer. Merci pour ta réponse rapide. Séb
Steven Posté(e) le 9 octobre 2014 Auteur Signaler Posté(e) le 9 octobre 2014 Salut Steven, Pour la gestion des volets, je compte reprendre ce code : -- Gestion ouverture volets -- Définition variable local absent = {"Global", "Absence", "0"} -- si "Absence" = "0" local travail = {"Global", "repos", "0"} -- si "repos" = "0" local repos = {"Global", "repos", "1"} -- si "repos" = "1" -- Ouverture en semaine GEA.add(..........., {{"If", {absent}}, {"Days", "Weekdays"}, {"Time", "Sunrise>07:30", "Sunset"}}) -- Ouverture en week-end GEA.add(..........., {{"If", {absent}}, {"Days", "Weekend"}, {"Time", "Sunrise>08:30", "Sunset"}}) -- Ouverture en repos GEA.add(..........., {{"If", {absent, repos}}}) J'ai au total 6 volets. Dois je déclarer un GEA.add pour chaque volet ? Pour les variables, on peut utiliser celle de ton VD jourchomé ? Oui tu peux reprendre la variable JourChome de HANSOLO Je ferais ainsi à ta place : local ouvrirTous = {"Open", 100},{"Open", 101},{"Open", 102},{"Open", 103},{"Open", 104},{"Open", 105} --... GEA.add(true, 30, "Ouverture des volets à #time#", {{"If", {absent, repos}}, ouvrirTous}) @SebDel Quand on précise une tranche d'heure ... la 1ère chose que vérifie GEA est justement cette heure. Donc tant qu'il n'est pas 18h00 ta ligne est ignorée. Ensuite à 18h00 elle va vérifier le sensor. Dans ton cas, ce dernier doit être à moins de 50W pendant 5 minutes ET la prise allumée. Comme tu as mis 5 minutes (5*60) GEA ne vérifie pas s'il y a eu un changement ou pas .. il vérifie point c'est tout. Donc si le PC consomme moins de 50W, à 18h05 il devrait s'éteindre. En bref, cela devrait toujours fonctionner et je ne vois pas ou pourrais être le soucis.
971jmd Posté(e) le 9 octobre 2014 Signaler Posté(e) le 9 octobre 2014 je souhaite qu'on m'explique la fonction variable globale. Mon HALO allume bien en actionnant mes lampes (CENTRAL ou Mur) mai ne s'éteins pas 20s --[[ %% autostart %% properties 32 value 33 value 35 value 30 value 61 value 10 value 14 value 68 sceneActivation %% globals A globals B globals --]] GEA.add( id["CENTRAL"], -1, "S1", {{"Global", "SourceLumiere", "A"}, {"turnOn", id["HALO"]}}) GEA.add( id["MUR"], -1, "S2", {{"Global", "SourceLumiere", "B"}, {"turnOn", id["HALO"]}}) GEA.add( id["HALO"], 20, "S1OFF", {{"turnOff"}, {"If",{{"Global", "SourceLumiere", "A"}}}}) GEA.add( id["HALO"], 30, "S2OFF", {{"turnOff"}, {"If",{{"Global", "SourceLumiere", "B"}}}})
SebDel Posté(e) le 9 octobre 2014 Signaler Posté(e) le 9 octobre 2014 Bonjour Steven, En fait ce qui se passe, c'est que si la prise est allumée et que la consommation est inférieur à 50W avant 18h et qu'après rien ne change alors la prise ne s'arrête pas. Par contre si à 18h15, j'allume la machine qui va consommer 200W et que je l'arrête à 18h20, alors à 18h25 la prise sera bien coupée. Ce que j'ai fait, c'est que j'ai ajouté un restarttask de 18h00 à 18h02 sur la tache précédente. Je vais voir si ca améliore ma situation mais, comme tu me le précise aussi, je n'y crois guère. Pour les tests, je suis un peu embêté aujourd'hui, car ce matin, la box m'a reseté tous les modules et les AEON ne répondent plus... Comme c'est avec eux que les consommations remontent, je ne suis pas très avancé pour mon problème. Je pense que le disfonctionnement ne vient pas de GEA mais plutôt d'un problème de remonté de conso avec la box. Je reviens vers toi dès que je peux faire les tests... Merci. Séb
Steven Posté(e) le 9 octobre 2014 Auteur Signaler Posté(e) le 9 octobre 2014 @971jmdPremièrement, tu peux enlever tes ligne 15 et 16 qui ne servent àrien du tout.Deuxièmement, as-tu créer la variable globale "SourceLumiere" depuis ton panneau des variablesTroisièment, tu utilises un ton qui fait penser que tout t'es dû. Saches que seul les ennuis sont gratuits et accessible aisément. Si tu souhaites que l'on aide ou assiste je pense qu'un "s'il vous plaît" ou "merci" de temps en temps serait un bon début. 5
Messages recommandés