Aller au contenu

Recommended Posts

Il y a 2 heures, fredokl a dit :

Salut. Je cherche à savoir si GEA permet plusieurs valeurs sur une variable dans les conditions.

Je ne pense pas comme ça, mais de cette façon ce sera bon :

 

GEA.add({"Or"
  ,{"Global","NameVG", "1"}
  ,{"Global","NameVG", "2"}
  ,{"Global","NameVG", "3"}
  ,{"Global","NameVG", "4"}
  ,{"Global","NameVG", "5"}}
  , 30 , "", {"Global","AutreVG","Résultat à afficher"})

 

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

@MAM78 Merci pour l'initiative du post sur les options personnelles. bonne idée. :13:

 

@fredokl tu ne peux pas, soit tu utilises la solution de @MAM78 avec Or, qui est tout à fait exacte, soit tu "triches" comme ceci :

 

GEA.add({"Global!","NameVG", "0"}, 30 , "", {"Global","AutreVG","Résultat à afficher"})

 

Quand ta variable globale prendra les valeurs 1,2, 3, 4 ou 5, la ligne sera toujours considérée "VRAIE" par GEA puisque les valeurs seront toujours différentes de "0" :60:

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 17 heures, soulac a dit :

pourquoi quand je change mes id de module en non cela ne fonctionne pas ?


  --GEA.add({"turnOn", 299}, 30, "", {"turnOff", 299}) ok fonctionne
GEA.add({"turnOn",id[SPOT_ENTREE]}, 30, "", {"turnOff",id[SPOT_ENTREE]})

le message de débug est le suivant :

sommes nous d'accord que les id à renseigné sont juste après function config() comme ceci ?

 


function config() 
  	local id = { 
	-- entree
	OUVERTURE_ENTREE = 280,
    SPOT_ENTREE = 299,
	SPOT_ENTREE_EXTERIEUR = 297,

 

bonjour messieurs désoler de vous déranger pour une question bête mais je ne comprends pas le message d'erreur quand je modifie mon numéro ID par un non voir le message du dessus.

Merci pour votre aide 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

2 choses :

  - ta déclaration d'IDs doit se trouver dans setEvents() et non config()

  - l'ecriture des tes ids dans tes lignes doit se faire comme cela :

      -- >

id[SPOT_ENTREE] en id["SPOT_ENTREE"]

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Il est possible de tester ceci  mais je ne suis pas certain du résultat qui aura dans #value#

 

GEA.add({"Global","NameVG", "#r#1|2|3|4|5"}, 30 , "", {"Global","AutreVG","#value#"})

Mais cela devrait fonctionner.

  • Like 1
  • Thanks 2

Partager ce message


Lien à poster
Partager sur d’autres sites

@pepite super merci pour les informations cela fonctionne.

 

Afin d’être moins bête que doit on mettre dans config() 

Partager ce message


Lien à poster
Partager sur d’autres sites

GEA.checkEvery = 30                                         --- spécifié la fréquence de rafraichissement de GEA
GEA.portables = {256}                                       -- tableau des portables pour l'envoi de notification
GEA.globalvariables = "GEA_Tasks6"                   -- Nom de la variable globale à utiliser
GEA.language = "fr"                                          -- langue pour l'affichage

GEA.pluginsvariables  = "GEA_Plugins"                -- Nom de la variable globale utilisée pour les plugins

GEA.debug             = false                                -- true si on souhaite que GEA devienne très bavard

GEA.showRoomNames = true                             -- false si on ne souhaite pas voir le nom de la pièce dans #name#

GEA.batteriesWithRoom = GEA.showRoomNames  -- comme showRoomNames mais uniquement pour {"Batteries", <niveau>}

 

GEA.output = nil                                                -- permet de contourner/supprime l'envoi des notifications fibaro

exemple

GEA.output = function(message) 

   -- faire ce qu'on veux avec le message

end

 

GEA.options.xxxxxxx                                         -- toutes les options utilisateurs (voir quelques exemples sur le site)

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Il y en a d'autres que je garde secrète car elles sont utilisées uniquement pour le bon fonctionnement de GEA et n'apporteraient rien à l'utilisateur.

Partager ce message


Lien à poster
Partager sur d’autres sites

@Steven j'ai une suggestion à te faire concernant la mise en forme/filtrage des données qu'il est parfois nécessaire d'appliquer sur les données sources que nous récupérons dans nos devices, VD, VG, source externe via des commandes API, ... et que nous testons pour vérifier une condition.

 

Est-ce qu'il serait envisageable de pouvoir ajouter un tag (exemple : "[Ma_Function, Paramètre1]") dans les fonctions GEA qui correspondrait à une fonction GEA. Cette fonction recevrait la donnée source brute (propriété du devices, Label d'un VD, VG, source externe via des commandes API) et cette fonction appliquera une transformation/mise en forme (en utilisant éventuellement un ou des paramètres optionnelles) et ce serait cette donnée transformée qui serait vérifiée par GEA évaluée la condition ou restituée pour les actions.

 

