Aller au contenu

Messages recommandés

Posté(e)
Il y a 14 heures, Lazer a dit :

Pour ce que tu veux faire, il faut utiliser le QuickApp GEA Alarm :

mais en fait je serai confronté à un problème similaire :

configurer l'alarme sur base d'une variable (valeur calculée tous les jours à 5h30)

-- Réglage de l'heure de l'alarme n°2 sur 22h22 :
GEA.add( {CONDITION}, 30, "", {"QuickApp", id["QA_ALARM"], "setTime", 2, "22:22"})

(je devrais remplacer "22:00" dans ton exemple par le contenu d'une variable ...)

Posté(e) (modifié)

J'ai regardé le code de GEA, et je confirme que ce n'est pas possible, "Time" ne peut prendre que des chaines de caractères contenant une heure.

 

Pour définir l'heure avec GEA Alarm, comme tu l'as vu il faut appeler la fonction setTime() du QuickApp.

Et là pour le coup, tu n'es pas limité à une chaine de caractère de type string, tu peux la définir programmatiquement.

Je n'ai pas essayé depuis une Variable Globale ou une Variable Cache (ça devrait fonctionner), mais je l'ai testé avec "Function" (qui est bien plus puissant car on peut s'en servir pour calculer l'heure désirée en fonction de plein de critères).

Exemple basique :

GEA.add( {CONDITION}, 30, "", {"QuickApp", id["QA_ALARM"], "setTime", 2, {"Function", function() return "22:22" end}})

Dans cet exemple ultra simple, la fonction retourne bêtement la chaine "22:22" (j'espère que tu as relevé le choix de cette heure si particulière pas du tout due au hasard ;):D ), mais comme c'est du LUA dans la fonction, tu peux faire ce que tu veux, et retourner la valeur qui te plait, du moment que la valeur retournée est une heure au format chaine de caractères.

 

Et puisque tu parles de valeur calculée tous les jours à 5h30, je pense qu'avec cette astuce tu vas pouvoir grouper 2 règles GEA en 1 seule, c'est à dire la règle qui calcule l'heure est la même que celle qui affecte l'heure au QA GEA Alarm.

Cela simplifie le code, et cela économise l'emploi d'une variable qui devient inutile.

 

"Function" est ultra puissant, la seule limite est notre imagination.

 

Modifié par Lazer
Posté(e)
Il y a 2 heures, Lazer a dit :

j'espère que tu as relevé le choix de cette heure si particulière pas du tout due au hasard ;):D

La grande claaaaasse , surtout que posté à

image.png.b4741c663acf377520a50b99ba9f9c95.png

 

Il y a 2 heures, Lazer a dit :

je l'ai testé avec "Function" (qui est bien plus puissant

en fait j'utilise GEA comme trigger d'exécution de mon code LUA dans une QA, car tout est plus lisible ainsi.

-- Pompe
GEA.add ({"Time", "05:15", "05:30"}, 0, "",
         {"QuickApp", id["GESTION_PISCINE"], "DureePompe"})

et le code LUA :

function QuickApp:DureePompe()
    self:debug("DureePompe")
    local TmpSeuil = fibaro.getValue(id["PISCINE_TMPSEUIL"],"value")
    local PiscineHrDebut = self:getVariable("PiscineHrDebut")
    self:trace("Piscine_TmpSeuil = "..TmpSeuil.."°C")
    self:trace("QAVariable PiscineHrDebut = "..PiscineHrDebut)
    PiscineHrDebut = tonumber(string.sub(PiscineHrDebut,1,string.find(PiscineHrDebut,":")-1))
    self:trace("PiscineHrDebut = "..tostring(PiscineHrDebut))
    if TmpSeuil < tonumber(self:getVariable("PiscineTmp0")) then
        PiscineHrFin = PiscineHrDebut + tonumber(self:getVariable("PiscineHrDur0"))
    elseif (TmpSeuil >= tonumber(self:getVariable("PiscineTmp0")) and
           TmpSeuil < tonumber(self:getVariable("PiscineTmp1"))) then
        PiscineHrFin = PiscineHrDebut + tonumber(self:getVariable("PiscineHrDur1"))
    elseif (TmpSeuil >= tonumber(self:getVariable("PiscineTmp1")) and
           TmpSeuil < tonumber(self:getVariable("PiscineTmp2"))) then
        PiscineHrFin = PiscineHrDebut + tonumber(self:getVariable("PiscineHrDur2"))
    elseif (TmpSeuil >= tonumber(self:getVariable("PiscineTmp2")) and
           TmpSeuil < tonumber(self:getVariable("PiscineTmp3"))) then
        PiscineHrFin = PiscineHrDebut + tonumber(self:getVariable("PiscineHrDur3"))
    elseif (TmpSeuil >= tonumber(self:getVariable("PiscineTmp3")) and
           TmpSeuil < tonumber(self:getVariable("PiscineTmp4"))) then
        PiscineHrFin = PiscineHrDebut + tonumber(self:getVariable("PiscineHrDur4"))
    elseif TmpSeuil >= tonumber(self:getVariable("PiscineTmp4")) then
        PiscineHrFin = PiscineHrDebut + tonumber(self:getVariable("PiscineHrDur5"))
    end
    if PiscineHrFin > 24 then
        PiscineHrFin = PiscineHrFin - 24
    end
    PiscineHrFin = tostring(PiscineHrFin)
    if string.len(PiscineHrFin) == 1 then
        PiscineHrFin = "0"..PiscineHrFin
    end
    PiscineHrFin = PiscineHrFin .. ":00"
    self:trace("PiscineHrFin = "..PiscineHrFin)
    self:setVariable("PiscineHrFin", PiscineHrFin)
    self:trace("QAVariable PiscineHrFin = "..self:getVariable("PiscineHrFin"))
end

maintenant l'idée serait de mettre le résultat de mon LUA dans la variable du QA (idéalement, ou dans une VG) au bon format (avec ou sans " ou autre ?) et d'en récupérer la valeur avec la fonction. Mais quel code pour la fonction ?

Posté(e) (modifié)

Ah ben si tu as un QA externe qui fait tout le boulot de détermination de l'heure, alors c'est encore plus facile, je ne sais même pas pourquoi tu poses la question puisque tu connais (mais a oublié :P ) déjà les réponses ;)

fibaro.call(ID_GEA_Alarm, "setTime", numéro_alarme, PiscineHrFin)

Au format "00:00" bien entendu.

 

(ou hub.call si tu préfères)

 

Modifié par Lazer
Fautes de syntaxe
  • Thanks 1
Posté(e) (modifié)
Le 24/06/2022 à 17:52, 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

Salut @jojo pour ma part dans GEA, j'ai renseigné l'ID de mon smartphone (729) et les notifs passent nickel. Mais merci pour d'avoir soulevé ce point

Modifié par Yannick
Posté(e)

Bonjour,

 

Il serait intéressant d'avoir tout ton GEA à la fin @jojo.
Tu as l'air d'avoir des trucs assez complet ;)

 

