Aller au contenu

Messages recommandés

Posté(e)

j'ai fait comme ça et ça fonctionne 

 

  -- Exctinction automatique après 30s
GEA.add({"Global", "MANUAUTO", "auto2"}, -1, "auto" , {
      {"Sleep", 1,  {"turnOn", id["CUISINE"]  }},  
      {"Sleep", 30, {"turnOff", id["CUISINE"] }},
      {"Sleep", 32, {"Global", "MANUAUTO", "auto"  }}  })

-- Allumage automatique LAMPE_PARKING sur detection --
GEA.add( {{"Value", 466, 1}, {"Global", "MANUAUTO", "auto"}}, -1,"", {{"Global", "MANUAUTO", "auto2"}})


-- Allumage manuel LAMPE_PARKING --
GEA.add(id["CUISINE"], -1, "", {{"Global", "MANUAUTO", "manu"}})
GEA.add({"Value", id["CUISINE"], 0}, -1, "", {{"Global", "MANUAUTO", "auto"}})

 

Posté(e)

Super parfait.

 

Mais je me demande toujours pourquoi tu poses les questions, on te propose du code, tu fais toujours différemment !! :P

  • Like 3
Posté(e)

Thank you @Steven and @pepite , The link to the new verion worked exelent and i have now change to that one. and with the explanation of multiple arguments for the new verion i have now started to clean up my functions. Unfortunately i may have done something wrong again of found a bug is i get this error in the "do not touch" code. Also ID 167 is my LUX sensor in the garage and at the moment is indicates zero but according to the event log if is operational and changes regularly. Best Regards, Daniel 

image.png

Posté(e)

Hi @Forall

Have you got lines GEA.add(167, -1, ""...)  ? If you have line only like this : GEa.add(167,30, ""...) like the message in red, you have to delete 167 value from the header of the scene. For the first error, could you paste your line 1921 please.

Posté(e)
Il y a 22 heures, pepite a dit :

Super parfait.

 

Mais je me demande toujours pourquoi tu poses les questions, on te propose du code, tu fais toujours différemment !! :P

je vois que Steven et Laser son du même avis que toi :D

Posté(e)

Dear @pepite, Thank you so much for helping me out with this. Line 1921 is "    message:gsub("({.-})", function(c) "  from section "

    message:gsub("({.-})", function(c) 
        local d = tools.split(c:gsub("{", ""):gsub("}", ""), ",")
        for i = 1, #d do 
          d = tools.trim(d)
          if (tools.isNumber(d)) then d = tonumber(d)
          elseif (d:lower()=="true") then d = true 
          elseif (d:lower()=="false") then d = false
          end
        end
        local res = GEA.getOption(d).getValue()
        if (type(res) == "nil") then res = "n/a" end
        message = message:gsub(c, tostring(res))
    end)     
"

 

Regarding Lux meter 167, I had it in the heading to collect the data but not started adding the code yet, so removing it and only adding the once i have a function ready for solved that one :) 

 

Are these correct functions? got a little confused with the multiple conditions structure with PIR activation:

--Turn on outdoor lights on front side of the house PIR dependent during the night and turn of 5 min later
  GEA.add(id["FramsidePIR"], -1, "", {{"Global", "Solen", "Natt"}}, {{"turnOn", id["EntreLampa"]}, {"turnOn", id["UppfartenLampa"]},{"turnOn", id["GangLampa"]}}) -- when PIR notice movement, but only during night time, turn on 3 lamps  
  GEA.add(id["FramsidePIR"], 5*60, "", {{"Global", "Solen", "Natt"}}, {{"turnOff", id["EntreLampa"]}, {"turnOff", id["UppfartenLampa"]}, {"turnOff", id["GangLampa"]}}) -- 5 min after the movement stops, still only during night time, turn of the affected lamps

