Aller au contenu

Messages recommandés

Posté(e)
 
   
 
function config(GEA)
-- ===================================================
-- Configuration générale
-- ===================================================
GEA.debug = true -- true pour ajouter des traces dans la fenêtre de log permettant de mieux diagnostiquer les dysfonctionnement des règles utilisateurs
GEA.lldebug = true -- true pour ajouter des traces détaillées pour demander de l'aide aux développeurs sur le forum en cas de bug identifié dans GEA
GEA.portables = {"iPhone","iPad Pro de chris ",} -- Lister ici les ID ou le nom exact des portables (/api/iosDevices/) à utiliser pour les notification push
--GEA.control = false -- false pour désactiver la vérification des paramètres des options
--GEA.optimize = false -- false pour désactiver l'optimisation de la mémoire (suppression d'option inutile)
--GEA.historymax = 0 -- Profondeur d'historique conservé dans la variable du QuickApp GEA
--GEA.language = "en" -- Force une langue spécifique si différente du système
end
 
function setEvents()
-- ==========================================================
-- Règles utilisateur
-- ==========================================================
 
-- Définition des ID des modules
local id = {
METEO = 3,
--Default Room
PHILIPS_HUE = 20, SUNON_SECOUR = 136, T___SUNON_SECOUR = 137, MUSICCAST_20_G = 116, NETATMO_2_6 = 90, SAISONS = 61, DETECTEUR_GAZ = 214, DAWN_DUSK = 290, SECOURS = 337, BATTERIES = 273, DEVICESID = 322, GEA = 321, HEOS_DENON = 49, LUX_SUNON_SECOUR = 138, CAPTEUR_FENETRE_SECOUR = 344,
--Salon
BRUIT_SALON = 94, MUSICCAST_BAR_400 = 114, LAMPE_CANAPE = 202, HUE_TV = 23, HUE_SOUS_CANAPE_D = 240, HUE_SOUS_CANAPE_G = 239, MUSICCAST_20_D = 115, TV = 200, RADIATEUR_TV = 89, CO2_SALON = 93, RADIATEUR_CANAPE_ = 87, HUMIDITE__SALON = 92, HUE_TV_G = 25, T___SALON = 91, MUSICCAST_20_G = 116, HUE_TV_D = 26, PRESSION_SALON = 95, FENETRE_TERRASSE = 275, INTER_SALON = 266, HUE_CANAPE_D = 21, USB_CANAPE_ = 300, HUE_CANAPE_G = 28,
--Cuisine
VMC_E_VIER_ = 361, SUNON_CUISINE = 129, FENETRE_ = 366, LUX = 130, CAVE_EA_VINS = 125, LAMPE_CAVE_EA_VINS = 119, CO2_CUISINE = 110, T___CAVE_EA_VINS = 328, FRIGO_CUISINE = 204, FOUR = 162, LAVE_VAISSELLE_ = 194, FLOD_LAVE_VAISSELLE_ = 196, HUMI_CAVE_EA_VINS = 329, FLOD_EVIER_ = 158, SMOKE_CUISINE = 141, VMC_CUISINE_ = 371, INTER_CUISINE = 258, HUMIDITE_CUISINE = 109, HOTTE_ = 377, PLAYER_CUISINE = 50, RADIATEUR_ = 43, T___CUISINE = 108,
--Chambre
INTER_CHAMBRE = 255, FENETRE_CHAMBRE = 242, CHARGEUR_TEL_SOSO = 302, SONOS_PLAYER_ = 117, TV_CHAMBRE_ = 292, BLU_RAY = 123, CHARGEUR_TEL_CHRIS = 304, HUMIDITE_CHAMBRE = 99, T___CHAMBRE = 98, RADIATEUR_CHAMBRE = 85, CO2_CHAMBRE = 100, LAMPE_CHEVET_G = 308, LAMPE_CHEVET_D = 306,
--Entrée
INTER_ENTREE = 263, FREBOX = 190, PORTE_ENTREE = 206, SYNOLOGY_710_ = 170, SWITCH_INTRANET = 182, INTERPHONE = 186, DS_710_ = 152, NVR = 180, SMOKE_BAIE = 176, SMOKE_BAIE_T__ = 178, VENTILATION_BAIE = 172, DIFFUSEUR = 151, SMOKE_ENTREE = 132, SMOKE_T__ = 134, PRESENCE_CHRIS = 57, HC3_DIAGNOSTICS_V2_0 = 53, MEMOIRE = 54, PRESENCE_SOPHIE = 58, SYSTEME = 55, RADIATEUR_ENTREE = 83, CPU = 56,
--Jardin
RAFALES_JARDIN_ANEMOMETRE = 101, HUE_PERGOLA_2 = 27, VENTILO_MOUSTIQUE = 224, VENT_JARDIN_ANEMOMETRE = 102, HUE_PERGOLA_ = 22, TERRASSE_ = 246, JACUZZI = 60, JACUZZI_ = 24, BORNE_EA_MOUSTIQUE_ = 219, INTER_CO2 = 223, HUMIDITE_EXTERIEUR = 96, PLUIE_5M_JARDIN_PLUVIOMETRES = 106, T___EXTERIEUR = 97, PLUIE_24H_JARDIN_PLUVIOMETRES = 105,
--Abri De Jardin
FLOD_ABRI_JARDIN = 287, SMOKE = 269, HUMIDITEE_ABRI = 210, LAVE_LINGES = 296, PORTE_ABRI_JARDIN = 234, SECHE_LINGES = 298, INTER_ABRI_JARDIN = 236, T___ABRI = 209, FRIGO_ABRI_JARDIN = 294,
--Salle De Bains
PLAYER_SALLE_DE_BAIN = 51, MIROIR = 318, INTER_SDB = 252, VMC_SDB_ = 406, FLOD_EVIER = 145, T___SDB = 398, HUMI_SDB = 399, FENETRE_SDB = 396, PORTE_SDB = 393,
--Toilette
INTER_WC = 249,
--Chambre 3D
BEAR_BLEU = 279, DESHYDRATEUR = 63, PRUSA_XL = 67, EXTRACTEUR_SOUDURE = 69, SUNOM_ = 47, SUNOM_CHAMBRE_2 = 45, FER_EA_SOUDER = 39, T___DRYBOX = 37, DESHUMIDIFICATEUR = 353, SMOKE_PRUSA_XL = 73, HUM_CHAMBRE_3D = 349, SMOKE_DRYBOX = 35, T___CHAMBRE_3D = 348, MULTI_1 = 316, CHARGEUR_USB = 315, IMAC = 314, HUMIDITE_CHAMBRE_2 = 112, T___CHAMBRE_2 = 111, CO2_CHAMBRE_2 = 113, INTER_CHAMBRE_2 = 227, PORTE_CHAMBRE_2 = 356, BEAR_ORANGE = 283, RADIATEUR_CHAMBRE_2 = 81, T___PRUSA_XL = 75, LAMPE_IMAC = 313, DRYBOX_ = 77, IMPRIMANTE_IMAC = 312, MULTI_6 = 311, FENETRE_CHAMBRE_2 = 359,
 
}
 