Cela ouvrirait des grandes possibilités de création de nouvelles fonctions soit par les utilisateurs ou au sein même de GEA. Comme par exemple :

  • StringToNumber qui utilisable à n'importe quel source (Label, VG, source externe via des commandes API, ... )
  • JSONDecodeFromGlobal pourrait devenir une fonction JSONDecode qui serait applicable à n'importe quel source (Label, VG, ...)

Partager ce message


Lien à poster
Partager sur d’autres sites

@MAM78, @pepite, @Steven Merci à vous. Je vais tester la proposition de Steven car c'est la moins longue à mettre en place.

Pour celle de petite, je ne pourrais pas l'utiliser car je dois vraiment utiliser les chiffres [,2,3,4,5,etc...).

En fait j'ai besoin de savoir quand je suis en semaine paire ou impaire. Pour connaître le numéro de semaine, j'utilise un VD que j'ai récupéré sur le forum officiel (enfin je crois) et ensuite je rentre le résultat dans une variable.

En fait j'en ai besoin par rapport à mon travail car j'ai des plannings différents en fonctions des semaines paires ou impaires.

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 21 heures, MAM78 a dit :

@Steven j'ai une suggestion à te faire concernant la mise en forme/filtrage des données qu'il est parfois nécessaire d'appliquer sur les données sources que nous récupérons dans nos devices, VD, VG, source externe via des commandes API, ... et que nous testons pour vérifier une condition.

 

Est-ce qu'il serait envisageable de pouvoir ajouter un tag (exemple : "[Ma_Function, Paramètre1]") dans les fonctions GEA qui correspondrait à une fonction GEA. Cette fonction recevrait la donnée source brute (propriété du devices, Label d'un VD, VG, source externe via des commandes API) et cette fonction appliquera une transformation/mise en forme (en utilisant éventuellement un ou des paramètres optionnelles) et ce serait cette donnée transformée qui serait vérifiée par GEA évaluée la condition ou restituée pour les actions.

 

Cela ouvrirait des grandes possibilités de création de nouvelles fonctions soit par les utilisateurs ou au sein même de GEA. Comme par exemple :

  • StringToNumber qui utilisable à n'importe quel source (Label, VG, source externe via des commandes API, ... )
  • JSONDecodeFromGlobal pourrait devenir une fonction JSONDecode qui serait applicable à n'importe quel source (Label, VG, ...)

Je ne comprends malheureusement pas vraiment ce que tu souhaites, un exemple serait le bien venu.

 

Pour l'instant, il y a toujours le moyen d'utiliser {"Function", function() ... end} pour les traitements que ne comprend pas GEA. Tu pourrais aussi faire un truc du genre

 

{"StringToNumber", "12", {"Global", "Test"}}   ... mais ça tu l'as déjà fait.

 

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 15 heures, fredokl a dit :

@MAM78, @pepite, @Steven Merci à vous. Je vais tester la proposition de Steven car c'est la moins longue à mettre en place.

Pour celle de petite, je ne pourrais pas l'utiliser car je dois vraiment utiliser les chiffres [,2,3,4,5,etc...).

En fait j'ai besoin de savoir quand je suis en semaine paire ou impaire. Pour connaître le numéro de semaine, j'utilise un VD que j'ai récupéré sur le forum officiel (enfin je crois) et ensuite je rentre le résultat dans une variable.

En fait j'en ai besoin par rapport à mon travail car j'ai des plannings différents en fonctions des semaines paires ou impaires.

Si tu as besoin de savoir si c'est une semaine pair ou impair, voici ce que tu peux faire :

 

GEA.add( {"Frequency", "Monday", 2}, ..., "Lundi semaine pair")
GEA.add( {"Frequency", "Monday", 1}, ..., "Lundi semaine impair")

Par contre, il n'est pas possible de préciser plus d'un jour. Si tu veux faire tout les jours d'une semaine pair, tu peux aussi faire ainsi en ajoutant ta propre option :

 

function config() 
  -- ===================================================
  GEA.options.isoddweek = { name = "Semaine Pair",
    	getValue=function() return os.date("%w") % 2 == 0 end,
    }
  -- =================================================== 
end

function setEvents() 
  -- ==========================================================
	GEA.add({"IsOddWeek"}, 0, "Semaine pair")
  	GEA.add({"IsOddWeek!"}, 0, "Semaine impair")
  -- =========================================================== 
end

Le isOddWeek fera partie de la 6.12 à venir quand j'aurais le temps. :( et après, il te suffira simplement de supprimer dans ton config()

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 2 heures, Steven a dit :

