Aller au contenu

Recommended Posts

salut 

 

je cherche à comprendre le code

 

voici ce que je comprend:

si variable AlarmeG1 = On alors passer la variable local a TRUE

si variable AlarmeG1 = off alors passr la variable à False

 

 

mai la je comprend pas trop :  GEA.add({id["POSITION_PORTAIL"], {"Function", function() return AlarmeG1 end}}, 30 , "" , {{"turnOn",id["ECL_ENTREE"]}})

 

 AlarmeG1 = false

 -- Alarme armée depuis 5 mins
GEA.add({"Global", "AlarmeG1", "On"}, 5*60, "", {{"Function", function() AlarmeG1 = true end}})

-- Alarme desarmee depuis 30 secs
GEA.add({"Global!", "AlarmeG1", "On"}, 30, "", {{"Function", function() AlarmeG1 = false end}})

GEA.add({id["POSITION_PORTAIL"], {"Function", function() return AlarmeG1 end}}, 30 , "" , {{"turnOn",id["ECL_ENTREE"]}})

 

 

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

La variable AlarmeG1 est initialisee a false par defaut.
Quand l alarme est armee DEPUIS 5 mins, elle passe à TRUE.

@banzai sort de chez lui :
1- armement de l alarme
2- moins de 5 mins, ouverture du portail, la luliere ne s'allume pas.

@banzai rentre.
1- alarme armee depuis plus de 5 mins,
2- ouverture du portail, lumiere s'allume.

Dans la ligne que tu ne comprends pas : en condition :
1- ouverture du portail
ET
2- le return teste si AlarmeG1est TRUE

En esperant avoir ete clair :-)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à tous

 

J'essaie péniblement de mettre en place ma surveillance mais je galère énormément.

J'arrive à effectuer ma 1ère ligne à savoir pour résumer si Absence on met la variable Surveillance à 1 après 70 sec

C'est sur ma 2ème action que je bloque. Je veux en cas d'ouverture pour l'instant d'une fenêtre ID=44 que la variable Alarme soit = à 1

Ensuite le reste fonctionnera je pense. J'y ajouterai un push et une sirène que j'ai déjà testé.

Je n'arrive pas comprendre comment GEA interprète l'ouverture de fenêtre. Je ne sais pas si j'ai oublié de renseigner des informations sur la fenêtre ou trop mis.

 

J'ai ceci dans le DEBUG :

[DEBUG] 15:44:58: [ Intrusion=0 ] Add Autostart : ajout de la tâche pour 70 secondes (ID: 1) [Global,Surveillance,1] [If..]
[DEBUG] 15:44:58: GEA Version 5.42 : en exécution...
[DEBUG] 15:47:39: [ 44 | n/a ] Add Property : ajout de la tâche pour lancement instantané (ID: 2) [Global,Alarme,1]
[DEBUG] 15:47:39: GEA Version 5.42 : en exécution...
[DEBUG] 15:47:39: [ 44 | n/a ] sendActions : traitement des actions (ID: 2) [Global,Alarme,1]
[DEBUG] 15:47:39: [ 44 | n/a ] sendActions : !ACTION! : setGlobal Alarme,1 (ID: 2) [Global,Alarme,1]
[DEBUG] 15:47:42: [ 44 | n/a ] Add Property : ajout de la tâche pour lancement instantané (ID: 2) [Global,Alarme,1]

--[[
%% autostart
%% properties
44 value
%% globals
Intrusion
Occupation
Alarme
Push
Surveillance
--]]

local id = 
  
-- Mise sous surveillance de la maison apres 1 minute 
GEA.add({{"Global", "Intrusion", "0"}, {"Global", "Occupation", "Absence"}, {"Global", "Surveillance", "0"}}, 70, "", {{"Global", "Surveillance", "1"}})
-- Ouverture dans la maison
GEA.add(44, -1, "", {{"Global", "Alarme", "1"}})
-- Détection Intrusion dans la maison apres 1 minute
GEA.add({{"Global", "Intrusion", "0"}, {"Global", "Surveillance", "1"}, {"Global", "Alarme", "1"}}, -1, "", {{"Global", "Intrusion", "1"}})

