Aller au contenu

Recommended Posts

il y a 19 minutes, Steven a dit :

C'est que tu n'as pas de condition sur ton NetAtmo_temp_ext avec -1.

 

J'ai mis volontairement ce message pour éviter les déclenchements inutiles de GEA.

 

Le NotStart fonctionne bien, je l'ai testé celui là.

 

Il va dans les actions, ainsi :

 

GEA.add(....., 30, "", {"NotStart"})

 

Le NotStart fonctionne VS NotStarted

 

Par contre pour mes lignes quand tu dis -1, les miennes ne ressemble pas à ça, du coup je ne sais pas ce qui ne plait pas à GEA.

 

  -- --------------------------------------------------------
  -- NOTIFICATIONS METEO NETATMO
  -- --------------------------------------------------------
  ---  GEA.add({"Value+", id["NetAtmo_temp_int"],26.10}, 10*60, "Température intérieure à #value#°C...Il faut aérer !", {{"Portable", MobileId["PHONE_BERNARD"]}})
  ---  GEA.add({"Value-", id["NetAtmo_temp_int"],18.10}, 10*60, "Température intérieure à #value#°C", {{"Portable", MobileId["PHONE_BERNARD"]}}) 

  GEA.add({"Value-", id["NetAtmo_temp_ext"],0.10}, 10*60, "Température extérieure à #value#°C, risque de gel", {{"Time","05:00", "08:00"},{"Portable", MobileId["PHONE_BERNARD"]}, {"Portable", MobileId["PHONE_NATHALIE"]}}) 
  GEA.add({"Value-", id["NetAtmo_temp_ext"],(-3.90)}, 10*60, "Température extérieure à #value#°C, grand froid", {{"Time","05:00", "08:00"},{"Portable", MobileId["PHONE_BERNARD"]}, {"Portable", MobileId["PHONE_NATHALIE"]}}) 

  GEA.add({"Value-", id["NetAtmo_pression"],1000}, 30*60, "Pression athmosphérique à #value# Hpa...dépression en approche !", {{"Portable", MobileId["PHONE_BERNARD"]}, {"Portable", MobileId["PHONE_NATHALIE"]}}) 

  GEA.add({"Value+", id["NetAtmo_co2"],800}, 120*60, "Niveau de CO2 élevé ! : #value# Il faut aérer le salon !", {{"Portable", MobileId["PHONE_BERNARD"]}, {"Portable", MobileId["PHONE_NATHALIE"]}})

  GEA.add({"Value-", id["NetAtmo_humidite_Int"],40}, 30*60, "Niveau d'humidité trop faible ! : #value# ...Il faut humidifier la piece !", {{"Portable", MobileId["PHONE_BERNARD"]}, {"Portable", MobileId["PHONE_NATHALIE"]}})

  GEA.add({"Value+", id["NetAtmo_humidite_Int"],60}, 30*60, "Niveau d'humidité trop haut ! : #value# ...Il faut aérer la piece!", {{"Portable", MobileId["PHONE_BERNARD"]}, {"Portable", MobileId["PHONE_NATHALIE"]}})


 

Partager ce message


Lien à poster
Partager sur d’autres sites

Une durée a -1 correspond à un déclenchement immédiat provoqué par le changement d'une valeur d'un module déclaré dans l'entête.

 

Dans l'entête de GEA, tu as du mettre

 

%% properties

...

417 value

...

 

Donc a chaque changement de valeur de ton module Netatmo, ta HC2 va lancer GEA pour traiter ce module. Hors tu n'en a pas besoin car toutes tes lignes concernant ton Netatmo on une durée supérieure à -1. Et les lignes qui ont une durée supérieur à -1 sont automatiquement traitée par une instance de GEA qui tourne en permanence.

 

Donc tu lances, à chaque changement de valeur Netatmo, une instance de GEA qui ne sert à rien. Cela ne dérange absolument pas le fonctionnement mais coûte en mémoire et durée de traitement de ta box pour rien.

Il te suffit juste d'enlever le 471 value de l'entête de GEA pour éviter se genre de traitement inutile.

 

Voilà ... j'espère que c'est clair car j'ai parfois du mal a me comprendre moi-même.

  • Like 2
  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Ben non au contraire, maintenant j'ai parfaitement compris :60:

Merci Steven.

Partager ce message


Lien à poster
Partager sur d’autres sites

@pepite Merci pour tes réponses.

 

J'avais mis une condition sur la température (qui ne servait à rien), car je n'arrivais pas ouvrir ou fermer mes volets en 6.04. J'avais trouvé un post sur ce topic ou il étais noté que le close ou l'open avais besoin de value pour fonctionner. 

 

Je prends en compte ta recommendation de mettre une condition sur le statut du volet avant une action