Pour l'instant, il y a toujours le moyen d'utiliser {"Function", function() ... end} pour les traitements que ne comprend pas GEA. Tu pourrais aussi faire un truc du genre

 

{"StringToNumber", "12", {"Global", "Test"}}   ... mais ça tu l'as déjà fait.

 

J'ai supposé qu'il n'était pas possible d'imbriquer les fonction GEA (cf. ma question antérieur), d'où ma suggestion.

 

Je viens d'essayer ta proposition ci-dessus, mais elle ne fonctionne pas pour un label. Je n'ai pas fait le test pour une VG.

 

Voici mon test :

GEA.add({{"RegEx", {"Label", id["VD_HomeMode_Manager"], "lblGaby"}, "Absent"}
        ,{"Trigger", "lblGaby"}}
        ,-1, "StringToAlpha"
        ,{"Push", {id["PHONE_ID_Michel"]}}
        ,"StringToAlpha")

Le problème est que ma fonction "RegEx" reçoit la valeur nil et non le contenu du label.

 

EDIT : je suppose donc que la fonction "Label" n'est pas exécutée avant la fonction "RegEx"

 

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

Je confirme selon cette syntaxe. il n'y a pas de passage dans la fonction Label.

 

Est-ce qu'il y a un problème dans ma syntaxe ou est-ce qu'il n'est pas possible en l'état d'imbriquer des formules dans la partie condition ?

Partager ce message


Lien à poster
Partager sur d’autres sites

@MAM78 je ne comprends plus, pourquoi tu n'utilises pas les RegEx natifs de GEA alors ?

 

GEA.add({ {"Label", id["VD_HomeMode_Manager"], "lblGaby","#r#Absent"}
        ,{"Trigger", "lblGaby"}}
        ,-1, "StringToAlpha"
        ,{"Push", {id["PHONE_ID_Michel"]}}
        ,"StringToAlpha")

 

Partager ce message


Lien à poster
Partager sur d’autres sites

ah ok, j'ai rater des posts ;-)

 

Quelle est ton option RegEx alors ?

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Thank you all for great help now my Gea works as it should with some 40 functions ;) 

 

For my next function i am wondering if there is any possibility to use randomization ( i know true randomization is impossible). The idea is that if the alarm system is armed then during the late night run a couple of parallel functions at "random" times between 21:45-23:00, turning off different groups of lights in each function. 

 

eg. Monday/day 1 -- 22:06 turn off Lights 1-3, 22:16 turn of lights 4-6, 22:59 turn off lights 7-10

     Tuesday/day 2 -- 21:46 turn off Lights 7-10, 22:08 turn of lights 4-6, 22:22 turn off lights 1-3

 

Any brilliant ideas or solutions?

 

Best regards, 

Daniel

Partager ce message


Lien à poster
Partager sur d’autres sites

@StevenMerci de prendre le temps de trouver des solutions. C'est cool!:60:

Le jour n'est pas important pour moi, ce qui m'importe le plus c'est la semaine. J'ai des horaires réguliers mais sur deux types de semaines. Alors juste le fait de savoir que je suis en semaine paire ou impaire me suffit. Peut-être que ta proposition pourra en intéresser d'autres. Je la garde quand même sous le coude au cas où.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir a tous.

 

l'un de vous pourrait il me rappeler SVP  la ligne de condition qui teste sur un wallplug est on ? 

 

j'ai fait ces lignes et me manque la condition secondaire :):

 

--Vérif des cameras mal allumées
GEA.add({{"Armed", id["Porte_Entree"]},{"---------", id["Prise_Camera_Salon"]}},30,"camera Salon mal Allumée", {"TurnOn", id["Prise_Camera_Salon"]})
GEA.add({{"Armed", id["Porte_Entree"]},{"---------", id["Prise_Camera_Couloir"]}},30,"camera Couloir mal Allumée", {"TurnOn", id["Prise_Camera_Couloir"]})
GEA.add({{"Armed", id["Porte_Entree"]},{"---------", id["Prise_Camera_Chambre"]}},30,"camera Chambre mal Allumée", {"TurnOn", id["Prise_Camera_Chambre"]})
GEA.add({{"Armed", id["Porte_Entree"]},{"---------", id["Prise_Camera_ChambreAmis"]}},30,"camera Chambre dami mal Allumée", {"TurnOn", id["Prise_Camera_ChambreAmis"]})
  

 

Modifié par schwinny

Partager ce message


Lien à poster
Partager sur d’autres sites

-- Si le détecteur Cuisine est activé et le WP est off on allume le WP de la machine Nespresso
GEA.add({{id["MOUVEMENT_CUISINE"]}, {id["WP_Nespresso"]}}, -1  , "", {{"Inverse", 2} , {"turnOn", id["WP_Nespresso"]}}, "Mise en marche du Wall Plug Nespresso")
 