-- Exemples de règles utilisateurs
GEA.add(true, 0, "Démarrage de GEA le #date# à #time#", nil, "Démarrage GEA")
GEA.add({"Info+", "serverStatus", os.time()-120}, 0, "Box redémarrée le #date# à #time#", nil, "Démarrage box")
GEA.add({"Info", "updateStableAvailable", true}, 24*60*60, "Une nouvelle version Stable est disponible", nil, "Détection nouvelle version stable")
GEA.add({"Info", "updateBetaAvailable", true}, 24*60*60, "Une nouvelle version BETA est disponible", nil, "Détection nouvelle version beta")
 
GEA.add({"Property+", id["METEO"], "Temperature", 35}, 0, "Attention canicule 35°", nil, "Surveillance température")
GEA.add({"Property-", id["METEO"], "Temperature", 0}, 3, "Attention Risques De Verglas 0°", nil, "Surveillance température")
-- Ajouter ici les autres règles utilisateurs
-- CONTROLE DES PILES
--GEA.add({"Batteries", 10}, 24*60*60, "Pile faible #value# - #name#", {{"Repeat"}})
 
--GEA.add (id["INTER_ABRI_JARDIN "], 5, "", {{"Repeat"}, {"Email", "admin", "Lumiere Abri Jardin Allumée depuis #duration#.\nle #date# à #time#.", "Lumiere Abri Jardin Allumée depuis #duration#"}})
-- Ouverture Porte Abri De Jardin
GEA.add(234, -1, "Ouverture De La Porte Abri De Jardin le #date# à #time#")
 