...

-- Retrait de la surveillance de la maison 
GEA.add({{"Global", "Occupation", "Presence"}, {"Global", "Surveillance", "1"}}, -1, "", {{"Global", "Surveillance", "0"}})  
  
end

Partager ce message


Lien à poster
Partager sur d’autres sites

@pixynico,

Il te manque une condition à mon avis, mais ton code devait fonctionner tout de même a chaque ouverture de fenetre

 

GEA.add({44, {"Global", "Surveillance", "1"}}, -1, "", {{"Global", "Alarme", "1"}})

 

Partager ce message


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

@pixynico,

Il te manque une condition à mon avis, mais ton code devait fonctionner tout de même a chaque ouverture de fenetre

 


GEA.add({44, {"Global", "Surveillance", "1"}}, -1, "", {{"Global", "Alarme", "1"}})

 

J'ai changé ma variable et mis la condition correctement. ça semble fonctionner.

 

Mes actions sont les suivantes :

-- Mise sous surveillance de la maison apres 1 minute 
GEA.add({"Global", "Occupation", "Absence"}, 70, "", {{"Global", "Surveillance", "1"}})
-- Ouverture dans la maison
GEA.add({44, {"Global", "Surveillance", "1"}}, 1 , "", {{"Global", "Intrusion", "1"}})
-- Détection Intrusion dans la maison apres 1 minute
GEA.add({"Global", "Intrusion", "1"}, 2, "La porte du bureau ouverte à  #time#.", {{"Portable", 137}})  
-- Retrait de la surveillance de la maison 
GEA.add({"Global", "Occupation", "Presence"}, 1, "", {{"Global", "Surveillance", "0"}})
GEA.add({{"Global", "Surveillance", "0"}, {"Global", "Intrusion", "1"}}, 2, "", {{"Global", "Intrusion", "0"}})

  

Je te remercie.

Si je veux détecter une intrusion sur une fenêtre ou porte...

Comme dois-je faire pour lui dire soit l'ID 44 ou un autre ?

Partager ce message


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

La variable AlarmeG1 est initialisee a false par defaut.
Quand l alarme est armee DEPUIS 5 mins, elle passe à TRUE.

@banzai sort de chez lui :
1- armement de l alarme
2- moins de 5 mins, ouverture du portail, la luliere ne s'allume pas.

@banzai rentre.
1- alarme armee depuis plus de 5 mins,
2- ouverture du portail, lumiere s'allume.

Dans la ligne que tu ne comprends pas : en condition :
1- ouverture du portail
ET
2- le return teste si AlarmeG1est TRUE

En esperant avoir ete clair :-)

 

Salut @pepite

 


la variable passe de   FALSE a TRUE    : GEA.add({"Global", "AlarmeG1", "On"}, 5*60, "", {{"Function", function() AlarmeG1 = true end}})

la variable passer de  TRUE  à  FALSE  : GEA.add({"Global!", "AlarmeG1", "Off"}, 30, "", {{"Function", function() AlarmeG1 = false end}})

 

jusque la pas de prob

 