j'utilise {"Inverse", 2} pour vérifier si le WP est off. donc si tu ne mets pas {"Inverse", 2} la condition correspond à l'état on.

 

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

Plutôt qu'allumer électriquement, il ne serait pas préférable de désactiver tes caméras plutôt que les éteindre électriquement.

 

Selon la même logique que celle que j'utilise avec mon gestionnaire de cameras sous Surveillance Station.

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci @MAM78 :)

 

Pour mes cams, elles sont sur Wallplug et quand je rentre, l'alarme est coupé et les cams aussi.

quand je pars c'est l'inverse mais en cas de soucis sur l'activation, GEA réactivera cela :)

Et si une zone est mal armée, je la rearme via GEA :) 

 

 

 

 --Verif des Zones mal armées
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_TV"]}},30,"Oeuil TV mal armé", {"setArmed", id["Oeuil_TV"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Canape"]}},30,"Oeuil Canape mal armé", {"setArmed", id["Oeuil_Canape"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Cuisine"]}},30,"Oeuil Cuisine mal armé", {"setArmed", id["Oeuil_Cuisine"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Douche"]}},30,"Oeuil Douche mal armé", {"setArmed", id["Oeuil_Douche"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_SDB"]}},30,"Oeuil SDB mal armé", {"setArmed", id["Oeuil_SDB"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_SDB_Lavabo"]}},30,"Oeuil SDB Lavabo mal armé", {"setArmed", id["Oeuil_SDB_Lavabo"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_WC"]}},30,"Oeuil WC mal armé", {"setArmed", id["Oeuil_WC"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_WC_2"]}},30,"Oeuil WC2 mal armé", {"setArmed", id["Oeuil_WC2"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Couloir_Entree"]}},30,"Oeuil Couloir Entree mal armé", {"setArmed", id["Oeuil_Couloir_Entree"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Couloir_Salon"]}},30,"Oeuil Couloir Salon mal armé", {"setArmed", id["Oeuil_Couloir_Salon"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Couloir_Chambre"]}},30,"Oeuil Couloi Chambre mal armé", {"setArmed", id["Oeuil_Couoir_chambre"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Chambre"]}},30,"Oeuil Chambre mal armé", {"setArmed", id["Oeuil_Chambre"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Chambre2"]}},30,"Oeuil Chambre 2 mal armé", {"setArmed", id["Oeuil_Chambre2"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeuil_Chambre_Dami"]}},30,"Oeuil Chambre dami mal armé", {"setArmed", id["Oeuil_Chambre_Dami"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Oeil_Chambre_Dami2"]}},30,"Oeuil Chambre dami 2 mal armé", {"setArmed", id["Oeuil_Chambre_Dami2"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Fenetre_Salon"]}},30,"Fentre Salon mal armée", {"setArmed", id["Fenetre_Salon"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Fenetre_Cuisine"]}},30,"Fenetre Cuisine mal armée", {"setArmed", id["Fenetre_Cuisine"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Fenetre_Chambre"]}},30,"Fenetre Chambre mal armée", {"setArmed", id["Fenetre_Chambre"]})
  GEA.add({{"Armed", id["Porte_Entree"]},{"Disarmed", id["Fenetre_Chambre_Dami"]}},30,"Fenetre Chambre Dami mal armée", {"setArmed", id["Fenetre_Chambre_Dami"]})
    
  --Vérif des cameras mal allumées
  GEA.add({{"Armed", id["Porte_Entree"]},{id["Prise_Camera_Salon"]}},30,"camera Salon mal Allumée", {{"Inverse", 2},{"TurnOn", id["Prise_Camera_Salon"]}})
  GEA.add({{"Armed", id["Porte_Entree"]},{id["Prise_Camera_Couloir"]}},30,"camera Couloir mal Allumée", {{"Inverse", 2},{"TurnOn", id["Prise_Camera_Couloir"]}})
  GEA.add({{"Armed", id["Porte_Entree"]},{id["Prise_Camera_Chambre"]}},30,"camera Chambre mal Allumée", {{"Inverse", 2},{"TurnOn", id["Prise_Camera_Chambre"]}})
  GEA.add({{"Armed", id["Porte_Entree"]},{id["Prise_Camera_ChambreAmis"]}},30,"camera Chambre dami mal Allumée", {{"Inverse", 2},{"TurnOn", id["Prise_Camera_ChambreAmis"]}})
  

Pour les cams, je préfère les couper pour raisons de confidentialité... On ne sait jamais :) 

 

 

Modifié par schwinny

Partager ce message


Lien à poster
Partager sur d’autres sites

×