-- Porte ouverte et lumière Abri De Jardin Allumée Depuis 5 Minutes
GEA.add({236}, 5*60, "Lumière Abri De Jardin Allumée Depuis 5 Minutes", {"iPad Pro de chris ", 0} )
 
-- Lave Linges Fini
GEA.add({"Power-", 296, 2.5}, 5*60, "lave Linges Terminé", {{"TurnOff", 296}}, {"iPad Pro de chris ", 0} )
 
-- Séche Linges Fini
GEA.add({"Power-", 298, 2}, 5*60, "Séche Linges Terminé", {{"TurnOff", 298}}, {"iPad Pro de chris ", 0} )
 
-- Lave Vaisselles Fini
GEA.add({"Power-", 194, 1}, 2*60, "Lave Vaisselles Terminé", {"iPad Pro de chris ", 0} )
 
-- Lumiére Terrasse Allumé
GEA.add({246}, 5*60, "Lumiére Terrasse Allumée Depuis 5 Minutes", {"iPad Pro de chris ", 0} )
 
-- Vmc Cuisine Auto
GEA.add({{"Value+", 109, 52}, {"Value", 366, false}}, 30, "", {{"TurnOn", 371}} ) -- humidité superieur à 52%
GEA.add({"Value-", 109, 50}, 30, "", {{"TurnOff", 371}} ) -- humidité inferieur à 50
GEA.add({366}, 30,"", {{"TurnOff", 371}}) -- fenetre ouverte
 
-- Vmc Evier Cuisine Auto
GEA.add({{"Value+", 109, 52}, {"Value", 366, false}}, 30, "", {{"TurnOn", 361}} ) -- humidité superieur à 52%
GEA.add({"Value-", 109, 50}, 30, "", {{"TurnOff", 361}} ) -- humidité inferieur à 50%
GEA.add({366}, 30,"", {{"TurnOff", 361}}) -- fenetre ouverte
 
-- Lumiere Auto Abri De Jardin
GEA.add({id["PORTE_ABRI_JARDIN"], {"(Time)", "Sunset-15", "Sunrise+30"}}, -1, "", {{"turnOn",id["INTER_ABRI_JARDIN"]}})
 
--Ouverture Porte D'Entrée
GEA.add(206, -1, "Ouverture De La Porte d'entrée le #date# à #time#")
 
-- Déshumificateur Auto Chambre 2
GEA.add({{"Value+", 112, 40}, {"Value", 356, 359, false}}, 30, "", {{"TurnOn", 353 }}) -- humidité superieur à 40%
GEA.add({"Value-", 112, 40}, 30, "", {{"TurnOff", 353 }} ) -- humidité inferieur à 40%
GEA.add({356, 359}, 30,"", {{"TurnOff", 353}}) -- fenetre ou porte ouverte
 
-- Déshumidificateur Bac Plein
GEA.add({"Power", 353, 1.9}, 5*60, "il faut vider le bac du déshumidificateur le #date# à #time#")
 
-- Vmc Salle De Bains Auto
GEA.add({{"Value+", 399, 42}, {"Value", 396, false}}, 30, "", {{"TurnOn", 406}} ) -- humidité superieur à 42%
GEA.add({"Value-", 399, 40}, 30, "", {{"TurnOff", 406}} ) -- humidité inferieur à 40%
GEA.add({396}, 30,"", {{"TurnOff", 406}}) -- fenetre ouverte
 
