
Nikko
Membres confirmés-
Compteur de contenus
278 -
Inscription
-
Dernière visite
-
Jours gagnés
4
Tout ce qui a été posté par Nikko
-
Les "" contiennent les message àenvoyer en push. Si il n'y a rien àenvoyer on laisse vide mais on ne les enlève pas. Cela fait partie de la syntaxe de GEA: GEA.add(<condition>, <durée en secondes|-1>, <message ànotifier>[, <options>]) Ce que j'ai écris est un exemple. Il ne faut pas créer une fonction pour chaque message mais par exemple modifier la fonction et en fonction d'un paramètre envoyer tel ou tel message: function isTooLow() if ( tonumber(fibaro:getValue(id["TEMPERATURE"], "value")) < ((tonumber(fibaro:getGlobalValue('consigneT')))-(tonumber(fibaro:getGlobalValue('hysteresis'))))) then return true end end function sendAlarm(item) local telephone = 100 local msg = '' if (tonumber(item) == 1 ) then msg = "Chaudière ON "..tonumber(fibaro:getValue(id['TEMPERATURE'], 'value')).. "< "..tonumber(fibaro:getGlobalValue('consigneT')).. " - "..tonumber(fibaro:getGlobalValue('hysteresis')).. " depuis 1 minute Mode AUTO" elseif (tonumber(item) == 2 ) then msg = "Un autre mesage" elseif (tonumber(item) == 3 ) then msg = "Encore un autre message différent" end fibaro:call(telephone,'sendPush', msg) end GEA.add ({id["CHAUDIERE"], id["ALARMESTATUT"],{"Function", function() return isTooLow() end},sceneON}, 1*30, "" , {{"Inverse"}, {"Time", "06:30", "22:45"}, {"turnOn", id["CHAUDIERE"]}, {"Function",function() sendAlarm(1) end }}) Nicolas
-
Oui en gros c'est ça, par contre attention à ne pas utiliser {"Function"} à outrance car ce n'est pas le but de GEA à la base. De plus, ça devient de plus en plus indigeste à lire, ce qui va aussi à l'encontre du principe de GEA.... Enfin c'est mon avis... N'hésites pas à utiliser espaces et retour à la ligne.... cela facilite le tout lorsque l'on cherche les erreurs. Par exemple dans ton code tu as supprimé la partie "" après la période de contrôle donc tu auras une erreur. function isTooLow() if ( tonumber(fibaro:getValue(id["TEMPERATURE"], "value")) < ((tonumber(fibaro:getGlobalValue('consigneT')))-(tonumber(fibaro:getGlobalValue('hysteresis'))))) then return true end end function sendAlarm() local telephone = 100 local msg = "Chaudière ON "..tonumber(fibaro:getValue(id['TEMPERATURE'], 'value')).. "< "..tonumber(fibaro:getGlobalValue('consigneT')).. " - "..tonumber(fibaro:getGlobalValue('hysteresis')).. " depuis 1 minute Mode AUTO" fibaro:call(telephone,'sendPush', msg) end GEA.add ({id["CHAUDIERE"], id["ALARMESTATUT"],{"Function", function() return isTooLow() end},sceneON}, 1*30, "" , {{"Inverse"}, {"Time", "06:30", "22:45"}, {"turnOn", id["CHAUDIERE"]}, {"Function",function() sendAlarm() end }}) Nicolas
-
Oui dans ton GEA, dans la partie Push, les seules parties variables gérées par le script sont de type #value#, #time#,... qui sont préétablis. Donc quand tu écris GEA.add ({id["CHAUDIERE"], {"Function", function() if ( tonumber(fibaro:getValue(id["TEMPERATURE"], "value")) < ((tonumber(fibaro:getGlobalValue('consigneT')))-(tonumber(fibaro:getGlobalValue('hysteresis'))))) then return true end end},sceneOFF}, 1*30, "Chaudière ON "..tonumber(fibaro:getValue(id['TEMPERATURE'], 'value')).. "< "..tonumber(fibaro:getGlobalValue('consigneT')).. " - "..tonumber(fibaro:getGlobalValue('hysteresis')).. " depuis 30sec Mode MANU", {{"Inverse"},{"turnOn", id["CHAUDIERE"]}}) ton commentaire est généré au lancement de GEA, donc les parties concaténées ne sont générées qu'a ce moment là . Si tu veux des commentaires variables, consultes le post #37 de ce topic, avec la partie "Function" dans les options... Je pense que ton problème vient de là Nicolas
-
Si c'est pour consulter UNIQUEMENT sur interface web, alors tu peux insérer du code html dans l'étiquette par exemple, mais c'est pas terrible... fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label1.value", '<img height="48" width="48" src="https://cdn1.iconfinder.com/data/icons/ui-icons-2/512/checkbox-on-1-01-128.png" />') Nicolas
-
Oui désolé pour le then je ne m'étais pas relu.... Alors 2 solutions au moins: Sois par GEA, tu ajoutes 2 lignes qui modifient ton label au changement d'état de la chaudière: -- Ne pas ublier de mettre l'id de la chaudiere dans l'entete GEA -- Remplacer par le bon ID du Virtual Device (ainsi que le ui.Label1.value) local VD_CHAUFFAGE = 100 GEA.add(id["CHAUDIERE"],-1,"",{{"Label", VD_CHAUFFAGE, "ui.Label1.value", "MARCHE"}}) GEA.add(id["CHAUDIERE"],-1,"",{{"Inverse"},{"Label", VD_CHAUFFAGE, "ui.Label1.value", "ARRET"}}) Ou alors via le Main Loop de ton Virtual Device (sera mit à jour toutes les 3 secondes -- id du module chaudiere local chaudiere = 300 if (tonumber(fibaro:getValue(chaudiere, "value")) > 0 ) then fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label1.value", "MARCHE") else fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label1.value", "ARRET") end Nicolas
-
Pour le problème d'icone lorsque tu cliques sur +/-0.5. Comment est conditionné ton mode AUTO/MANU ? Est-ce AUTO = Variable Globale 'SceneON' = ON et MANU = Variable Globale 'SceneON' = OFF ? (A force je ne sais plus..) Si c'est le cas tu peux ajouter ça dans chaque bouton d'ajustement de température: (pas testé donc à voir...) local statut = fibaro:getGlobalValue('SceneOn') -- Ajuster avec le bon numéro d'icone local icon = { AUTO = 1001 , MANU = 1002 } if (statut == "ON") -- Mode AUTO fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", icon['AUTO']) else -- Mode MANU fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", icon['MANU']) end Pour l'item de la chaudière tu veux un Label (comme ta température) avec le statut ON ou OFF qui s'affiche au changement d'état ? Nicolas
-
Il y a toujours moyen......: Par exemple dans les options, ajouter encore une fonction avec le sendPush. local telephone = 385 GEA.add ({{"Function", function() if ( tonumber(fibaro:getValue(id["TEMPERATURE"], "value")) > tonumber(fibaro:getGlobalValue('consigneT'))) then return true end end},sceneOFF}, 1*60, "", {{"turnOff", id["CHAUDIERE"]},{"Function",function() fibaro:call(telephone,'sendPush',"Chaudière OFF car température = "..tonumber(fibaro:getValue(id['TEMPERATURE'], 'value')).. "> à T°consigne depuis 2 minutes Mode MANU") end }}) Nicolas
-
Oui je n'avais pas corrigé le commentaire. C'est normal, le #value# correspond à la valeur de retour de la condition principale donc ici true. C'est donc normal de ne rien avoir Nicolas
-
Oui c'est bien ce que j'avais compris donc je te reformule "la solution lourde", présentée différemment: -- Création d'une fonction de controle de la température par rapport à la consigne function getTemp() if ( tonumber(fibaro:getValue(id["TEMPERATURE"], "value")) >= tonumber(fibaro:getGlobalValue('consigneT'))) then return true else return false end end --extinction de la chaudière si (température > consigneT) ET Chaudiere allumée et SceneOn, depuis 2 min GEA.add ({{"Function", function() return getTemp() end}, id["CHAUDIERE"],sceneON}, 2*60, "Chaudière OFF car température = #value#", {{"turnOff", id["CHAUDIERE"]}}) Nicolas
-
En fait si je comprends bien tu veux par exemple dans la ligne suivante remplacer le 19 par la valeur d'une variable globale qui peut être amener à bouger c'est ça? -- allumage de la chaudière entre lever et coucher du soleil, si présent et température < 19°C depuis 2 min GEA.add ({id["CHAUDIERE"], id["ALARMESTATUT"], {"value-", id["TEMPERATURE"], 19},sceneON}, 2*60, "Chaudière ON", {{"Inverse"}, {"Time", "06:30", "22:45"}, {"turnOn", id["CHAUDIERE"]}}) Je ne pense pas que tu puisses le faire directement, la condition est évaluée à chaque cycle mais ses composantes sont invariables. Par contre beaucoup plus lourd et pas sà»r que ça marche mais GEA possède dans ses conditions une possibilité de fonction: {“Functionâ€, function() return true or false, value end} Donc pour ta condition évoquée au dessur nous aurions: -- allumage de la chaudière entre lever et coucher du soleil, si présent et température < 19°C depuis 2 min -- Une fonctione est executée à chaque cycle: elle compare la valeur de la temperature du device id["TEMPERATURE"] avec la valeur -- de la variable globale 'T_CONSIGNE'. Si elle est inférieur alors elle retourne true GEA.add ({id["CHAUDIERE"], id["ALARMESTATUT"], {"Function", function() if ( tonumber(fibaro:getValue(id["TEMPERATURE"], "value")) < tonumber(fibaro:getGlobalValue('T_CONSIGNE'))) then return true end end},sceneON}, 2*60, "Chaudière ON", {{"Inverse"}, {"Time", "06:30", "22:45"}, {"turnOn", id["CHAUDIERE"]}}) C'est beaucoup plus lourd et attention aux erreurs de syntaxe. Il y a certainement plus simple.... Pour le VD pour mon bouton +0.5, qui ajoute 0.5 à la variable globale T_CONFORT: local temp = tonumber(fibaro:getGlobalValue('T_CONFORT')) temp = temp+0.5 if ( temp > 24 ) then temp = 24 end fibaro:setGlobal('T_CONFORT', temp) --Actualisation du VD fibaro:call(fibaro:getSelfId(),"setProperty", "ui.Label2.value",string.format("%.01f ",temp)) Nicolas
-
Bien vu, pas vraiment je m'y suis repris à4 fois..... -- Si ALARME inactive (donc active pour toi) ET SceneNOUNOU vrai depuis 60 s, ALORS si nous sommes Lundi, Mardi,... Vendredi, et qu'il est ente 15h30 et 15h31, démarrer alarme (donc arréter por toi) GEA.add ({id["ALARMEACT"],sceneNOUNOU}, 60 ,"Alarme OFF à15h30", {{"Inverse"},{"Days", "Monday, Tuesday,Thursday, Friday"},{"Time", "15:30","15:31"}, {"turnON", id["ALARMEACT"]}}) Nicolas
-
Il manque la duree du controle...... GEA.add ({id["ALARMEACT"],sceneNOUNOU}, 60 ,"Alarme OFF à15h30", {{"Inverse"},{"Days", "Monday, Tuesday,Thursday, Friday"},{"Time", "15:30","15:31"}, {"turnON", id["ALARMEACT"]}})
-
Oui c'est à cause de l'heure Il faut utiliser {"Time", "heure_de_debut","heure_de_fin"} Si tu veux réaliser l'action à "une heure précise", limite le champ à 1 minute ou 2: -- extinction de l'alarme à 15h30 le lundi mardi jeudi vendredi si appuie sur bouton ON NOUNOU GEA.add ({id["ALARMEACT"],sceneNOUNOU}, "Alarme OFF à 15h30", {{"Inverse"},{"Days", "Monday, Tuesday,Thursday, Friday"},{"Time", "15:30","15:31"}, {"turnON", id["ALARMEACT"]}})
-
Il manque une virgule entre Option DAYS et TIME,entre les accolades } et { : GEA.add ({id[60],sceneNOUNOU}, "Alarme OFF à 15h30", {{"Inverse"},{"Days", "Monday, Tuesday,Thursday, Friday"},{"Time", "15:30"}, {"turnON", id[60]}}) Concernant le coup de la nounou une semaine sur deux, je sais pas si ça peut aider mais pour certaines actions j'ai une variable globale qui se met à jour en fonction de mes horaires (je change 1 semaine sur 2, donc un peu le même cas). En fait j'utilise un modulo sur la semaine: if ( (tonumber(os.date("%V")))%2 == 1 ) then fibaro:setGlobal("TravailNicolas", "MATIN") else fibaro:setGlobal("TravailNicolas", "APRESMIDI") end Nicolas
-
Tu avais une erreur d'accolade dans tes lignes. sceneON est une condition, donc premier bloc de la ligne GEA local sceneON = {"Global","SceneON","ON"} local id = { CHAUDIERE = 103, ALARME = 54, TEMPERATURE = 49 } -- allumage de la chaudière entre lever et coucher du soleil, si présent et température < 19°C depuis 2 min -- Si CHAUDIERE=0 (flag Inverse) ET ALARME=1 ET TEMPERATURE<19 et SceneON=="ON" Depuis au moins 2 minutes ALORS si il est entre 06:30 et 22:45 arrète la Chaudiere GEA.add ({id["CHAUDIERE"], id["ALARME"], {"value-", id["TEMPERATURE"], 19},sceneON}, 2*60, "Chaudière ON", {{"Inverse"}, {"Time", "06:30", "22:45"}, {"turnOn", id["CHAUDIERE"]}}) -- extinction de la chaudière si température > 19.5°C depuis 10 min GEA.add ({{"value+", id["TEMPERATURE"], 19.5}, id["CHAUDIERE"],sceneON}, 5*60, "Chaudière OFF car température = #value#", {{"turnOff", id["CHAUDIERE"]}}) -- extinction de la chaudière si le soir GEA.add ({id["CHAUDIERE"],sceneON}, 1, "Chaudière OFF car Sunset", {{"Time", "22:45", "06:30"}, {"turnOff", id["CHAUDIERE"]}) -- extinction de la chaudière car alarme branchée depuis 1 min GEA.add ({id["ALARME"], id["CHAUDIERE"],sceneON}, 1*60, "Chaudière OFF car alarme branchée", {{"Inverse"}, {"turnOff", id["CHAUDIERE"]}}) end Pour que les 4 lignes GEA s'éxécutent, il faut positionner la Variable globale SceneON sur ON (enfin tu l'appelle comme tu veux tu moment que le code GEA suive bien le nom de cette dernière) J'ai commenté ta 1ere ligne car je pense qu'il y a erreur sur Alarme (dans le sens ou si alarme actif c'est que tu n'est pas présent) Nicolas
-
1ere solution, tu utilises GEA.getGlobalForActivation: GEA.getGlobalForActivation = {"GEA_Suspend", "non"} Dans ce cas lorsque la variable globale GEA_Suspend sera sur non, la scene sera en cours mais aucune action GEA ne sera exécutée.( Tu peux utiliser la variable globale que tu veux avec la valeur que tu veux) Donc création VD avec 2 boutons: -- CODE DANS BOUTONS OFF fibaro:setGlobal("GEA_Suspend", "oui") -- CODE DANS BOUTONS ON fibaro:setGlobal("GEA_Suspend", "non") 2eme solution tu ajoutes le controle d'une variable globale pour chaque condition: Création d'une variable globale SceneON local sceneON = {"Global","SceneON","ON"} local sceneOFF = {"Global","SceneON","OFF"} local id = { CHAUDIERE = 103, ALARME = 54, TEMPERATURE = 49 } -- allumage de la chaudière entre lever et coucher du soleil, si présent et température < 19°C depuis 2 min GEA.add ({id["CHAUDIERE"], id["ALARME"], {"value-", id["TEMPERATURE"], 19},sceneON}, 2*60, "Chaudière ON", {{"Inverse"}, {"Time", "06:30", "22:45"}, {"turnOn", id["CHAUDIERE"]}}) --La condition peut s'écrire aussi GEA.add ({id["CHAUDIERE"], id["ALARME"], {"value-", id["TEMPERATURE"], 19},{"Global","SceneON","ON"}}, 2*60, "Chaudière ON", {{"Inverse"}, {"Time", "06:30", "22:45"}, {"turnOn", id["CHAUDIERE"]}}) Création VD avec 2 boutons: -- CODE DANS BOUTONS ON fibaro:setGlobal("SceneON", "ON") -- CODE DANS BOUTONS OFF fibaro:setGlobal("SceneON", "OFF") La 1ere solution agit sur toute une scene alors que la seconde agit à la ligne. Pour agir sur la consigne/mode j'utilise un VD si ça t'interesse Nicolas
-
Cela va fonctionner pareil. Depuis le bouton ON de ton VD, tu lances fibaro:startScene(107). Mais en fait tu vas avoir plusieurs GEA de quelques lignes, dont le lancement sera conditionné depuis les boutons de ton VD c'est ça ? Dans ce cas tu peux peut être tout rassembler dans une seule scene GEA et utiliser une variable globale commutée via le bouton ON ou OFF de ton VD: -- Créér une variable globale sceneON -- dans le VD device, mettee comme code: fibaro:setGlobal("SceneON","ON") pour le bouton ON et fibaro:setGlobal("SceneON","OFF") pour le bouton OFF local sceneON = {"Global","SceneON","ON"} GEA.add ({id["CHAUDIERE"], id["ALARME"], {"value-", id["TEMPERATURE"], 19},sceneON}, 2*60, "Chaudière ON", {{"Inverse"}, {"Time", "06:30", "22:45"}, {"turnOn", id["CHAUDIERE"]}}) GEA peut aussi être "suspendu" via une variable prédéfinie dans le script: GEA.getGlobalForActivation = {<variable globale>, <valeur>} Exemple : GEA.getGlobalForActivation = {“SuspendreGEAâ€, “nonâ€} Tant que la variable globale “SuspendreGEA†sera à “non†le script continuera son action. Nicolas
-
@flamalex: Sous GEA, pour lancer une scene, à mettre dans les options: Nicolas
-
@domodial: ta condition variable doit être sur le déclencheur en second paramètre, par exemple: -- Au déclenchement de la VG EtatPortail sur Open, si VG Maison sur Absent GEA.add({{"Global", "EtatPortail", "open"},{"Global","Maison","Absent"}}, -1, "Portail ouvert à #time# le #date#") -- Au déclenchement du module CHOC_ENTREE si VG Maison sur Absent GEA.add({id["CHOC_ENTREE"],{"Global","Maison","Absent"}}, -1, "Choc porte entrée le #date# à #time#") -- ou encore local absent = {"Global","Maison","Absent"} GEA.add({id["CHOC_ENTREE"],absent}, -1, "Choc porte entrée le #date# à #time#")- La partie "Déclencheur" doit être comprises entre accolades; Chaque déclencheur séparé par une virgule. Le premier déclencheur est conditionné par la réussite des autres conditions Nicolas
- 12 330 réponses
-
- 1
-
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Donc ton problème apparait depuis l'ETHM-1. Première chose: vérifier le cablage (CLK, DTK + cable serie entre ETHM et INTEGRA) ET l'adressage de la carte. Nicolas
-
Bonjour, Peux tu donner plus de détails: Nouvelle Installation/premier démarrage? As tu essayé le mode service "depuis le cavalier reset"? Es tu sà»r du code service ou est ce une autre erreure qui empeche le mode service? Nicolas
-
Topic unique Fibaro - Module Volet Roulant "roller Shutter 2" Fgrm-221/fgrm-222
Nikko a répondu à un(e) sujet de Moicphil dans Modules Fibaro
Juste pour revenir sur l'interface je viens de noter quelque chose suite à une inclusion que je viens de faire: Il y a 2 semaines j'ai migré la box de 3.6 vers 4.056, tout c'est bien passé. Lorsque j'ai fais mes essais tout à l'heure, j'ai noté le problème que tu as remonté avec l'interface: Je me suis aperçu ensuite q'un de mes VR ne répondait plus aux aodres et pour cause il avait disparu de la box????? Bon procédure exclusion puis réinclusion pas de soucis et au moment de reconfigurer sur l'interface, il y a 1 différence, à savoir que cela redevient au niveau interface comme sur la 3.6: Dans ce cas précis l'interface est bien rafraichit après sauvegarde si je règle sur "no operation possible". Bien sà»r cela désactive bien les commandes locales. Y'a t'il le même genre de comportement chez vous ? Nicolas -
Topic unique Fibaro - Module Volet Roulant "roller Shutter 2" Fgrm-221/fgrm-222
Nikko a répondu à un(e) sujet de Moicphil dans Modules Fibaro
Pour mes inter j'ai des mécanismes CELIANE Montéee/STOP/Descente http://ecatalogue.legrand.fr/067601-inter-pour-volets-roulants-celiane.html Nicolas -
Ou alors c'est beaucoup plus lourd mais tu peux écrire un truc du genre (Je n'ai pas testé mais au niveau syntaxe ça me parait cohérent) : ouverture_armee = GEA.add (true, 60 , "" ,{{"turnOn",id["ECL_CAVE"]},{"NotStarted"},{"MaxTime",1}}) GEA.add({id["OUV_CAVE"]}, -1, "", {{"Armed"},{"RestartTask",ouverture_armee}}) Nicolas
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Topic unique Fibaro - Module Volet Roulant "roller Shutter 2" Fgrm-221/fgrm-222
Nikko a répondu à un(e) sujet de Moicphil dans Modules Fibaro
Salut, Je viens de tester sur un de mes VR. Même réaction que toi sur l'interface, à savoir qu'après modification et sauvegarde, je reste sur UNPROTECTED; Par contre la commande est bien prise en compte, à savoir que mon VR est inopérant via la commande locale Nicolas