ouverture du portail  et AlarmeG1est TRUE   alors........       :GEA.add({id["POSITION_PORTAIL"], {"Function", function() return AlarmeG1 end}}, 30 , "" , {...........

mai ,  comment la condition fait la différence entre   true et false

 

 

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 1 heure, 971jmd a dit :

{"Function", function() return AlarmeG1 end}

@971jmd

 

Quand on écrit le code comme cité ci-dessus avec le return AlarmG1 cela signifie : si AlarmeG1 = true.

 

Pour tester si la condition est false, (merci @Steven qui me l'a appris il y a peu..)  : return not(AlarmG1) équivaut à AlarmeG1 = false

 

@pixynico

Il y a 3 heures, pixynico a dit :

Comme dois-je faire pour lui dire soit l'ID 44 ou un autre ?

 

Je comprend pas, tu souhaites pouvoir tester chaque ouvrants c'est cela ? en évitant d'écrire 1 ligne par ouvrant ?

  • Upvote 1

Partager ce message


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

@971jmd

 

Quand on écrit le code comme cité ci-dessus avec le return AlarmG1 cela signifie : si AlarmeG1 = true.

 

Pour tester si la condition est false, (merci @Steven qui me l'a appris il y a peu..)  : return not(AlarmG1) équivaut à AlarmeG1 = false

 

@pixynico

 

Je comprend pas, tu souhaites pouvoir tester chaque ouvrants c'est cela ? en évitant d'écrire 1 ligne par ouvrant ?

Oui je pensais qu'on pourrait mettre en condition soit ID X ou Y ou Z sur une seule ligne mais si pas réalisable je ferais autant de ligne que de ouvrant en effet

Partager ce message


Lien à poster
Partager sur d’autres sites

@pixynico

 

Si c'est faisable, mais à tester tout de même, on n'oublie pas c'est moi quiecrit du code et ca..;-)

 

Créé le groupe des ouvrants que tu veux tester

local Ouvrants = {44, xx, yy}

 

Teste si un des ouvrants (v = 1) a un value = 1 donc ouvrant ouvert 

 

for _, v in ipairs(Ouvrants) do
    GEA.add({v, {"Global", "Surveillance", "1"}}, -1, "", {{"Global", "Intrusion", "1"}})
end

 

Partager ce message


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

@pixynico

 

Si c'est faisable, mais à tester tout de même, on n'oublie pas c'est moi quiecrit du code et ca..;-)

 

Créé le groupe des ouvrants que tu veux tester


local Ouvrants = {44, xx, yy}

 

Teste si un des ouvrants (v = 1) a un value = 1 donc ouvrant ouvert 

 


for _, v in ipairs(Ouvrants) do
    GEA.add({v, {"Global", "Surveillance", "1"}}, -1, "", {{"Global", "Intrusion", "1"}})
end

 

Génial ça fonctionne parfaitement

Ton code est parfait

:74:

Partager ce message


Lien à poster
Partager sur d’autres sites

Super, as-tu essaye en essayant des ouvrants différents pour en être sur ? 

Partager ce message


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

Super, as-tu essaye en essayant des ouvrants différents pour en être sur ? 

Oui ça marche avec d'autre ouvrant cool.

Par contre j'ai une autre question de débutant

J'ai modifié la ligne suivante

GEA.add({"Global", "Occupation", "Absence"}, 70, "", {{"Global", "Surveillance", "1"}})

par

GEA.add({"Global", "Occupation", "Absence"}, 70, "Maison sous surveillance à  #time#.", {{"Portable", 137}}, {{"Global", "Surveillance", "1"}})

Du coup je reçois bien un push mais ma variable globale "Surveillance ne passe plus à 1

Dois-je ajouter la ligne suivante et garder la 1ère ou ai-je oublié quelque chose 

GEA.add({"Global", "Surveillance", "1"}, -1 "Maison sous surveillance à  #time#.", {{"Portable", 137}})

Partager ce message


Lien à poster
Partager sur d’autres sites

ok ça fonctionne

 

 

j'active ma variable global AlarmeG1 = 1

1er observation :  je ne recrois pas de notification

 

et j'ai bien compris que par défaut :  ......  {"Function", function() return AlarmeG1 end}}...  est par défaut  TRUE

 

-----Donc si portail = 1  et  variable local AlarmeG1=true      ALORS    plafonnier salon = on

GEA.add({{"Value",  id["BAR"], 1}, {"Function", function() return AlarmeG1 end}}, 30 , "" , {{"turnOn",id["PLAFONNIER_SALON"]}})  

 

 

local AlarmeG1 = false
  
 -- Alarme armée depuis 5 mins  (j'ai donc 5mm avant que la variable local passe a TRUE et donc moins de 5mm pour ouvrire et fermer mon portail )
GEA.add({"Global", "AlarmeG1", "1"}, 5*60, "Armée on", {{"Function", function() AlarmeG1 = true end}})
-- Alarme desarmee depuis 30 secs
GEA.add({"Global", "AlarmeG1", "0"}, 30, "Armée off", {{"Function", function() AlarmeG1 = false end}})

  
GEA.add({{"Value",  id["portail"], 1}, {"Function", function() return AlarmeG1 end}}, 30 , "" , {{"turnOn",id["PLAFONNIER_SALON"]}}) 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

@pixynico,

 

Un peu trop d'accolades ;-), attention à ta syntaxe. Es-tu sur que ta variable est à 0 ? avant de tenter de la passer à 1 ?

Cela devrait fonctionner

 

GEA.add({"Global", "Occupation", "Absence"}, 70, "Maison sous surveillance à  #time#.", {{"Portable", 137}, {"Global", "Surveillance", "1"}})

 

Partager ce message


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

@pixynico,

 

Un peu trop d'accolades ;-), attention à ta syntaxe. Es-tu sur que ta variable est à 0 ? avant de tenter de la passer à 1 ?

Cela devrait fonctionner

 


GEA.add({"Global", "Occupation", "Absence"}, 70, "Maison sous surveillance à  #time#.", {{"Portable", 137}, {"Global", "Surveillance", "1"}})

 

Merci pepite ça fonctionne. les 2 actions étaient dissociées et seule la 1ère était prise en compte

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir

 

Will this work tomorrow morning around 05:30 if my global Sun is less than 1?

	GEA.add({"Global-", "Sun", "1.0"}, 30, "", {{"Time", "05:30", "12:50"}, {"Days", "Weekdays"},{"turnOn", LivingRoom["Bakom_Soffa"]}})
	GEA.add({"Global-", "Sun", "1.0"}, 30, "", {{"Time", "05:30", "12:50"}, {"Days", "Weekdays"},{"turnOn", LivingRoom["Bakom_Tv"]}})
	GEA.add({"Global-", "Sun", "1.0"}, 30, "", {{"Time", "05:30", "12:50"}, {"Days", "Weekdays"},{"turnOn", Kitchen["Window"]}})

 

Partager ce message


Lien à poster
Partager sur d’autres sites

@sonnyboy,

 

Yes, be careful, it's Weekday, not Weekdays

you can write in one line

 

GEA.add({"Global-", "Sun", "1.0"}, 30, "", {{"Time", "05:30", "12:50"},  {"Days", "Weekday"}, {"turnOn", LivingRoom["Bakom_Soffa"]}, {"turnOn", LivingRoom["Bakom_Tv"]}, {"turnOn", Kitchen["Window"]}})

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

@Pepite: tu es la fée de GEA, infatiguable !

:13:

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Aux GEA masters, mes respects, j'ai besoin d'un petit coup de main: en 4.100 je galère depuis quelques semaines avec mon GEA (v5.40) qui arrete de traiter des tâches  et nécessite d'être redémarré sans que je sache identifier d'où vient le problème. Par exemple, il arrête de faire des trucs pourtant simples comme par réinitialiser une variable la nuit....

Je précise que

1/je ne me considère pourtant pas comme une brêle en GEA (niveau correct quoi)

2/ je n'ai pas de sleep, pas trop de déclenchements immédiats, une seule fonction qui me semble pas trop tordue (cf fin de ce post, je vous l'indique quand même). J'ai pas mal de ligne, mais je ne crois pas qu'il soit gargantuesque non plus

3/ tout a fonctionné sans problème pendant des mois, les seuls choses que j'ai identifiées sont :

  • Passage en 4.1 : je crois que ça marchait mieux avant
  • Le contenu du debug qui n'affiche plus "GEA Version 5.50 : en execution..."  toutes les 30s /
    Après un restart, c'est OK mais par la suite non. Là par exemple, il me donne ça:
  • [DEBUG] 10:03:54: GEA Version 5.40 : en exécution... 
  • [DEBUG] 10:06:42: Durée des traitements : 4s nouveau délai : 26s / tourne depuis 1h 29m 59s
    donc il s'est passé 3 minutes entre les deux sans nouvelle entrée dans le debug, c'est normal?
  • Quand je lui demande de mettre à jour une variable avec l'heure actuelle, il déconne complètement et update ma variable avec des valeurs fausses (j'utilise le code suivant : os.date("%A, ".."%X"))
 
Bref, je ne sais pas trop par où commencer, vous feriez quoi à ma place? Merci d'avance pour vos idées :13:
 
PS: ma fonction vérifie l'évolution d'humidité d'un Netatmo dans ma salle de bain pour identifier si qqun a pris une douche (principe: l'id 76 donne le taux actuel d'humidité, à chaque cycle de 20min on regarde si le taux actuel - taux précédent est > 3, si oui alors on flag la variable douche à 1, et on met à jour la variable taux précédent avec le taux actuel pour préparer la prochaine vérification)
Bref, je vous mets le code par principe mais je ne pense pas que ce soit le pb: 
GEA.add(true,20*60,"",{{"Function",function () if fibaro:getValue(76,'value') - fibaro:getGlobalValue('last_humidity') > 3 then fibaro:setGlobal('douche',1) end fibaro:setGlobal('last_humidity', fibaro:getValue(76,'value')) end},{"Repeat"}}) 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Je prendrais le problème à l'envers moi. ;-)

 

j'installerais le Watchdog de @Lazer pour voir s'il le relance ou pas.

Je recréerais une scène GEA toute neuve ;-)

 

Quand on lit le debug, on a l'impression qu'il fait une pause

 

en dernier lieu, j'essaierais de "nettoyer" GEA pour qu'il soit le plus propre possible

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @ggpublic,

 

Malheureusement cela n'a rien à voir avec GEA. La version 4.100 stoppe sans préavis, ni contrôle, ni raison valable les scénarios. Et il faut relancer la box pour redémarrer la scène.

 

Dans l'espoir d'une correction rapide de la part de Fibaro, il faut, en effet, installer le watchdog de @Lazer.

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

j,ai passer en version 4.102 beta et depuis j,ai une erreur a la ligne 1626: 

 

[DEBUG] 06:24:31: [ 381 | Porte Garage ] Add Autostart : ajout de la tache pour 300 secondes (ID:1) [Repeat] [If..]
[DEBUG] 06:24:32: [ 25 | Porte Cabanon ] Add Autostart : ajout de la tache pour 600 secondes (ID:2) [Repeat] [If..]
[DEBUG] 06:24:32: [ 383 | Porte entrée ] Add Autostart : ajout de la tache pour 600 secondes (ID:3) [Repeat]
[DEBUG] 06:24:32: [ 253 | Porte SM ] Add Autostart : ajout de la tache pour 600 secondes (ID:4) [Repeat]
[DEBUG] 06:24:32: [ 264 | Porte Patio ] Add Autostart : ajout de la tache pour 3600 secondes (ID:5) [Repeat]
[DEBUG] 06:24:32: [ Toujours ] Add Autostart : ajout de la tache pour 30 secondes (ID:6) [Days,Thursday] [Time,12:10,12:11] [Scenario,367]
[DEBUG] 06:24:32: [ Toujours ] Add Autostart : ajout de la tache pour 30 secondes (ID:7) [Days,Thursday] [Time,12:05,12:05] [Scenario,368]
[DEBUG] 06:24:32: line 1626: attempt to concatenate local 'name' (a nil value)

je ne trouve pas mon erreur? GEA roule depuis plus de 1 an sans problème...

 

merci de vos conseilles.

Partager ce message


Lien à poster
Partager sur d’autres sites

×