Aller au contenu

Support Gea


Steven

Messages recommandés

Bon je fais mumuse avec la Netatmo et j'ai intégré pas mal de données via un script PHP dans la HC2.

 

Deux questions en lien avec la Netatmp et le GEA:

- Quelle est la bonne syntaxe pour appuyer sur un bouton d'un VD toutes les 5min pour récupérer les données?

- Est-il possible d'avoir une notification si la valeur du CO2 stocké dans la variable NetSalCO2 est supérieure à  1000 ppm?

 

Pour la première j'ai tenté:

GEA.add({"Global", "", ""}, 5*60, "", {{"VirtualDevice", 209, 17}})

Mais cela n'appuie qu'une fois sur le bouton :(

Puis

GEA.add({"Global", "", ""}, 5*60, "", {{"VirtualDevice", 209, 17,{repeat}}})

Mais là  le GEA ne faisaint plus aucune action de toutes celle qu'il a à  faire

Merci :)

Modifié par lolomail
Lien vers le commentaire
Partager sur d’autres sites

Attention au majuscule/minuscule Repeat prend une majuscule, sinon, ... t'es tout bon Shyrka973

GEA.add({"Global", "", ""}, 5*60, "", {{"VirtualDevice", 209, 17},{Repeat}})

@lolomail

" Est-il possible d'avoir une notification si la valeur du CO2 stocké dans la variable NetSalCO2 est supérieure à  1000 ppm?"

Si NetSalCO2 est une variable globale 

GEA.add({"Global+", "NetSalCO2", 1000}, 5*60, "Attention le CO2 dans le salon atteint les #value#")

Si NetSalCO2 est un slider

GEA.add({"Slider+", <id_vd>, "NetSalCO2", 1000}, 5*60, "Attention le CO2 dans le salon atteint les #value#")
  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

@Steven

 

Salut.

 

Cette règle se déclenche s'il n'y a pas de mouvement dans le salon depuis 30mn.