Si jamais tu peux poster ça, ça m'intéresse :77:

 

Bonne journée

  • Like 1
Posté(e)

Pour rappel, il y a 2 showroom GEA sur le forum.

Qui datent de la HC2 certes, mais la plupart des exemples sont encore valables, ça peut vous servir d'inspiration.

En tout cas c'est là bas qu'il faut partager vos codes, ici c'est le topic du Support GEA, donc pour demander de l'aide.

Posté(e)

ne ferait-on pas alors un Showroom GEA HC3 pour éviter la confusion .

Il y a 22 heures, Manu31 a dit :

Si jamais tu peux poster ça, ça m'intéresse :77:

c'est le principe fondamental de ce forum : entraide et partage.

En ce qui me concerne, je ne suis qu'en phase de préparation de ma migration (même si mon GEA fait déjà plus de 200 lignes)

D'ici fin août (j'espère) il devrait être ok à 90%.

Mais je peux, si tu le désires, déjà poster ce que j'ai, là où dieu :13:me dira de le faire

Posté(e)

Trop bien !!!

 

Bon moi je suis pas à 90% loin de là, et quand je commence simplement à essayer de faire des trucs ça plante.

Voilà : je veux simplement déclarer mes id locaux j'ai un crash

	local id = {
        spa = 777
        Danfoss_sejour = 723
  	}

 

et j'ai ça dans le debug

[30.06.2022] [10:16:00] [ERROR] [QUICKAPP728]: QuickApp crashed[30.06.2022] [10:16:00] [ERROR] [QUICKAPP728]: config.lua:16: '}' expected (to close '{' at line 14) near 'Danfoss_sejour'

et autre question : si j'ai plusieurs modules identiques que je veux piloter en mêle temps, est-ce que je peux faire ça ? comme dans une scène ?

local Danfoss_sejour = {723,724,725} 

Merci

Posté(e)

dans la définition de ton tableau d'id, tu as oublié une , après ... = 177

 

tu as deux solutions

  1. dans GEA, tu crées plusieurs actions (séparées par des , )
  2. tu crées un QA "Linked Devices" Binary Sensor, c'est comme un groupe de modules que tu peux actionner en agissant que sur ce QA => essaie.

 

P.S. prends le temps de lire la super doc de syntaxe écrite par @Lazer, tu auras pleins d'idées