-- Controle Ram HC3
GEA.add({"Global-", "RamFree", 35}, 1, "RAM inférieure à35% (#value#%) - Reboot prévu cette nuit à2h00. (#date# à#time#)", {{"Time", "19:00", "19:01"}, {"iPad Pro de chris ", 0, "ALERTE - RAM"}})
 
end
Posté(e)

Ah mais j'ai compris.

"iPad Pro de chris ", littéralement n'est pas une action connue, c'est pour cela qu'il te dit qu'il ne peut pas l'utiliser comme action.
Encore une fois pardon d'être lourd et d'insister, surtout qu'on en a déjà discuté la semaine dernière, mais prend en compte les remarques qu'on te fait, et prend le temps de lire la doc de syntaxe.

 

De mémoire je t'avais écris un truc du genre que GEA ne peut pas deviner ce que tu veux faire, en l’occurrence envoyer une notification à ton appareil nommé "iPad Pro de chris ", puisque je suppose que c'est de ça dont il s'agit.

Posté(e)

quand je le fait comme ça j'ai la même erreur , après le guillemets et les accolades je sais pas combien il en faut et comment il faut les placer 

conditions power-,296, 2.5 , durée 5*60 , notification lave linges terminé , iPad Pro de chris ? , action  turnoff , 296

-- Lave Linges Fini
GEA.add({"Power-", 296, 2.5}, 5*60, "lave Linges Terminé", {"iPad Pro de chris ", 0}, {{"TurnOff", 296}} )
[19.12.2024] [20:55:06] [ERROR] [QA_GEA_321]: Ajout auto #9 : [["TurnOff",296]] Règle exclue : Option : [320] ne peut pas être utilisé comme action
GEA.add(condition�, durée, notification, action)
  • 5 mois après...
Posté(e)

Bonjour,

 

Je viens chercher un peu d'aide, car depuis la dernière MAJ de la HC3 en 5.180.17, j'ai une condition GEA qui ne marche pas/plus.
 

Explication :
J'ai créé une variable globale nommé "Temp_Piscine" que je set à 3 degré tous les matin à 4h45 = ça OK:

	-- Si la variable est différente de nul, on la remet à 3°C chaques jours
    GEA.add({{"Value!", id["Temp_Piscine"], "40.0"}, {"Time", "04:45"}}, 1*60, "", {"Global", "Temp_Piscine", "3.0"})

 

Et je veux que le GEA stock toutes les 5min la "vrai" température de l'eau de la piscine (id 191 nommé Temp_EauPiscine) = KO et je ne sais pas pourquoi
 

-- Stocker la température de la piscine (toute les minutes) dans la variable si celle-ci est supérieur
    GEA.add({{"Value+", id["Temp_EauPiscine"]}, {"Global", "Temp_Piscine"}}, 5*60, "La température de la piscine à augmenté : #value#°C", {"Global", "Temp_Piscine", {"Value", id["Temp_EauPiscine"]}})

 

Dans le debug je vois ca (avec le "Validation" en rouge)

[26.05.2025] [08:38:12] [DEBUG] [QA_GEA_286]: @0s [Validation] #36 : ["Value+",[191]] ["Global",["Temp_Piscine"]] => ["Global",["Temp_Piscine",["Value",191]]]

 

Si jamais vous avez des pistes sur mon erreur, je suis preneur.

En vous remerciant

Posté(e)
Il y a 2 heures, Manu31 a dit :
	-- Si la variable est différente de nul, on la remet à 3°C chaques jours
    GEA.add({{"Value!", id["Temp_Piscine"], "40.0"}, {"Time", "04:45"}}, 1*60, "", {"Global", "Temp_Piscine", "3.0"})

ta condition est si <> 40.0, pas si <> de nul

 