- Si je ferme mon volet, il faut je vérifie que mon volet n'est pas déjà fermer donc {"Value!", id["VOLET_SALON"], 0}

- Si j'ouvre mon volet, il faut je vérifie que mon volet n'est pas déjà ouvert donc {"Value!", id["VOLET_SALON"], 100}

 

La conséquence de cette condition est que quand j'ouvrai les deux volets en une seule ligne je doit maintenant le faire en deux lignes.

 

Donc avant

GEA.add( {{"Time", "20:25", "20:26"},{"Value!", id["TEMPERATURE_LOLA"], 0}}, 30, "GEA as fermé les volets des enfants", {"close", {id["VOLET_LOLA"],id["VOLET_LUCAS"]}})

 

se transforme en 

GEA.add( {{"Time", "20:25"},{"Value!", id["FENETRE_LOLA"], 0}} , 30, "GEA as fermé le volets de Lola", {"close", id["VOLET_LOLA"]})
GEA.add( {{"Time", "20:25"},{"Value!", id["FENETRE_LUCAS"], 0}} , 30, "GEA as fermé le volets de Lola", {"close", id["VOLET_LUCAS"]})
 

Le nombre de ligne ne m'importe peu mais est ce un problème pour GEA d'avoir plusieurs actions à la même heure sur des lignes différentes ?

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Je ne suis pas d'accord avec ce genre de chose. Pour moi, cela ne sert à rien de contrôler qu'une lampe soit allumée pour l'éteindre. Ceci pour 2 raisons :

  • La box le fait pour nous ... elle n'envoi pas l'ordre d'extinction sur un module déjà éteint  (je met une réserve sur un volet, je ne connais pas)
  • Dans 99% des cas, vérifier avant de faire quelque chose est plus coûteux en temps *

* Je m'explique : contrôler qu'un volet est fermé coûte plus de temps que de juste envoyé l'ordre de fermeture. Donc s'il s'agit d'un événement ponctuel, il n'y a aucun intérêt à vérifier sa fermeture ou ouverture. 

 

Donc dans ton cas, il n'y a aucun intérêt a vérifier cela. Donc :

GEA.add( {"Time", "20:25"}, 30, "GEA a fermé les volets de Lola et Lucas", {"close", {id["VOLET_LOLA"], id["VOLET_LUCAS"]}})

est parfait pour moi.

 

Je m'exprime par directement pour toi, mateli31, mais pour tout le monde, il faut arrêter de faire des contrôles inutiles. Quand je veux allumer une lumière, je ne me pose jamais la question : est-elle éteinte ? Nos yeux le voit et nous agissons en conséquence mais notre but initial n'est pas d'allumer la lumière si elle est éteinte mais juste de l'allumer. Et dans le pire des cas, si la box envoi une demande inutile (allumer une lumière déjà allumée), à 20h25, ton réseau ZWave va envoyé une trame de quelques millièmes de secondes inutile. De mon point de vue, il ne devrait pas y avoir trop d'impact :-)

 

Après cela peux se justifier. Prenons un autre cas : "S'il fait jour et que les enfants allument une lumière, je dois l'éteindre". Dans ce cas, mon désir est d'éteindre une lumière qui s'allume ... donc ... j'ai besoin de connaître son état.

 

Bref, soyons "simple" ... "basique" comme dis une certaine chanson.

 

Partager ce message


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

Le nombre de ligne ne m'importe peu mais est ce un problème pour GEA d'avoir plusieurs actions à la même heure sur des lignes différentes ?

Merci

En version 6.05, tu peux envoyé autant de ligne que tu veux avec la même heure, il n'y a plus aucun impact, elles seront toutes traitées. D'ailleurs le bug sur l'heure date de la version 1.00 de GEA ;) Sauf qu'avant on était obligé de mettre {"Time", début, fin} et on mettais par habitude 1mn de décalage. Il y a aussi que la V.3.x de nos HC2 était beaucoup plus véloce que notre chère v.4.x.

  • Like 1

Partager ce message


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

(je met une réserve sur un volet, je ne connais pas)

justement j'ai l'impression que la box ne le fait pas pour les volets et que le moteur du volet réagit tout de même. C'est embetant pour le moteur ;-)

 

Je me pose aussi la question sur les dimmers, je en sais pas si la trame zwave est envoyée ou non.  ;-)

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Moi je m'en fiche, j'ai du "Somfy" ... c'est comme les emmerdeurs, c'est increvable :60:

 

Je plaisante, oui, il faut économiser les moteurs, mais n'est pas un problème de configuration des modules ?

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

On est bien d'accord avec la qualite de Somfy ;-)

 