--Outdoor Lightning
  -- get variable Sun='Solen' through the day using timers to avoid LUX meters to activete the light on inproper times 
  GEA.add( {{"Time", "05:00", "05:02"}}, 30 , {{"Global", "Solen", "Gryning"}}) - check every 30 sec and if time is between 05:00-05:02 state that it is twilight in the global variable
  GEA.add( {{"Time", "09:00", "09:02"}}, 30 , {{"Global", "Solen", "Dag"}, {"Global", "Pool", "Släck"}}) -- check every 30 sec and if time is between 09:00-09:02 state that it is daytime and the the pool light variable should be set to off
  GEA.add( {{"Time", "14:00", "14:02"}}, 30 , {{"Global", "Solen", "Eftermiddag"}})
  GEA.add( {{"Time", "22:00", "22:02"}}, 30 , {{"Global", "Solen", "Sen kväll"}})

  
  -- Control Variable 'Sun' (Solen)with LUX meeters morning and afternoon 
  GEA.add( {{"Value+", id["FramsidanLUX"], 150} , {"Global", "Solen", "Gryning"}}, 30 , {{"Global", "Pool", "Släck"}, {"turnOFF", id["EntreLampa"]}, {"turnOff", id["UppfartenLampa"]}, {"turnOff", id["GangLampa"]}, {"turnOff", id["AltanLampa"]}, {"turnOff", id["PoolLampa"]}, {"Global", "Solen", "Dag"}})    --check every 30 sec and if the lux is above 150 and it is twilight turn of a bunch of lamps and state that it is daytime and pool lights off
  GEA.add( {{"Value+", id["BaksidanLUX"], 150} , {"Global", "Solen", "Gryning"}}, 30 , {{"Global", "Pool", "Släck"}, {"turnOFF", id["EntreLampa"]}, {"turnOff", id["UppfartenLampa"]}, {"turnOff", id["GangLampa"]}, {"turnOff", id["AltanLampa"]}, {"turnOff", id["PoolLampa"]}, {"Global", "Solen", "Dag"}})   -- same as above but on the other side of the house
  GEA.add( {{"Value-", id["FramsidanLUX"], 25} , {"Global", "Solen", "Eftermiddag"}}, 30, {{"Global", "Pool", "Tänd"}, {"turnOn", id["EntreLampa"]}, {"turnOn", id["UppfartenLampa"]}, {"turnOn", id["GangLampa"]}, {"turnOn", id["AltanLampa"]}, {"Global", "Solen", "Kväll"}})   ----check every 30 sec and if the lux is below 25 and it is afternoon turn on a bunch of lamps and state that it is evening and pool lights on
  GEA.add( {{"Value-", id["BaksidanLUX"], 25} , {"Global", "Solen", "Eftermiddag"}}, 30, {{"Global", "Pool", "Tänd"}, {"turnOn", id["EntreLampa"]}, {"turnOn", id["UppfartenLampa"]}, {"turnOn", id["GangLampa"]}, {"turnOn", id["AltanLampa"]}, {"Global", "Solen", "Kväll"}})   

 

Posté(e)


Hi @Forall,


You got a problem with brakets {} ... look at your first line :


--Turn on outdoor lights on front side of the house PIR dependent during the night and turn of 5 min later
  
GEA.add(id["FramsidePIR"], -1, "", {{"Global", "Solen", "Natt"}}, {{"turnOn", id["EntreLampa"]}, {"turnOn", id["UppfartenLampa"]},{"turnOn", id["GangLampa"]}}) -- when PIR notice movement, but only during night time, turn on 3 lamps  


If your framsidePIR is activated you want to turnOn 3 lamps and set the global variable "Solen" to "Natt" ... ok but you put en extra {} killing GEA.

 

If you want 1 simple action, you can write it like this :

GEA.add(id["FramsidePIR"], -1, "", {"Global", "Solen", "Natt"})

 

If you want multiple actions, you have to enclose them between {} like this :

GEA.add(id["FramsidePIR"], -1, "", 
    {
         {"Global", "Solen", "Natt"},
         {"TurnOn", id["UppfartenLampa"]}
    }
)

 

In your case, your first line should be :

GEA.add(id["FramsidePIR"], -1, "", 
    {
         {"Global", "Solen", "Natt"},
         {"TurnOn", { id["UppfartenLampa"], id["EntreLampa"], id["GangLampa"] }}
    }
)

  • Like 2
Posté(e)