Il y a 2 heures, Manu31 a dit :
 {"Global", "Temp_Piscine", {"Value", id["Temp_EauPiscine"]}}

tu dois rajout {"Repeat"} dans tes actions, car ta condition ne change plus dès qu'elle est respectée la première fois. Tu devrais recevoir une notif à 4h20, puis plus rien. (ce n'est donc pas lié au firmware de la box.

Posté(e)

Moi ce qui me choque dans tes règles, c'est que tu compares des nombres (la value de id["Temp_Piscine"] est numérique, tu peux vérifier ça dans son JSON avec /api/devices/ID) avec des chaines de caractères "40.0" est une string au sens LUA.

 

C'est certainement une écriture que tu as hérité depuis la HC2, mais dès le passage sur HC3, Fibaro a enfin modifié tous les types des champs value des différents modules pour qu'ils soient plus cohérents (number, boolean, etc).

On en avait plusieurs fois parlé à l'époque lors des premières migrations de GEA HC2 vers HC3.
Je m'étonne que tu aies encore ce type d'écriture et que ça fonctionne depuis tout ce temps !

Posté(e)

Bonjour,

 

@jojo : effectivement, la description était fausse, bien vue.
J'ai bien rajouté le {Repeat}. En attente de voir si ca marche.

 

@Lazer : oui chatgpt me dit ca effectivement. Et c'est même toi qui m'avait aidé et donner la ligne il y a 2 ou 3 ans pour mon installation sur ma HC3 ;) 
Du coup une idée de la syntaxe qui marcheraiT (je pense a caster un string en int : je ne sais pas si ca se fait) ?

Posté(e)
Il y a 3 heures, Manu31 a dit :

oui chatgpt me dit ca effectivement. Et c'est même toi qui m'avait aidé et donner la ligne il y a 2 ou 3 ans pour mon installation sur ma HC3 ;) 
Du coup une idée de la syntaxe qui marcheraiT

Du coup continue sur ta lancée et demande à ChatGPT, je suis curieux de voir la réponse :unsure:

 

