Aller au contenu

Recommended Posts

Il y a 3 heures, jojo a dit :

bonjour,

La question a probablement déjà été posée, mais je n'ai pas le courage de parcourir les >450 pages du topic ...

 

Je souhaite  comparer la valeur de 2 modules (plus précisément si module1>module2, alors valeur module2 = valeur module1)

 

Mais la fonction GEA


GEA.add( {"Value+", 73, 50}

compare la valeur du module 73 à la valeur fixe 50.

 

Avez-vous une astuce ? 

Bonjour @jojo,

 

Si ça peut aider....
Pour ma part j'ai comparé deux valeurs comme ceci :

 

-- Gestion de la piscine
	-- Si la variable est différente de nul, on la remet à 5°C chaques jours
    GEA.add({{"Value!", id["Temp_piscine"], ""}, {"Time", "00:10"}}, 1*60, "", {"Global", "Temp_Piscine", "5"})

    -- 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"}}, 1*60, "La température de la piscine à augmenté : #value#°C", {"Global", "Temp_Piscine", {"Value", id["Temp_EauPiscine"]}})

Tu peux voir l'ensemble ici : 

 

 

Bonne soirée

Partager ce message


Lien à poster
Partager sur d’autres sites

merci, il me semble que c'est ptoche de la propositionde @Lazer avec les variables cache, mais donc sa proposition initiale devrait également fonctionner

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui c'est le même principe.

La seule différence, c'est que VariableCache est stocké en RAM, donc pas d'écriture dans la DB, mais perdu en cas de redémarrage de GEA.

Tandis que Variable est écrit dans la DB, donc conservé en cas de redémarrage de GEA. Pas vraiment utile pour ce scénario, mais cela dit une écriture par jour, c'est pas ça qui va user la mémoire flash.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir tous le monde! 

 

Mes volets se ferme le soir avec la syntaxe suivante: 

    GEA.add({{"Profile",1},{"Time","Sunset+15"}},30,"",{{"Close", id["VOLET_SALON"]}})
Jusqu'à la pas de problème. 
Cependant, j'aimerai vérifier que le volet est déjà fermé afin que le contact ne s'enclenche pas pour rien. 
 
Pour exemple: 
Je ferme mon volet a 18H00 manuellement. 
A 20H00 (sunset) alors que le volet est fermé le contact s'active tout de même. 
 
Est-il possible de lui dire en condition: supérieur ou égale a 1% tu fermes le volet, sinon tu ne fais rien? 
 
Bien à vous et merci.  

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui dans les conditions il faut ajouter Value+ ou Value- afin de comparer la valeur.

Par contre je ne me souviens jamais lequel de 0 et 99 correspond au volet complètement ouvert/fermé... donc faut faire des essais, ou regarder le JSON du module via l'API.

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans ce cas il faut ajouter {"Value+", ID, 1} dans les conditions.

Partager ce message


Lien à poster
Partager sur d’autres sites

salut à tous, je veux commencer à implémenter GEA sur ma HC3 mais j'avoue que ça me parle chinois. Afin de me rendre compte de ce que cela peut donner, je souhaiterais déjà savoir si GEA peut gérer une simple règle comme celle-ci.

J'ai un wallplug fibaro sur lequel est branché mon spa, et je voudrais que le relevé de puissance instantanée consommée me remonte 2 notifications : 

1- si consommation > à 2000 w alors notification de démarrage Chauffage Spa

2- si consommation < à 10 w alors notification de Spa en erreur.

 

est-ce faisable ?

Merci pour vos réponses

Modifié par Yannick

Partager ce message


Lien à poster
Partager sur d’autres sites

Basiquement :

local id = {
	WP_SPA = 123,
}

GEA.add({{"Power+", id["WP_SPA"], 2000}}, 30, "Le Spa est démarré depuis 30 secondes")
GEA.add({id["WP_SPA"], {"Power-", id["WP_SPA"], 10}}, 30, "Erreur consommation Spa inférieure à 10 W")

Tu peux ajuster les durées si tu veux plus ou moins de réactivité pour les notifs.

Et comme tu peux le voir, il n'y a aucune action, juste une notif pour chaque règle.

  • Like 1

Partager ce message


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

Basiquement :


local id = {
	WP_SPA = 123,
}

GEA.add({{"Power+", id["WP_SPA"], 2000}}, 30, "Le Spa est démarré depuis 30 secondes")
GEA.add({id["WP_SPA"], {"Power-", id["WP_SPA"], 10}}, 30, "Erreur consommation Spa inférieure à 10 W")

Tu peux ajuster les durées si tu veux plus ou moins de réactivité pour les notifs.

Et comme tu peux le voir, il n'y a aucune action, juste une notif pour chaque règle.

et ne pas oublier de dire l'id de l'utilisateur à qui il faut envoyer la notif

 

	GEA.portables = {2}

(ici toutes les notifs sont envoyées à l'utilisateur 2, qui est (normalement) l'utilisateur admin créé automatiquement lors du premier démarrage de la box

Partager ce message


Lien à poster
Partager sur d’autres sites

Est-ce que quelqu'un peut me dire ce que  j'ai fais de mal ?

Je ne reçois pas de notification, et la règle est pourtant bien exécutée :

 

Mes instructions :

function config(GEA)
	GEA.portables = {2}
end

function setEvents()
...
 local id = {
    ...
    BUREAU_PTISE = 104, 
    MAX_PRISE = 142,
    ...
}
 ...
 GEA.add (id["MAX_PRISE"], -1, "test notif", {"TurnOn", id["BUREAU_PTISE"]})
...
end

 

et voici le debug

[24.06.2022] [18:55:13] [TRACE] [QA_GEA_167]: ----------------------------------------------------------------------------------------------------
[24.06.2022] [18:55:13] [TRACE] [QA_GEA_167]: GEA 7.37 started by event: mode device #142 Max_Prise (Ch Max) value
[24.06.2022] [18:55:13] [TRACE] [QA_GEA_167]: ----------------------------------------------------------------------------------------------------
[24.06.2022] [18:55:13] [DEBUG] [QA_GEA_167]: Add immediately #5 : [142] => ["TurnOn",[104]]
[24.06.2022] [18:55:13] [DEBUG] [QA_GEA_167]: @0s [Validation*] #5 : [142] => ["TurnOn",[104]]
[24.06.2022] [18:55:13] [DEBUG] [QA_GEA_167]:    [Started] #5 : [142] => ["TurnOn",[104]]
[24.06.2022] [18:55:13] [DEBUG] [QA_GEA_167]:         [action] ["TurnOn",[104]]
[24.06.2022] [18:55:14] [DEBUG] [QA_GEA_167]: ... check running #36 @1080s...

l'erreur doit être tellement flagrante, que je ne l'ai pas vue

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 20/06/2022 à 19:07, jojo a dit :

merci, je vais essayer et dirai quoi.

donc le'inclusion des 2 Value fonctionne pour la condition:60: (action ok si piscine_tmp > piscine_tmpseuil)

GEA.add ({"Value+", id["PISCINE_TMP"], {"Value",id["PISCINE_TMPSEUIL"]}}, -1 ,"",
         {"OnOff", id["BUREAU_PTISE"]})

maintenant, dans les actions, je n'y arrive pas : je souhaite mettre à jour piscine_tmplast avec la valeur de piscine_tmp

{"Value", id["PISCINE_TMPLAST"], {"Value", id["PISCINE_TMP"]}}

peut-être que j'en demande de trop à GEA ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu es sûr que tu as un portable avec l'ID 2 ?
Tu peux vérifier avec /api/iosDevices/

 

Perso j'utilise les noms des portables, exemple :

GEA.portables = {"Pixel 5", "Pixel C"}

 

EDIT : voir 2 messages plus bas... ;)

 

Modifié par Lazer

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 3 minutes, jojo a dit :

maintenant, dans les actions, je n'y arrive pas : je souhaite mettre à jour piscine_tmplast avec la valeur de piscine_tmp


{"Value", id["PISCINE_TMPLAST"], {"Value", id["PISCINE_TMP"]}}

peut-être que j'en demande de trop à GEA ? 

C'est quoi ton module PISCINE_TMPLAST ?

Tu es certain qu'il peut prendre la valeur issue du module PISCINE_TMP ?

Exemple si c'est un multilevelSwitch tu peux lui donner une valeur entre 0 et 99, mais pour un binarySwitch, ça sera true/false uniquement.

Partager ce message


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

et ne pas oublier de dire l'id de l'utilisateur à qui il faut envoyer la notif 

 


	GEA.portables = {2}

(ici toutes les notifs sont envoyées à l'utilisateur 2, qui est (normalement) l'utilisateur admin créé automatiquement lors du premier démarrage de la box 

Ce qu'il y a de bien, c'est que ton erreur est écrite en toute lettre dans ton message.

 

Si tu mets l'ID d'un utilisateur dans une variable qui se nomme "portable", forcément, ça marche pas bien... :P

 

Partager ce message


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

C'est quoi ton module PISCINE_TMPLAST ?

Tu es certain qu'il peut prendre la valeur issue du module PISCINE_TMP ?

Exemple si c'est un multilevelSwitch tu peux lui donner une valeur entre 0 et 99, mais pour un binarySwitch, ça sera true/false uniquement.

le module PISCINE_TMPLAST, comme le module PISCINE_TMP sont des  QA Temparature Sensor.

Le PISCINE_TMP sera finalement une sonde de température physique (via FGBS), mais la température (de la piscine) ne sera significative que si l'eau circule, d'oùu la règle PISCINE_TMPLAST  qui ne sera mise à jour que si la pompe de la piscine tourne ...

Partager ce message


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

Ce qu'il y a de bien, c'est que ton erreur est écrite en toute lettre dans ton message.

 

Si tu mets l'ID d'un utilisateur dans une variable qui se nomme "portable", forcément, ça marche pas bien... :P

 

comprends pas ...
J'ai complété GEA.portables avec l'id de mon utilisateur admin

image.png.296ed6dd87de6a0a9c11a43a936d8527.png

Partager ce message


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

Tu es sûr que tu as un portable avec l'ID 2 ?
Tu peux vérifier avec /api/iosDevices/

 

Perso j'utilise les noms des portables, exemple :


GEA.portables = {"Pixel 5", "Pixel C"}

 

EDIT : voir 2 messages plus bas... ;)

 

en effet, je JSON donne ceci

// 20220625121416
// http://192.168.1.141/api/iosDevices/

[
  {
    "id": 25,
    "name": "iPad",
    "udid": "970C8A8B-2D80-40E8-A0CB-6E2E312320F4",
    "push": true
  },
  {
    "id": 26,
    "name": "OnePlus LE2123",
    "udid": "df864256-745a-37af-ae98-283ee83f9768",
    "push": true
  },
  {
    "id": 52,
    "name": "OnePlus 9 Pro",
    "udid": "0cd713841dde957b",
    "push": true
  }
]

je n'ai AUCUNE idée de la différence entre le 26 et le 52, ni pourquoi 2 d'ailleurs (je n'ai qu'un seul One Plus ...)

 

Mais donc y aurait-il moyen d'avoir des notifs pour l'utilisateur admin, notifs qui seraient visibles depuis l'interface Web de mon PC, et pas sur le timbre poste de mon portable ?

(en tout cas, MERCI pour le support efficace :13:)

Partager ce message


Lien à poster
Partager sur d’autres sites

L'application mobile Fibaro a la mauvaise habitude de se ré-associer en créant un nouvel ID dans la DB, par exemple après une réinstallation / réinitialisation complète du téléphone.

ça a toujours été comme ça... surement parce que l'identifiant unique du téléphone a changé entre temps.

 

Si tu veux envoyer des notifs à un utilisateur, et non pas à un portable, alors il faut utiliser l'action Email... qui comme son nom l'indique, enverra un email.

Voir la doc de syntaxe pour les différentes options existantes.

 

Il y a 2 heures, jojo a dit :

le module PISCINE_TMPLAST, comme le module PISCINE_TMP sont des  QA Temparature Sensor.

Le PISCINE_TMP sera finalement une sonde de température physique (via FGBS), mais la température (de la piscine) ne sera significative que si l'eau circule, d'oùu la règle PISCINE_TMPLAST  qui ne sera mise à jour que si la pompe de la piscine tourne ...

OK c'est pour ça donc, "Value" ne peut être utilisé comme action que sur des actionneurs (car en interne, il appelle la fonction setValue via l'API).

 