Dear @Steven, unfortionatly the log shows that each time i get movement it interperate the code as seting the varible to night instead of if night

 

 GEA.add(id["FramsidePIR"], -1, "", 
    {
         {"Global", "Solen", "Natt"}, --if nighttime
         {"TurnOn", { id["UppfartenLampa"], id["EntreLampa"], id["GangLampa"] }} -- turn on lights
    }
)

 

Best regards,

Daniel

Posté(e) (modifié)

Hello les experts GEA 

 

J'ai un souci de gestion des conditions dans GEA 11 avec les conditions suivantes :

 

GEA.add({{"Label", id["VD_HomeMode_Manager"],   "lblMichel", "X Présent"}
        }, -1, "Michel vient d'arriver de la maison",
		{{"Popup", "Info","HomeMode", "Michel vient d'arriver de la maison"}
		}, "Michel vient d'arriver de la maison")

GEA.add({{"Label", id["VD_HomeMode_Manager"],   "lblMichel", "Y Absent"}
        }, -1, "Michel vient de quitter de la maison",
		{{"Popup", "Info","HomeMode", "Michel vient de quitter de la maison"}
		}, "Michel vient de quitter de la maison")

GEA.add({{"Label", id["VD_HomeMode_Manager"],   "lblGaby", "X Présent"}
        }, -1, "Michel vient d'arriver de la maison",
		{{"Popup", "Info","HomeMode", "Gaby vient d'arriver de la maison"}
		}, "Gaby vient d'arriver de la maison")

GEA.add({{"Label", id["VD_HomeMode_Manager"],   "lblGaby", "Y Absent"}
        }, -1, "Michel vient de quitter de la maison",
		{{"Popup", "Info","HomeMode", "Gaby vient de quitter de la maison"}
		}, "Gaby vient de quitter de la maison")

Mon problème est le suivant :

 

J'ai déclaré dans l'entête les 2 labels : lblMichel et lblGaby

Lorsque le label lblMichel avec la valeur "X Présent" j'ai bien

  • le message "Michel vient d'arriver de la maison"

Mais le problème est que j'ai également :

  • le message "Gaby vient d'arriver de la maison" si le contenu du label lblGaby contient "X Présent"
  • le message "Gaby vient de quitter la maison" si le contenu du label lblGaby contient "Y Absent"

Alors que la label lblGaby n'a pas été modifié

 

