Aller au contenu

Recommended Posts

je teste  GEA Alarm.

Les alarmes sont bien réglées comme je veux :74:

mais elles n'agissent pas comme je le souhaite.

Ai-je fait une erreur dans mon code GEA ?

GEA.add ({"Alarm", id["GEA_ALARME_PISCINE"], 1}, 0, 
         "Démarrage pompe piscine", {"TurnOn", id["PISCINE_POMPE"]})
GEA.add ({"Alarm", id["GEA_ALARME_PISCINE"], 2}, 0, 
         "Arrêt pompe piscine", {"TurnOff", id["PISCINE_POMPE"]})

 

Partager ce message


Lien à poster
Partager sur d’autres sites

A priori la syntaxe est OK.
Mais comme je ne suis pas devin, je n'arrive pas à voir le log que tu n'as pas copié/collé :P

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 30/06/2022 à 10:21, Yannick a dit :

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
  	}

 

@Yannick voici le code d'une scène LUA qui dans son débug génère (pièce par pièce) une liste des modules et leur id.

Il s'agit d'un code qui (de mémoire) a été créé par @Steven er je suppose (comme d'hab) rendu compatible avec la HC3 par @Lazer.

local hidden = false --- true pour exporter les devices cachés
local dead = false -- true pour exporter les devices morts
 
local excludeType = {"com.fibaro.zwaveDevice", "weather", "HC_user", "iOS_device", "com.fibaro.voipUser"}
local excludeID = {}
local devicesJSon = api.get("/devices")
 
local devices = {}
local names = {}
local rooms = {}
 
function addName(name, roomname)
	if (type(names[name]) == "nil") then
		names[name] = true
		return name
	else 
		return addName(name.."_"..roomname, roomname)
	end
end
 
function getRooms() 
	local roomsJSon = api.get("/rooms")
	rooms[0] = "inconnu"
  	for k, v in ipairs(roomsJSon) do
    	rooms[v.id] = v.name
    end
end
 
function rename(name, roomname)
  local name = name:upper():gsub("[éêèë]", "E"):gsub("EE", "E"):gsub("[ûüù]", "U"):gsub("UU", "U"):gsub("[àâä]", "A"):gsub("AA", "A"):gsub("[öô]", "O"):gsub("OO", "O"):gsub("[îï]", "I"):gsub("II", "I"):gsub("%W", "_")
  local roomname = roomname:upper():gsub("[éêèë]", "E"):gsub("EE", "E"):gsub("[ûüù]", "U"):gsub("UU", "U"):gsub("[àâä]", "A"):gsub("AA", "A"):gsub("[öô]", "O"):gsub("OO", "O"):gsub("[îï]", "I"):gsub("II", "I"):gsub("%W", "_")
  return addName(name, roomname)
end
 
getRooms()
 
for k, v in pairs(devicesJSon) do
    local doit = (hidden or v.visible) and (dead or not v.dead)
  	if (doit) then  
  		for h, w in pairs(excludeType) do
      		if (v.type == w) then
        		doit = false
        	end
        end
    	if (doit) then
			for h, w in pairs(excludeID) do
        		if (v.id == w) then
          			doit = false
        		end
      		end
      	end
	end
  	if (doit) then
		table.insert(devices, v)
   	end
end
 
table.sort(devices, function(a,b) return a.roomID<b.roomID end)
 
local result = "<BR><BR>-- IDs générés le : " .. os.date("%d/%m/%y à %X")
local room = -1
local lastinfo = "";
 
result = result .. "<BR><BR>local id = {"
for k, v in ipairs(devices) do
  	if (room ~= v.roomID) then
    	room = v.roomID
    	result = result .. "<BR>--"..rooms[v.roomID].."<BR>"
    end
  	lastinfo = rename(v.name, rooms[v.roomID])
	result = result .. lastinfo .. " = " .. v.id .. ", "
end
result = result .. "<BR>}"
result = result .. "<BR>"
result = result .. "<BR>-- usage :"
result = result .. "<BR>--     fibaro:getValue(id[\""..lastinfo .."\"], \"value\")"
result = result .. "<BR>--     GEA.add(id[\""..lastinfo .."\"], 30, \"\")"
result = result .. "<BR>--     to add in the following QA :"
result = result .. "<BR>--        GEA"
print(result)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Je n'ai pas souvenir avoir jamais utilisé cette scène, donc ce n'est pas moi qui l'ai porté sur HC3 ; )

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut, salut,

 

Alors après lecture de la doc de syntaxe, j'avoue ne pas vraiment trouver la réponse à mon interrogation.

Voici ma ligne GEA

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

Voici le DEBUG

[04.07.2022] [12:29:43] [TRACE] [QA_GEA_728]: ----------------------------------------------------------------------------------------------------
[04.07.2022] [12:29:43] [TRACE] [QA_GEA_728]: Démarrage par événement de GEA 7.37 : mode device #653 Boîte à Lettres (Couloir) value
[04.07.2022] [12:29:43] [TRACE] [QA_GEA_728]: ----------------------------------------------------------------------------------------------------
[04.07.2022] [12:29:43] [DEBUG] [QA_GEA_728]: Ajout immédiat #7 : ["Value+",[653,0]] => 
[04.07.2022] [12:29:43] [DEBUG] [QA_GEA_728]: @0s [Validation] #7 : ["Value+",[653,0]] => 

Mais je ne reçois pas la notif  mais sans aucun message d'erreur ! une subtilité ?

@Lazer tu me dis que les 0 et 1 sur la HC3 sont devenus "true" et "false" mais apparemment, au vu du debug, ça à l'air de fonctionner on ?

 

Autre truc que je ne comprends pas :

 Voici ma ligne GEA

GEA.add({"Time","Sunset+45"}, 0, "Fermeture des volets",{"Close", id["Volets"]})

lorsque je je modifie la variable "Time" avec une heure fixe----> ça fonctionne

Si je mets "Sunset+45"... rien ne se passe sans aucun message d'erreur

 

Enfin voilà à l'aide quoi

 

Sinon j'ai fait cela aussi :

GEA.add({"Value+", id["temp_ext"], 23}, 30, "Température > 23° Je Baisse les Volets", {"Open", id["Volets"],25})

et ben là ça fonctionne nickel !!!!!

 

Merci beaucoup

Modifié par Yannick

Partager ce message


Lien à poster
Partager sur d’autres sites

1/

Non parce que sinon dans GEA tu aurais eu [Démarrage] ...

Explication : 0 ou 1 ne peut en aucun cas être égal à true ou false, donc pour GEA, d'un point de vue LUA, la condition n'est jamais valide.

Je t'ai déjà dit d'oublier les 0 et les 1, c'était sur HC2 ça ;)

Donc soit tu utilises true/false dans tes conditions, soit tu utilises l'écriture abrégée avec uniquement l'ID de ton module (voir la doc pour les nombreux exemples)

Attention aussi à ton "+" aussi qui traine dans le Value et qui n'a rien à faire là.

 

2/
Essaye de mettre un intervalle plutôt qu'une heure fixe dans ta condition Time.

Je le redis à chaque fois, mais GEA n'est pas adapté au déclenchement à heure fixe.

Un intervalle de 1 ou 2 minutes suffit normalement.

Là aussi, dans la doc il y a plusieurs exemples.

 

Partager ce message


Lien à poster
Partager sur d’autres sites
GEA.add({"Time", "sunset", "22:00"}, 30, "Fermeture des volets",{"Close", id["Volets"]})
GEA.add({"Value", id["BAL"], true}, -1, "GEA Courrier reçu")

de ce style ?

On est d'accord que, comme dans l'exemple de la doc, je lui dis que, au coucher du soleil, et pas avant 22:00, tu fermes les volets ?

Ah, non zut, comme ça

GEA.add({"Time", "sunset>22:00", "22:05"}, 30, "Fermeture des volets",{"Close", id["Volets"]})

et pas après 22H05

Modifié par Yannick

Partager ce message


Lien à poster
Partager sur d’autres sites

ça m'a l'air bon ainsi.

Cela dit pour les Sunset "pas avant..." je ne maitrise vraiment pas, donc il faut faire confiance à ce qui est documenté.

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a une heure, Yannick a dit :

GEA.add({"Time", "sunset", "22:00"}, 30

cela veut dire : si on est pendant 30 sec entre le sunset  (d'après la doc cela devrait être Sunset) et 22h00, alors ...

il y a une heure, Yannick a dit :

GEA.add({"Value", id["BAL"], true}

tu pourrais mettre (comme suggéré par @Lazer) GEA.add(id["BAL"], -1, ...

il y a une heure, Yannick a dit :

GEA.add({"Time", "sunset>22:00", "22:05"}, 30,

Remarque 1 : il faudrait écrire Sunset (et pas sunset)

La condition ici est au coucher du soleil (si le coucher du soleil est après 22h) sinon entre 22h et 22h05. 

Partager ce message


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

Cela dit pour les Sunset "pas avant..." je ne maitrise vraiment pas, donc il faut faire confiance à ce qui est documenté.

c'est vraue cette partie là de la doc, il faut essayer de la comprendre avant l'apéro

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 03/07/2022 à 17:30, Lazer a dit :

Mais comme je ne suis pas devin, je n'arrive pas à voir le log que tu n'as pas copié/collé :P

ou bien je ne suis pas bon en Français, mais être devin, n'est-ce pas le propre des dieux ? :)

 

J'ai donc mis une alarme à 18h29

image.png.1961c2e47de2735aa1926e143cf0f5a5.png

, j'ai mis en commentaire toutes les autres règles GEA (pour avoir un log lisible)

[04.07.2022] [18:28:18] [DEBUG] [QA_GEA_167]: ... check running #16 @480s...
[04.07.2022] [18:28:19] [DEBUG] [QA_GEA_167]: @480s [Validation] #5 : ["Alarm",[254,1]] => ["TurnOn",[233]] *repeat*
[04.07.2022] [18:28:19] [DEBUG] [QA_GEA_167]: @480s [Validation] #6 : ["Alarm",[254,2]] => ["TurnOff",[233]] *repeat*
[04.07.2022] [18:28:48] [DEBUG] [QA_GEA_167]: ... check running #17 @510s...
[04.07.2022] [18:28:48] [DEBUG] [QA_GEA_167]: @510s [Validation] #5 : ["Alarm",[254,1]] => ["TurnOn",[233]] *repeat*
[04.07.2022] [18:28:48] [DEBUG] [QA_GEA_167]: @510s [Validation] #6 : ["Alarm",[254,2]] => ["TurnOff",[233]] *repeat*
[04.07.2022] [18:29:18] [DEBUG] [QA_GEA_167]: ... check running #18 @540s...
[04.07.2022] [18:29:18] [DEBUG] [QA_GEA_167]: @540s [Validation] #5 : ["Alarm",[254,1]] => ["TurnOn",[233]] *repeat*
[04.07.2022] [18:29:18] [DEBUG] [QA_GEA_167]: @540s [Validation] #6 : ["Alarm",[254,2]] => ["TurnOff",[233]] *repeat*
[04.07.2022] [18:29:48] [DEBUG] [QA_GEA_167]: ... check running #19 @570s...
[04.07.2022] [18:29:48] [DEBUG] [QA_GEA_167]: @570s [Validation] #5 : ["Alarm",[254,1]] => ["TurnOn",[233]] *repeat*
[04.07.2022] [18:29:48] [DEBUG] [QA_GEA_167]: @570s [Validation] #6 : ["Alarm",[254,2]] => ["TurnOff",[233]] *repeat*
[04.07.2022] [18:30:18] [DEBUG] [QA_GEA_167]: GEA run since 10m - Memory used: 937.34 KB - CPU consumed: 552.18 ms ( 0.046 % )
[04.07.2022] [18:30:18] [DEBUG] [QA_GEA_167]: ... check running #20 @600s...
[04.07.2022] [18:30:18] [DEBUG] [QA_GEA_167]: @600s [Validation] #5 : ["Alarm",[254,1]] => ["TurnOn",[233]] *repeat*
[04.07.2022] [18:30:18] [DEBUG] [QA_GEA_167]: @600s [Validation] #6 : ["Alarm",[254,2]] => ["TurnOff",[233]] *repeat*
[04.07.2022] [18:30:48] [DEBUG] [QA_GEA_167]: ... check running #21 @630s...
[04.07.2022] [18:30:48] [DEBUG] [QA_GEA_167]: @630s [Validation] #5 : ["Alarm",[254,1]] => ["TurnOn",[233]] *repeat*
[04.07.2022] [18:30:48] [DEBUG] [QA_GEA_167]: @630s [Validation] #6 : ["Alarm",[254,2]] => ["TurnOff",[233]] *repeat*

pour rappel voici mon GEA

function setEvents()
	-- ==========================================================
	-- Règles utilisateur
	-- ==========================================================
-- IDs générés le : 01/07/22 à 19:47:16

local id = {
...
--Piscine
PISCINE_CHAUFFAGE = 234, PISCINE_TMP = 232, PISCINE_TMPSEUIL = 230, PISCINE_TMPLAST = 231, PISCINE_THERMOSTAT = 235, PISCINE_POMPE = 233, GEA_ALARME_PISCINE = 254, PISCINE_MODEHIVER = 213, GESTION_PISCINE = 214, PISCINE_TMPAUTH = 252,
...
}
...
GEA.add ({"Alarm", id["GEA_ALARME_PISCINE"], 1}, 0, 
         "Démarrage pompe piscine", {"TurnOn", id["PISCINE_POMPE"]})
GEA.add ({"Alarm", id["GEA_ALARME_PISCINE"], 2}, 0, 
         "Arrêt pompe piscine", {"TurnOff", id["PISCINE_POMPE"]})
...
end

je ne vois de spécial dans le log :huh:

Partager ce message


Lien à poster
Partager sur d’autres sites

Effectivement, tout semble OK, et pourtant rien ne se déclenche.

Là, ça ressemble à un bug.... hum, ça ne va pas être évident à trouver ça, il va falloir que je me replonge dans le code :huh:

 

Juste comme ça, tu peux essayer avec 1 seule règle d'alarme dans ta config ?

Partager ce message


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

cela veut dire : si on est pendant 30 sec entre le sunset  (d'après la doc cela devrait être Sunset) et 22h00, alors ...

Salut Jojo. J'ai modifié avec le S au lieu du s.. mais hier soir, ça a fonctionné. je verrais ce soir.

Il y a 15 heures, jojo a dit :

tu pourrais mettre (comme suggéré par @Lazer) GEA.add(id["BAL"], -1, ...

tu veux dire comme ça ?

GEA.add({"Value", id["BAL"],-1, true},30, "Courrier reçu")

je vais faire une scène blocs pour ma notif de courrier, cela fonctionnait avant, je voulais juste faire un minimum de scènes pour ne pas blinder ma box.

Merci pour votre aide quand même @Lazeret @jojo. si ça pouvait marcher ce serait cool pour la gestion centralisée.

 

j'avais rajouté ça dans mon GEA pour avoir les heures de levé et couché du soleil de la box mais j'ai pas les infos dans mon push

GEA.add(true, 0, "Le levé du soleil est prévu à #Sunrise# et le couché à #Sunset#")

ça me renvoie le texte brut : "Le levé du soleil est prévu à #Sunrise# et le couché à #Sunset#"

 

et une dernière question pour aujourd'hui svp ?

J'ai fait cette ligne de code pour faire cela : Entre 08h et 22h, si la t° ext redescend en dessous de 20°, j'ouvre les volets. Pour moi ça se traduit comme ça : j'ai bon ?

 GEA.add({{"Time", "08:00", "22:00"}, "Value-", id["temp_ext"], 20}, 30, "Température < 20° J'ouvre les Volets", {"Open", id["Volets"]})

J'ai un doute

Modifié par Yannick

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a une heure, Yannick a dit :

tu veux dire comme ça ?


GEA.add({"Value", id["BAL"],-1, true},30, "Courrier reçu")

Non non, inutile de rajouter tout ces trucs inutiles, il fallait l'écrire comme Jojo te l'a dit.

C'est l'écriture abrégée, très pratique, surtout plus lisible.

Encore une fois, il y a plein d'exemples dans la doc, tu devrais vraiment l'ouvrir.

 

il y a une heure, Yannick a dit :

J'ai fait cette ligne de code pour faire cela : Entre 08h et 22h, si la t° ext redescend en dessous de 20°, j'ouvre les volets. Pour moi ça se traduit comme ça : j'ai bon ?


 GEA.add({{"Time", "08:00", "22:00"}, "Value-", id["temp_ext"], 20}, 30, "Température < 20° J'ouvre les Volets", {"Open", id["Volets"]})

Attention il te manque des accolades autour de ta seconde condition Value-

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites
 GEA.add({{"Time", "08:00", "22:00"}, {"Value-", id["temp_ext"], 20}}, 30, "Température < 20° J'ouvre les Volets", {"Open", id["Volets"]})

de cette façon alors... ouais je vais plancher là-dessus. quand tu me parle de la doc c'est bien la doc de syntaxe ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui la doc de syntaxe, surtout que @jojo l'a mis à jour récemment.

 

Ta syntaxe me semble OK.

 

Il y a 2 heures, Yannick a dit :

GEA.add(true, 0, "Le levé du soleil est prévu à #Sunrise# et le couché à #Sunset#")

Il faudrait vérifier dans la doc (toujours elle :lol: ) mais je pense que ça ne doit pas être supporté.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Ben pourtant c'est dans la doc !!!

 

 Line 2010 -- #sunrise# - #sunset# : {Sunrise} / {Sunset}
 Line 2011 GEA.add(true, 0, "Le levé du soleil est prévu à {Sunrise} et le couché à {Sunset}") 

:2:

Partager ce message


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

tu veux dire comme ça ?



GEA.add({"Value", id["BAL"],-1, true},30, "Courrier reçu")

Non non, inutile de rajouter tout ces trucs inutiles, il fallait l'écrire comme Jojo te l'a dit.

C'est l'écriture abrégée, très pratique, surtout plus lisible.

Encore une fois, il y a plein d'exemples dans la doc, tu devrais vraiment l'ouvrir.

ça fonctionne !!!!

Simple en fait

GEA.add(id["BAL"], -1, "Courrier Reçu")

Merciiiiiiiiiiiiiiiiiiiiii :13:

Modifié par Yannick

Partager ce message


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

GEA.add({{"Time", "08:00", "22:00"}, "Value-", id["temp_ext"], 20}, 30, "Température < 20° J'ouvre les Volets", {"Open", id["Volets"]})

l'idée est bonne mais erreurS de {

c'est ceci qu'il faut

GEA.add({{"Time", "08:00", "22:00"}, {"Value-", id["temp_ext"], 20}}, 30, "Température < 20° J'ouvre les Volets", {"Open", id["Volets"]})

 

Partager ce message


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

GEA.add({{"Time", "08:00", "22:00"}, {"Value-", id["temp_ext"], 20}}, 30, "Température < 20° J'ouvre les Volets", {"Open", id["Volets"]})

Oui c'est ce que j'avais corrigé @jojo

Partager ce message


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

GEA.add({"Value", id["BAL"],-1, true},30, "Courrier reçu")

ce que j'ai compris de @Lazer, c'est ceci (je ne peux pas tester)

GEA.add(id["BAL"],30, "Courrier reçu")

 

Partager ce message


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

{"Value", id["BAL"],-1, true}

comment cela peut-il fonctionner ?

d'après la doc :

-- "Value" : Teste/modifie la valeur d'un module

	-- SYNTAXE :
	{"Value" , <id module>, <valeur>}

   	-- CONDITIONS :
	GEA.add( {"Value" , 73, 50}, 30, "", {ACTIONS} )               -- Si la valeur du module 73 est égale à 50 \\ If value of device 73 is equal to 50

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Non non

il y a 13 minutes, jojo a dit :
GEA.add(id["BAL"], -1, "Courrier Reçu")

 

Comme tu m'as dit de faire ça fonctionne. ... avec ce code !

c'est parfait et instantané

Modifié par Yannick

Partager ce message


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

Effectivement, tout semble OK, et pourtant rien ne se déclenche.

Là, ça ressemble à un bug.... hum, ça ne va pas être évident à trouver ça, il va falloir que je me replonge dans le code :huh:

 

Juste comme ça, tu peux essayer avec 1 seule règle d'alarme dans ta config ?

où souhaites-tu continuer la discussion puisque c'est un bug suspecté ?

  • ici ou

?

Partager ce message


Lien à poster
Partager sur d’autres sites

×