Si tu veux mettre à jour la valeur (en fait n'importe quelle propriété) d'un module, alors il faut utiliser l'action "Property" (qui appelle la fonction updateProperty via l'API)

Partager ce message


Lien à poster
Partager sur d’autres sites

ok, merci pour le rappel de "Property" (j'aurais du y penser vu que j'avais revu la doc à fond)

 

il y a une heure, Lazer a dit :

Si tu veux envoyer des notifs à un utilisateur, et non pas à un portable, alors il faut utiliser l'action Email... qui comme son nom l'indique, enverra un email.

V

dond la possibilité d'envoyer une notif à un utilisateur n'existe pas. => peut-être une idée pour un prochaine version et ajouter une variable GEA.users ={} dans la config ?

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est historique, l'API proposée par Fibaro a toujours fonctionné ainsi depuis la HC2.

Donc GEA aussi.

 

Cela dit, cette discussion me rappelle que depuis un certain firmware de la HC3, Fibaro a fait évoluer l'API proposée pour envoyer des notifications.

Donc peut être que maintenant il est possible d'envoyer un Push à un utilisateur... ce qui implique que la box sache prendre en compte quel utilisateur est connecté au travers de tel ou tel téléphone.

A creuser pour plus tard.

Partager ce message


Lien à poster
Partager sur d’autres sites