Ma question est donc la suivante :

  • Comment faire pour que les conditions relatives au label lblGaby ne soit pas évaluée (dans l'exemple donné) lors de déclenchement de GEA lors de la modification du label lblMichel ?
Modifié par MAM78
Posté(e)

Je n'ai aucun ordinateur à la maison car je n'en veux pas et au travail, je suis sur un projet qui prend 110% de mon temps. Quant à @pepite, il a d'autre chose personnelle bien plus importante à traiter.

 

Donc, en gros, on a largement autre chose à faire et je ne pense pas que ton problème soit vraiment urgent.

Le 17/01/2019 à 21:00, Forall a dit :

Dear @Steven, unfortionatly the log shows that each time i get movement it interperate the code as seting the varible to night instead of if night

 

 GEA.add(id["FramsidePIR"], -1, "", 
    {
         {"Global", "Solen", "Natt"}, --if nighttime
         {"TurnOn", { id["UppfartenLampa"], id["EntreLampa"], id["GangLampa"] }} -- turn on lights
    }
)

 

Best regards,

Daniel

 

Change it like this

 

GEA.add( {id["FramsidePIR"], {"Global", "Solen", "Nat"}}, -1, "", {"TurnOn", {id["UppfartenLampa"], id["EntreLampa"], id["GangLampa"]}}) 

  • Like 1
Posté(e)

Bonjour a tous j'ai une petite question sans doute déjà évoqué dans le support je souhaiterais changer la valeur d'un slider d'un vd j'ai tapé la ligne suivant :

 

GEA.add({"Global", "", ""}, 30, "",{{id["VD_HEOS_SDB_P"],"slider", 21}})

malheureusement cela ne fonctionne pas.

 

une idée

Posté(e)
Il y a 2 heures, Steven a dit :

Je n'ai aucun ordinateur à la maison car je n'en veux pas et au travail, je suis sur un projet qui prend 110% de mon temps. Quant à @pepite, il a d'autre chose personnelle bien plus importante à traiter.

 

Donc, en gros, on a largement autre chose à faire et je ne pense pas que ton problème soit vraiment urgent.

Je comprends bien ta réaction à ma sollicitation, désolé celle-ci t'a agacée. Je patienterais le temps qu'il faudra ou j'essayerais de trouver par moi-même la solution qu'évidement je partagerais comme à mon habitude. Voir MP sur le sujet.

Posté(e) (modifié)
Le 18/01/2019 à 20:59, MAM78 a dit :

J'ai déclaré dans l'entête les 2 labels : lblMichel et lblGaby

Lorsque le label lblMichel avec la valeur "X Présent" j'ai bien

  • le message "Michel vient d'arriver de la maison"

Mais le problème est que j'ai également :

  • le message "Gaby vient d'arriver de la maison" si le contenu du label lblGaby contient "X Présent"
  • le message "Gaby vient de quitter la maison" si le contenu du label lblGaby contient "Y Absent"

Alors que la label lblGaby n'a pas été modifié

 

Ma question est donc la suivante :

  • Comment faire pour que les conditions relatives au label lblGaby ne soit pas évaluée (dans l'exemple donné) lors de déclenchement de GEA lors de la modification du label lblMichel ?

Après quelques recherches et analyse du code GEA, je pense que cette fonctionnalité n'est pas disponible en l'état dans GEA 6.11. J'espère ne pas me tromper sur mon analyse :huh: Je même surpris d'être le premier à rencontrer cette situation.

 

J'ai donc entrepris de voir comment ajouter cette fonctionnalité à GEA et qui est toutefois relativement simple à mettre en oeuvre ;)

 

Rappel de mon PB exposé précédemment. Lorsque l'on déclenche des actions GEA selon les états de plusieurs label d'un même VD et qu'on les utilises comme conditions. A chaque execution de GEA du fait d'un changement d'un des labels, l'ensemble des conditions utilisant ce VD sont vérifiées (même si les autres labels n'ont pas été modifié) et si ces conditions pour sont vrais alors les actions associées sont exécutées. Ce qui peut être gênant lorsque si l'on veut déclencher seulement les conditions liées aux labels qui ont changé de valeur et pas les autres. C'est exactement mon cas exposé dans l'exemple ci-dessus. Fonctionnellement ce n'est pas parce que Michel vient d'arriver à la maison que pour autant Gaby vient également d'arriver ou de partir de la maison. J'espère avoir été clair. Cf. l'image de mon VD ci-dessous.

 

image.png.b69cde94b7bb4a5624f7ac785134bfde.png

 

Pour traité ces cas de figures :

  • je passe par l'utilisation de la propriété propertyName de la fonction fibaro:getSourceTrigger() qui retourne la nom du label qui a déclenché (trigger) le lancement de la scène GEA.
  • et donc l'ajout de la nouvelle fonction GEA ci-dessous. Il convient de l'ajouter dans la liste des fonctions renseignées dans la partie : function config()
  GEA.options.triggerpropertyname = { name = "TriggerPropertyName",getValue=function() if (GEA.source.type == "property") then return GEA.source.propertyName:gsub("ui.", ""):gsub(".value", "") end return "other" end}

 

Dès lors, vous pouvez ajouter dans vos conditions une condition additionnelle qui va tester quel est le label qui à déclencher GEA. CQFD :74:

 

Voici quelques lignes d'exemples d'utilisation :

GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblMichel", "X Présent"}
        ,{"TriggerPropertyName", "lblMichel"}}
        ,-1, "Michel arrive de la maison")      

GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblMichel", "Y Absent"}
        ,{"TriggerPropertyName", "lblMichel"}}
        ,-1, "Michel quitte la maison")

GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblGaby", "X Présent"}
        ,{"TriggerPropertyName", "lblGaby"}}
        ,-1, "Gaby arrive de la maison")

GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblGaby", "Y Absent"}
        ,{"TriggerPropertyName", "lblGaby"}}
        ,-1, "Gaby quitte la maison")

 

Peut-être que @Steven trouvera cette nouvelle fonction pertinente et l'intégrera dans les fonctions de base dans une future version de GEA :13: peut-être la 6.12 ?

 

 