Peut-etre, je n'en sais pas plus, faudrait que je rejette un gros oeil à la configuration du module.

Partager ce message


Lien à poster
Partager sur d’autres sites

Fais-toi plaisir ;), jette un gros oeil.

5a70836b7b8b1_tlchargement.jpg.26f04399a1f99939fa37827ed7978cd5.jpg

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Mon commentaire auras au moins eu le mérite de soulever des questions ! Je vais chercher si je peut avoir plus d'informations sur les modules volets roulants.

 

Je vais tout de même rajouter les conditions sur les valeurs des volets, mes moteurs ne sont pas des "Somfi" :rolleyes:

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

I thought that in the message translation section were you substring eg. #time#, #datefull# etc that there Would be a custom exit to function customtranslation(message) and I could in this function write my own custom code for translations eg #weekday# 

 

today I need to enter your could to do my own translations and this requires some work upon upgrades. 

 

So I clean custom exit in “preferred” areas would be nice.

 

@pepite @Steven

Modifié par Kristiano

Partager ce message


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

J'ai peur d'avoir introduit un bug ... peux-tu me confirmer que tu as bien une instruction du style {"Function", ...} ?
 

 


Oui.
Pour le slider.

 

@Steven voici 1 ligne  en exemple

 

    GEA.add({"Power-", id["PRISE_TELE"], 20}, 30, "Sonos à 10%", {{"Global", "Tele", "Off"},{"Function", function() fibaro:call(id["SONOS_REMOTE"], "setSlider",15, 10) end }}) -- On repasse le son de la PlayBar à 10%

 

 

Modifié par Sakkhho

Partager ce message


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

justement j'ai l'impression que la box ne le fait pas pour les volets et que le moteur du volet réagit tout de même. C'est embetant pour le moteur ;-)

Mon moteur Somfy à butées électroniques ne réagit pas, car il "sait" qu'il est déjà en buée, donc il n'essaie même pas de forcer inutilement. Aucun risque de l'user, la seule chose qu'on use c'est le relai du module FGR, pas méchant.

 

Mes volets Velux sont plus bêtes, ils essayent quand même.... et s'arrêtent au bout de 1 ou 2s.

  • Like 1

Partager ce message


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

 

@Johhny  Ouch, you are right, this is not possible with GEA 6.x but if possible just remove "TimeOfDay" from the header. (If not used as a trigger for an other line).

I will have work on this :-(

@Steven Im happly waiting for that feature :) Take your time. I can live without it for a time. Sadly I cant remove it from the header. Using it for other stuff.

Partager ce message


Lien à poster
Partager sur d’autres sites
V6.05 installée ! Rdv à 18h15 pour voir si les volets se sont fermés
Ça marche !!!!
Merci les pro du GEA

Envoyé de mon SM-A520F en utilisant Tapatalk

  • Like 2

Partager ce message


Lien à poster
Partager sur d’autres sites

@Sakkhho

ta ligne aura eu le mérite de detecter un bug, mais en 6.05 tu peux utiliser "Slider" directement sans passer par le "function" maintenant ;-)

@kristiano, ok i think i understand what you need. You would like to put your own translation in message like #time# and other.. I will see with @Steven if he is OK for adding this and if this has doesnt consequence on performance.  I think it's a good idea if really undersatnd what you want ;-)

 

PS : on s'est croise Steven ;-)

gea_6_06.lua

Partager ce message


Lien à poster
Partager sur d’autres sites

@Sakkhho

Pourrais-tu tester ce bug fix s'il te plait. C'est la future version mais pas encore officiel.

 

@Johhny

Can you please test this version too (not an official). To ignore an option as trigger, you can now put it between brackets like this :

GEA.add ({{"Global", "JohhnyHome", "1"}, {"(Global)", "TimeOfDay", "Night"}}, -1, "", {"VirtualDevice", VD["TTS"], "1"})

So in this case, only the JohhnyHome will trigger this line.

 

@Kristiano

You can have your own code anywhere in the message by writting your own function and add it in the message. Here is a simple exemple

 

In config() you can write your own options .. this one will called "mycode"

  GEA.options.mycode = { getValue=function() return "This is MY code" end }

In setEvents()

GEA.add(true, 0, "My message : {MyCode}")

So {MyCode} will call the GEA.options.mycode.getValue() et replace {MyCode} by the return value

 

The push message will be : "My message : This is MY code"

 

Now if you want to have the week of days you can add this line in your config()

GEA.options.weekofday = { getValue=function() return os.date("%A") end }

And use it like this

GEA.add(true, 0, "We are {WeekOfDay}")

 

I hope this is what you are asking about ?

gea_6_06.lua

Partager ce message


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

@Sakkhho

Could you test this fix bug please. This is the future version but not yet official.

 