GEA.add(id["MOV_SALON"], 30*60, "", {{"Inverse"}, ...

Elle est évaluée toutes les 30s (valeur par défaut). C'est-à -dire que GEA vérifie la valeur de "value" de ce capteur toutes les 30s. C'est exact ?

Le capteur est un DSB05 avec le paramétrage par défaut du HC2. Le paramètre 3 est à  2s. C'est qu'il est en alerte pendant 2s après avoir détecté un mouvement.

Donc, entre deux vérifications de l'état du module par GEA, une détecteur peut avoir lieu sans qu'il s'en aperçoive. C'est exact ?

Je devrais passer la valeur du paramètre 3 à  30s. Non ?

 

 

Lien vers le commentaire
Partager sur d’autres sites

En effet, tu as 100% raison, mais non, ne fait pas cela stp. GEA doit s'adapter à  ta configuration et non pas l'inverse.

 

Je corrige cela ce soir tu n'auras rien besoin de modifier dans ta configuration.

 

GEA peux savoir si c'est un motion_sensor et dans ce cas, se baser sur l'heure de la dernière modification de sa valeur. Exemple si la dernier modification a eu lieu moins de 30 secondes, on sait qu'il y a eu alerte.

Lien vers le commentaire
Partager sur d’autres sites

Si tu as le courage tu peux tester ceci.

 

Je pourrais le tester moi-même mais pas avant 23h00 donc si toi ou quelqu'un peux essayer le détecteur de mouvement, ce serait super sympa.

 

P.S: J'ai codé à  l'aveugle alors si cela plante ... c'est la faute à  fredo.

GEA.lua

Lien vers le commentaire
Partager sur d’autres sites

Et bien évidemment sur le mien de FGMS le lastBreached fonctionne bien ... arg, je le supporte plus ce FGMS.

 

S'il veux jouer au con, il a trouvé plus con que lui ... moi.

 

Pourrais-tu tester la version ci-joint.

 

Sile FGMS est en alerte .. ou que le lastBreached est arrivé dans les 30 secondes .. OU la derniers modifications de sa valeur est arrivée dans les 30 secondes.

 

Il y a un décalage entre le lastBreached et la date de modification ... exemple, le mien est en alerte 12 secondes ... il y aura donc 12 secondes de décalage mais cela devrait être beaucoup plus juste qu'avant.

 

Merci d'avance pour tes tests.

GEA.lua

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

J'avais mis ceci sans inclure ton dernier ajout "figaro:getModificationTime":

result = tonumber(fibaro:getValue(tonumber(id), "value")) >= 1
if fibaro:getValue(tonumber(id), "lastBreached") ~= "" and not result then
  result = (os.time() - tonumber(fibaro:getValue(tonumber(id), "lastBreached"))) < GEA.checkEvery
end
Lien vers le commentaire
Partager sur d’autres sites

Voilà .

 

Si tu as encore le courage de tester.

 

J'ai appliqué le lastBreached à  tout les détecteur et le lastModificationTIme à  tout les autres modules pour être au plus prêt. J'ai bien évidement tester le nul comme tu me l'as fait remarquer ;)

GEA.lua

Lien vers le commentaire
Partager sur d’autres sites

Je constate que cette ligne:

os.time() - tonumber(fibaro:getModificationTime(tonumber(id), "value"))

ou celle-ci:

os.time() - tonumber(fibaro:getValue(tonumber(id), "lastBreached"))

retourne une valeur en seconde.

 

Pourquoi compares-tu cette valeur avec "GEA.checkEvery*1000" au lieu de "GEA.checkEvery" ?

 

J'ai enlevé le "1000" et pour l'instant, ça fonctionne.

Lien vers le commentaire
Partager sur d’autres sites

Cette ligne:

GEA.add(id["MOV_CUISINE"], 2*60, "", {{"Inverse"}, {"turnOff", id["LAMPE_CUISINE"]}, {"Global", "LumCuisine", "0"}})
ne fonctionne plus. S'il y a du mouvement, elle s'éteint quand même. C'est un FGMS.
J'essaie de debugger en ajoutant cette ligne:
if result then fibaro:debug("Result lastBreached: true ("..id..")") else fibaro:debug("Result lastBreached: false ("..id..")") end
et celle-ci:
if result then fibaro:debug("Result getModificationTime: true ("..id..")") else fibaro:debug("Result getModificationTime: false ("..id..")") end

Le retour semble normal: DSB05 passe par la première et FGMS par la deuxième.

 

On dirait que la valeur de "ModificationTime" ne bouge pas tant qu'il est en alerte.

Il faut peut-être se fier à  la valeur de "ModificationTime" quand le capteur n'est plus en alerte.

 

Le config par défaut du FGMS est de 30s pour la sortie en alerte donc il peut rester en alerte dans une pièce comme la cuisine un bon moment. Avec la config du DSB05, c'est 2s. Il y a très peu de chance qu'il reste en alerte longtemps dans une pièce comme le salon sauf si on est à  20 dedans.

 

La question est: peut-on adapter GEA pour que cela fonctionne ou dois-je modifier cette valeur ?

 

Lien vers le commentaire
Partager sur d’autres sites

J'ai fait ces modifications:

result = tonumber(fibaro:getValue(tonumber(id), "value")) >= 1
if not result and (fibaro:getValue(tonumber(id), "lastBreached")) ~= "" then
  result = ((os.time() - tonumber(fibaro:getValue(tonumber(id), "lastBreached"))) < GEA.checkEvery)
else
  if not result and (fibaro:getModificationTime(tonumber(id), "value") ) then
    result  = ((os.time() - tonumber(fibaro:getModificationTime(tonumber(id), "value"))) < GEA.checkEvery)
  end
end

J'ai fait les 100 pas dans la cuisine pendant 3mn. Elle est restée allumée. Après être sortie pendant 2mn, elle s'est éteinte.

Qu'en penses-tu ?

Lien vers le commentaire
Partager sur d’autres sites

Que veux tu que je te dise  :P C'est intelligent, c'est bien écrit et cela fonctionne ... c'est adopté  :60:

 

Par contre, j'aurais vraiment voulu être là  pour te voir faire les 100 pas devant ton capteur  :lol:

 

J'aurai bien voulu faire les tests moi-même mais c'est difficile car mon FGMS ne détecte pas tout le temps et quand il détecte, le lastBreached est correct donc je ne passais jamais dans la condition de getModificationTime.

 

Donc ce code ci appliqué à  tout type de détecteur, c'est top car on s'assure de répondre même a des ouvertures de porte rapides. Moi, en tout cas, cela me plait et je te remercie : pour avoir trouvé le problème ... et pour avoir trouvé la solution.

 

Maintenant, je pense que le getModificationTime devrait aussi être généralisé avec les autres modules comme les lampes par exemple car comme tu l'as fait remarqué avec un détecteur, le soucis est le même avec une lampe que l'on peux allumer uniquement 10 secondes et dans ce cas, GEA ne verrais rien.

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...