(Jojo t'as répondu entre temps)

Posté(e)
Il y a 3 heures, jojo a dit :

juste la même règle, mais sans les "

Malheureusement il ne sait pas tout :D d'ou mes questions ici.

Jojo m'a répondu mais ca n'a pas l'air de marcher.... Il ne remplace pas la valeur de la température de l'eau dans la variable globale :( 


Ps : j'ai tenté ça :=

GEA.add({{"Value+", id["Temp_EauPiscine"]}, {"Global", Temp_Piscine}}, 5*60, "La température de la piscine a augmenté : #value#°C", {{"Repeat"}, {"Global", "Temp_Piscine", {"Value", id["Temp_EauPiscine"]}}})
Posté(e)

Le 1er souci, c'est que ChatGPT sait plein de trucs mais n'y comprends rien, résultat ce qu'il répond est à coté de la plaque dans la majorité des cas. Le pire dans l'histoire, c'est que parfois il tombe par hasard sur la bonne réponse, mais avec un argumentaire faux (souvenez vous quand vous étiez étudiants quand les profs notaient le raisonnement et la démonstration, même si le résultat du calcul était faux, bah là c'est l'inverse :lol: ).

Quand les gens auront compris ça, ils arrêteront de s'abrutir avec cet outil ce jouet et se remettront à utiliser leur cerveau, à l'ancienne... ouais je sais c'est démodé... mais quelque chose me dit que ça n'arrivera pas. Tant pis.

 

Le 2nd souci, c'est que les Variables Globales ne peuvent pas contenir autre chose qu'une chaine de caractères (string).
Dans GEA le code "essaye" de gérer les VG qui contiennent des valeurs numériques, mais je ne suis pas sûr que ça soit fiable à 100%. Il faudrait déboguer, mais là ça va être difficile car je peux difficilement reproduire chez moi.

 

 

Mais est-ce que tu as absolument besoin de stocker la valeur dans une VG ?
Car si tu n'as pas besoin de la persistence, tu peux contourner le problème en stockant la valeur dans une VariableCache (qui pour rappel est perdu en cas de redémarrage de GEA), qui présente l'avantage de pouvoir stocker n'importe quel type de valeur (boolean, number, string, etc).
Donc en travaillant avec des numbers dans toutes tes règles, depuis la récupération de la value de ton module, en passant par le stockage dans la VariableCache, puis la comparaison, ça devrait au moins éliminer le problème des comparaisons entre types de variables différents.

 

Posté(e)

Et oui ca aide bien mais ca dépend du prompt que l'on fait.

 

Ta solution de VariableCache serait top.
Une idée/tuto de qqu qui l'a fait que je reprenne l'exemple ?

 

 

En te remerciant

Posté(e)

Oui voilà, ça "aide", tout au plus. Le problème c'est que ça induis plus souvent en erreur que ça n'aide, alors perso j'ai du mal à la voir l'aide...

Après je m'amuse bien pour générer des images à la con, c'est totalement inutile et donc amusant.
 

Reprend les bases : la doc de syntaxe, tu as la syntaxe (forcément...) et quelques exemples basique d'utilisation VariableCache.

Sinon, à l'ancienne, avec Google (ou ton autre moteur de recherche préféré), tu as des tonnes d'exemple d'utilisation sur le forum (enfin, sur ce topic essentiellement)

Mais bon, déjà je peux te dire que ça s'utilise comme Global.

Posté(e) (modifié)
il y a 52 minutes, Lazer a dit :

Oui voilà, ça "aide", tout au plus. Le problème c'est que ça induis plus souvent en erreur que ça n'aide, alors perso j'ai du mal à la voir l'aide...

Après je m'amuse bien pour générer des images à la con, c'est totalement inutile et donc amusant.
 

Reprend les bases : la doc de syntaxe, tu as la syntaxe (forcément...) et quelques exemples basique d'utilisation VariableCache.

Sinon, à l'ancienne, avec Google (ou ton autre moteur de recherche préféré), tu as des tonnes d'exemple d'utilisation sur le forum (enfin, sur ce topic essentiellement)

Mais bon, déjà je peux te dire que ça s'utilise comme Global.

C'est bon j'ai réussi a ce que le GEA le prenne en compte.
Me reste a afficher la valeur de la VariableCache dans le debug pour controler que tout se fait bien ;)

Question bête mais il n'y a pas de "echo/printf" dans GEA ?

 

Autre question: je suppose qu'on peut l'utiliser comme n'importe quel valeur value+ et value-
comme ça : GEA.add({{"Time", "12:00"}, {"VariableCache+", "TempPiscineCache", "12.0"}, {"VariableCache-", "TempPiscineCache", "14.0"}}, 1*60, "Pompe de la piscine en marche pour 4H", {{"TurnOn", id["PompePiscine"], 4*60*60}})

Modifié par Manu31
ajout d'une question
Posté(e)

Super.

Si, il y a une option cachée et non documentée ( :D ), c'est "Test", qui permet d'afficher ce qu'on veut dans le log de GEA.

A utiliser dans les actions, donc par exemple :

GEA.add({mes conditions}, durée, "notification", {{"Test", "La valeur de la première condition est #value#"})})

 

Oui tu peux utiliser value+ et value- pour faire toutes les comparisons numériques que tu veux, mais attention encore une fois dans ton exemple, tu as remis des guillemets autour de tes valeurs 12 et 14, ce qui en fait des string, et non des numbers.... par ailleurs l'ajout .0 est inutile.

Note que ce sont des comparaisons "strictement" supérieur ou inférieur.

Donc la règle se déclenchera uniquement si la température fait au minimum 12.1 degré et au maximum 13.9°C

Posté(e)
Il y a 19 heures, Manu31 a dit :

Me reste a afficher la valeur de la VariableCache dans le debug pour controler que tout se fait bien ;)

tu peux d'mander qu'il t'envoie un mail à chaque changement de la Variable Cache

×
×
  • Créer...