j'essaye de démarrer une action en fonction d'une heure spécifiée dans une variable d'un QA

 

J'ai essayé avec les valeurs suivantes pour ma variable 

10:00

ou

"10:00"

Mais aucune des 2 valeurs ne fonctionne ?

 

voici l'instruction GEA

GEA.add ({"Time",{"VariableQuickApp", id["GESTION_PISCINE"], "PiscineHrDebut"},"23:59"}, -1, "Démarrage pompe", {"OnOff", id["BUREAU_PRISE"]})

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu es certain que c'est possible ?

Je ne crois pas...

 

Pour ce que tu veux faire, il faut utiliser le QuickApp GEA Alarm : https://www.domotique-fibaro.fr/topic/14651-quick-app-gestionnaire-dévénements-automatique-gea-pour-hc3/?do=findComment&amp;comment=232268

Partager ce message


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

Tu es certain que c'est possible ?

GEA est tellement puissant, que j'espérais ...

J'ai également essayé avec une VG, mais sans succès.

GEA.add ({"Time",{"Global", "PiscineHrDebut"},"23:59"}, -1, "Démarrage pompe", {"OnOff", id["BUREAU_PRISE"]})

Je regarderai demain (toute-à-l'heure) avec GEA Alarme que je ne connais pas du tout

Partager ce message


Lien à poster
Partager sur d’autres sites

×