Posté(e)

Pour répondre à ta 2nde question @Yannick oui tu peux exécuter la même action sur plusieurs devices en même temps avec GEA, il faut les regrouper entre accolades.

Il y a plusieurs exemples dans la doc de syntaxe.

 

Exemple :

GEA.add( CONDITIONS, 30, "", {"TurnOn", {id["lampe_sejour"], id["lampe_salon"]}})

 

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

dans la définition de ton tableau d'id, tu as oublié une , après ... = 177 

 

tu as deux solutions

  1. dans GEA, tu crées plusieurs action (séparées par des , )
  2. tu crées un QA "Linked Devices" Binary Sensor, c'est comme un groupe de modules que tu peux actionner en agissant que sur ce QA => essaie.

 

P.S. prends le temps de lire la super doc de syntaxe écrite par @Lazer, tu auras pleins d'idées

Salut @jojo

 

Aaaaaaaaah voilà pourquoi alors.

Je vais regarder cette doc alors et revenir vers vous si je ne m'en sors pas !!!

 

Merci

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

Pour répondre à ta 2nde question @Yannick oui tu peux exécuter la même action sur plusieurs devices en même temps avec GEA, il faut les regrouper entre accolades.

Il y a plusieurs exemples dans la doc de syntaxe.

 

Exemple :


GEA.add( CONDITIONS, 30, "", {"TurnOn", {id["lampe_sejour"], id["lampe_salon"]}})

 

Merci @Lazer

Posté(e)

Sur le topic de GEA pour HC3 ;)

 

PS : profites-en pour mettre à jour ta signature afin d'indiquer que tu as une HC3, ça simplifiera l'aide qu'on peut t'apporter, car il y a des différences entre les 2 box.

 

Posté(e)

il y a 3 liens à mettre dans tes favoris (en plus de celui vers ce forum)

 

 

 

tous les autres favoris sont PARFAITEMENT inutiles (allez, soyons fair-play, tu peux rajouter Google) :98:

  • Like 1
Posté(e)
Le 27/06/2022 à 14:56, Lazer a dit :

fibaro.call(ID_GEA_Alarm, setTime, PiscineHrFin)

Au format "00:00" bien entendu.

dans le fibaro.call, ça ne devrait pas être "setTime" au lieu de setTime (=> rajouter des ")

et si on veut préciser que c'est l'heure de l'alarme # 2, que faut-il mettre ? (car dans GEA c'est possible)

-- Réglage de l'heure de l'alarme n°2 sur 22h22 :
GEA.add( {CONDITION}, 30, "", {"QuickApp", id["QA_ALARM"], "setTime", 2, "22:22"})

 Merci (encore une fois)

Posté(e)

Si, bien vu pour "setTime" :60:

Et du coup, mon exemple était doublement faux, car il manque le numéro d'alarme désirée.

Donc ça donne :

hub.call(ID_GEA_Alarm, "setTime", 2, "22:22")

 

Quand tu as un doute, tu vas voir le code source LUA (c'est ce que je fais tout le temps.... car on fait plus d'erreurs dans les docs)

La fonction est définir ainsi :

function QuickApp:setTime(alarmID, heure)
	--
end

Donc on a bien l'ID de l'alarme en 1er argument, avant l'heure.

 

Que ça soit en LUA, via GEA, ou encore l'API HTTP, les arguments des fonctions doivent toujours être donnés dans le même ordre si on veut que ça fonctionne.

 

  • Thanks 1
Posté(e)

n'espérant pas une réponse si rapide (tu as mis un -1 dans ce topic ?), j'étais en train d'essayer de faire du reverse engineering de ce code de malade. Mais n'étant PAS DU TOUT développeur, j'avais peu d'espoir de trouver la réponse ...

Posté(e)

Ouais, le -1 en langage courant ça s'appelle une notification, c'est magique :D

 

Le code du QuickApp "GEA Alarm" est très simple :)

C'est le code de GEA qui est un truc de malade...

Posté(e)

merci les chefs...

 

Bon par contre, j'ai réglé mon pb de capteur qui capte pas ça c'est bon mais l'action GEA ne fonctionne pas.

 je redonne mon code

 

  GEA.add({{"Value+", id["BAL"], 0}}, 0, "GEA Courrier reçu")

c'est pas Value pour un FGK qu'il faut checker ???

Posté(e)

Réponse par une question : c'est pour HC2 ou HC3 cette règle là ?

 

Parce que 0 et 1 c'étaient les valeurs que prennaient les capteurs sur HC2.

Sur HC3 c'est plus propre, c'est true/false
 

en disant cela normalement ça te donne la réponse

×
×
  • Créer...