@Johhny

Can you please test this version too (not an official). To ignore an option as trigger, you can put it between brackets like this:

GEA.add ({{"Global", "JohhnyHome", "1"}, {" ( Global ) ", "TimeOfDay", "Night"}}, -1, "", {"VirtualDevice", VD [" TTS "]," 1 "})

So in this case, only the JohhnyHome will trigger this line.

 

@Kristiano

You can have your own code in the message by writting your own function and add it in the message. Here is a simple example

 

In config () you can write your own options .. this one will be called "mycode"


     

In setEvents ()


  

So {MyCode} will call the GEA.options.mycode.getValue () and replace {MyCode} by the return value

 

The push message will be: "My message: This is MY code"

 

Now, if you want to add this line in your config ()


    

And use it like this


  

 

I hope this is what you are asking about?

gea_6_06.lua

Thanks! This would def. work.

 

But maybe its also possible to create a more generic function for all translation of substrings?

 

eg.

 

 message = message:gsub("#date#", GEA.options.date.getValue())
      message = message:gsub("#datefull#", GEA.options.datefull.getValue())
      message = message:gsub("#trigger#", GEA.options.trigger.getValue())
      message:gsub("#translate%(.-%)", function(c)
          local key, word = c:match("%((.-),(.-)%)")
          c = c:gsub("%[","%%%1"):gsub("%]","%%%1"):gsub("%(","%%%1"):gsub("%)","%%%1")
          message = message:gsub(c.."#", GEA.options.translate.getValue(key, word))
      end)
    end

-- Customer exit
custom_exit_translation(message)

    return message


function custome_exit_translation (message)
message = message = message:gsub("#weekday#"), os.date("%A")
end

Becuse then i could store all custom translation in one generic custom exit and add multiple lines.

Partager ce message


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

add multiple lines

I understand why not, but for me, it's the same than add lines in config() no ?

 

My opinion with a custom exit fonction, you have to add code it the heart of GEA. The idea of GEA V6 is that users can add their own code in config() without touch the heart of GEA and with different versions of GEA, config() won't be change.

 

Maybe @Steven will have an idea to add this type of function in config().

Partager ce message


Lien à poster
Partager sur d’autres sites

In LUA you can redefine all existing functions of GEA.

 

GEA use GEA.getMessage(message, forAnalyse) to convert any ## values.

 

So in your config() you can do this :

 

  local oldFunction = GEA.getMessage
  GEA.getMessage = function(message, forAnalyse)
    message = oldFunction(message, forAnalyse) 
    message = message .. " Thats it." -- or anything you need
    return message
  end

 

Otherwise, there is the existing custom exit function GEA.ouptut that you can use. Instead of pushing the message to your smartphone it call this function and pass it the message. So you can simply do what you want on the message, then pushing it.

GEA.ouptut = function(message)
   -- what you want to do here
   GEA.options.portable.action(GEA.portables, message) -- pushing the message
end

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Sweet! This worked and was exactly what I was looking for.

 

Talking about functions, I currently created my own external REST call function.

I created it outside of config() and setEvents() functions. correct?

 

The GEA function and line like this. Is this correct?

 

-- Custom functions
function httpRequest(url)
local selfhttp = net.HTTPClient() 
selfhttp:request(url, { options={ 
      headers = selfhttp.controlHeaders, 
      method = 'PUT', 
      timeout = 5000 
    }, 
    success = function(status) 
    fibaro:debug("STATUS: "..status.status) 
    fibaro:debug("DATA: "..status.data) 
    end, 
    error = function(err) 
    fibaro:debug("ERROR: "..err) end 
  })
end 





GEA.add({"Doorlock", id["UTILITY_DOOR"], 1}, -1, "", {{"Function", function() return httpRequest("https://10.0.1.1:80/start.php") end}})

 

Partager ce message


Lien à poster
Partager sur d’autres sites

@Kristiano

No, you can create your own function INSIDE config(), @Steven means this function config() for personal user's configuration like you need with message.

In config() you shoud do something like that

GEA.options.httpRequest = { name="HttpRequest",
          action==function(url)
              local selfhttp = net.HTTPClient()
              selfhttp:request(url, { options={ headers = selfhttp.controlHeaders, method = 'PUT', timeout = 5000 },
              success = function(status) fibaro:debug("STATUS: "..status.status) fibaro:debug("DATA: "..status.data) end,
              error = function(err) fibaro:debug("ERROR: "..err) end })
          end
       }

and use it as :

GEA.add({"Doorlock", id["UTILITY_DOOR"], 1}, -1, "", {"HttpRequest", "https://10.0.1.1:80/start.php"})

 

Partager ce message


Lien à poster
Partager sur d’autres sites

×