Modifié par MAM78
Posté(e) (modifié)

Il y a beaucoup de choses qui ne vont pas dans ta ligne ci-dessous :

  • Il manque le nom de ta variable globale ici (en rouge) qui est en condition. cf. Syntaxe : {"Global", <nom variable>, <valeur>}
  • Il manque la valeur de ta variable globale tu veux tester (en vert). cf. Syntaxe : {"Global", <nom variable>, <valeur>}
  • Il manque le mot qui détermine l'action que tu veux réaliser (en violet) "Label" ou "Slider" selon la syntaxes suivante : {"Slider", <id_vd>, <id_label>, <valeur>} ou {"Label", <id_vd>, <id_label>, <valeur>}
  • Si tu veux un déclenchement automatique selon un changement de valeur de la variable globale, il faut mette -1 (en bleu) à la place de ton nombre 30.
Il y a 11 heures, soulac a dit :

GEA.add({"Global", "", ""}, 30, "",{{id["VD_HEOS_SDB_P"],"slider", 21}})

 

Soit une fois corrigé, ça devrait donner ça :

 

GEA.add({"Global", "xxxx", "yyyy"}, -1, "",{"Label", id["VD_HEOS_SDB_P"], "slider", 21})

 

en supposant que "slider" correspond au nom du label du VD dont l'id est VD_HEOS_SDB_P que tu as préalablement déclaré dans la partie function setEvents() ainsi que la variable Global dans l'entête de GEA après :

 --[[
%% autostart
%% properties

 

Je t'invite à étudier la documentation des fonctions GEA rédigée par @pepite et rappelée à la fin du tutoriel de @Steven ici : 

 

Modifié par MAM78
Posté(e)
Il y a 22 heures, Steven a dit :

Je n'ai aucun ordinateur à la maison car je n'en veux pas et au travail, je suis sur un projet qui prend 110% de mon temps. Quant à @pepite, il a d'autre chose personnelle bien plus importante à traiter.

 

Donc, en gros, on a largement autre chose à faire et je ne pense pas que ton problème soit vraiment urgent.

 

Change it like this

 

GEA.add( {id["FramsidePIR"], {"Global", "Solen", "Nat"}}, -1, "", {"TurnOn", {id["UppfartenLampa"], id["EntreLampa"], id["GangLampa"]}}) 

Thank you very much @Steven, For me there was never any hurry but i sincerely appreciate all the time you have put into both developing GEA and for the support you give :)

The new code looks like it is working as it should!

 

I quite often envy those that have the same discipline as you, and not having the computer at home working evenings and weekends...

 

Posté(e)

Bonjour,

 

PAs très présent en ce moment, désolé @MAM78

 

Cela existe déjà en natif comme ceci, à voir si cela répond à ton besoin

 

GEA.add({"Property", id["VD_HomeMode_Manager"], "lblMichel", "X Présent"}, -1, .....)

@soulac Pour modifier un SLIDER c'est comme ceci :


 

{"Slider", <id_vd>, <num_slider>, <valeur>}

GEA.add({CONDITIONS}, 30, "", {"Slider", 77, "15", 18})

 

Posté(e)
il y a 27 minutes, pepite a dit :

Cela existe déjà en natif comme ceci, à voir si cela répond à ton besoin

Merci @pepite J'ai bien essayé ta proposition, mais elle ne fonctionne pas. Je l'ai même modifiée puisqu'il me semble que la syntaxe devrait être la suivante : il manquait "ui." et ".value"

GEA.add({"Property", id["VD_HomeMode_Manager"], "ui.lblGaby.value", "X Présent"},-1, "Gaby arrive de la maison")

Comme exposé précédemment à chaque modification d'un des labels, les autres conditions sont évaluées et si elle sont vraies elles exécutes les actions alors qu'il n'y a pas eu modification des autres label. Il faut donc identifier à chaque passage quel est le label qui a été modifié.

 

Il y a 11 heures, MAM78 a dit :

{"Slider", <id_vd>, <id_label>, <valeur>} ou {"Label", <id_vd>, <id_label>, <valeur>}

c'est également ce que j'avais indiqué ci-dessus ;)

×
×
  • Créer...