971jmd Posté(e) le 3 décembre 2016 Signaler Posté(e) le 3 décembre 2016 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"]}})
pepite Posté(e) le 3 décembre 2016 Signaler Posté(e) le 3 décembre 2016 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 alarme2- 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 ET2- le return teste si AlarmeG1est TRUEEn esperant avoir ete clair :-) 1
pixynico Posté(e) le 3 décembre 2016 Signaler Posté(e) le 3 décembre 2016 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
pepite Posté(e) le 3 décembre 2016 Signaler Posté(e) le 3 décembre 2016 @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"}})
pixynico Posté(e) le 3 décembre 2016 Signaler Posté(e) le 3 décembre 2016 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 ?
971jmd Posté(e) le 3 décembre 2016 Signaler Posté(e) le 3 décembre 2016 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
pepite Posté(e) le 3 décembre 2016 Signaler Posté(e) le 3 décembre 2016 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 ? 1
pixynico Posté(e) le 3 décembre 2016 Signaler Posté(e) le 3 décembre 2016 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
pepite Posté(e) le 3 décembre 2016 Signaler Posté(e) le 3 décembre 2016 @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
pixynico Posté(e) le 3 décembre 2016 Signaler Posté(e) le 3 décembre 2016 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
pepite Posté(e) le 3 décembre 2016 Signaler Posté(e) le 3 décembre 2016 Super, as-tu essaye en essayant des ouvrants différents pour en être sur ?
pixynico Posté(e) le 3 décembre 2016 Signaler Posté(e) le 3 décembre 2016 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}})
971jmd Posté(e) le 4 décembre 2016 Signaler Posté(e) le 4 décembre 2016 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"]}})
pepite Posté(e) le 4 décembre 2016 Signaler Posté(e) le 4 décembre 2016 @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"}})
pixynico Posté(e) le 4 décembre 2016 Signaler Posté(e) le 4 décembre 2016 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
sonnyboy Posté(e) le 4 décembre 2016 Signaler Posté(e) le 4 décembre 2016 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"]}})
pepite Posté(e) le 4 décembre 2016 Signaler Posté(e) le 4 décembre 2016 @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"]}}) 1
sonnyboy Posté(e) le 4 décembre 2016 Signaler Posté(e) le 4 décembre 2016 @pepite You just made my mornig bright And i will have a happy wife Tank you!
sebcbien Posté(e) le 4 décembre 2016 Signaler Posté(e) le 4 décembre 2016 @Pepite: tu es la fée de GEA, infatiguable !
ggpublic Posté(e) le 6 décembre 2016 Signaler Posté(e) le 6 décembre 2016 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 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"}})
pepite Posté(e) le 6 décembre 2016 Signaler Posté(e) le 6 décembre 2016 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
Steven Posté(e) le 6 décembre 2016 Auteur Signaler Posté(e) le 6 décembre 2016 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. 2
Plap3014 Posté(e) le 6 décembre 2016 Signaler Posté(e) le 6 décembre 2016 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.
pepite Posté(e) le 6 décembre 2016 Signaler Posté(e) le 6 décembre 2016 @Plap3014, quelle est ta ligne 1626 ? Es tu sur que le nom déclaré existe ?
Messages recommandés