Rechercher dans la communauté
Affichage des résultats pour les étiquettes 'gea'.
11 résultats trouvés
-
SUPPORT GEA ______________ Le projet GEA ayant pris de l'ampleur, il n'est plus possible de regroupé toutes les questions/réponses, demandes de support et évolutions au sein d'un seul et même topic. Ce topic est donc créer pour répondre à vos questions, doutes, demandes d'assistance. N'hésitez pas à poser vos questions ici, la communauté sera contente de vous aider dans la mesure du possible Projet GEA : Tutorial (dernière version disponible sur ce post) Version actuel 5.40 : disponible sur GitHub (ancienne version) Un Wiki est disponible (connexion pas forcément stable) : Wiki
- 11 994 réponses
-
- 7
-
-
-
Gestionnaire d'Evénements Automatique (GEA) – version 6.13 Version précédente (BROUILLON en cours de rédaction) Remerciements (commençons par le plus important) : @pepite et @tibahut pour leurs contributions, motivation, idées, ... Nos pauvres bêta testeurs : @ADN182, @Puni, @basklj, @sonnyboy, @Gandalf, @drboss (et tout ceux que j'oublie ... désolé) @fredokl pour son don qui me permettra d’offrir de la bonne bière à pepite (je le promet) But : Ce script a pour but de contrôler, à intervalle régulier, l'état de votre environnement pendant une durée déterminée afin de vous avertir d'éventuel soucis et si nécessaire d'effectuer automatiquement certaines actions. Exemple : Etre informé si la porte du garage est restée ouverte plus de 10 minutes Recevoir une notification et allumer le radiateur s'il fait trop froid depuis 30 minutes Eteindre automatiquement la lumière des WC si cette dernière est allumée plus de 5 minutes Eteindre le frigo et recevoir une notification si ce dernier consomme trop d'électricité ou pas assez Installation : Première installation Créer un scénario en mode LUA Insérer le script ci-joint (gea_6_00.lua)) Adapter les dernières lignes à vos besoins (en dessous de la ligne "CONFIGURATION GENERAL") Passage de GEA 5.x à GEA 6.x Copier le nouveau script dans un nouveau scénario LUA Copier vos anciennes lignes de paramétrage dans la fonction "config()" Copier vos lignes GEA.add(…) dans la fonction "setEvents()" Désactiver votre ancien GEA Mise à jour de GEA 6.x à GEA 6.x Ouvrir la nouvelle version et copié de la ligne "if (not GEA) then " jusqu'à la fin Ouvrir votre version et remplacer de la même ligne "if (not GEA) then" jusqu'à la fin. Configuration : Définir l'intervalle de contrôle en secondes GEA.checkEvery = <nb secondes> (30 par défaut) Exemple : GEA.checkEvery = 30 Indique la liste des portables par défaut devant recevoir une notification {70, 71} GEA.portables = {<id portable> [, <id portable>][, ...] Exemple : GEA.portables = {70, 71} Bascule en mode de débogage pour obtenir plus de traces GEA.debug = true | false (false par défaut) Exemple : GEA.debug = true Permet un débogage fort de GEA, chaque erreur provoque l'arrêt de GEA si cette option est à false (anciennement GEA.catchError) GEA.secureAction = true | false (true par défaut) Exemple : GEA.secureAction = false -- va afficher les erreurs et stopper GEA GEA utilise 3 variables globales. Il est conseillé de laisser leurs noms par défaut mais si vous souhaiter les modifier, voici les paramètres à adapter GEA se charge de leur création, ne les créer par manuellement svp. GEA.globalvariables = "GEA_Tasks" GEA.pluginsvariables = "GEA_Plugins" GEA.historyvariable = "GEA_History" Nouveautés : Détection automatique de la langue Création automatique des variables globales nécessaires au fonctionnement de GEA Plus de contrôle (vérification des ID, des actions, …) Plus de 30 nouvelles conditions/actions * Durée à 0 autorisée et exploitée : GEA.add(true, 0, "Démarrage de GEA à #time# le #date#") permet de lancer l'action au démarrage de GEA Dans les actions, l'id peut être multiple GEA.add(true, 30, "", {"TurnOn", {100, 101, 102}}) Allumera donc les 3 modules Dans les actions, les variables globales peuvent être multiple GEA.add(true, 30, "", {"Global", {"VG1", "VG2"}, "Texte"}) VG1 et VG2 prendront donc "Texte" comme valeur Sous-commande acceptée : GEA.add( {"Global", "Test1", {"Global", "Test2"}}, 30, "Variable identique si Test1 = Test2" ) GEA.add( true, 30, "On copie la valeur dans une variable globale la valeur du module 101", {"Global", "Test", {"Value", 101}} ) Pour les développeurs, simplicité d'ajout de nouvelle condition/action Paramètre supplémentaire pour afficher votre message dans la console au lieu du message par défaut GEA.add(condition, durée, message, actions, "<A afficher dans la console>") Scénario Plugin. Moyennant quelques petites lignes de code, vos scénarios peuvent devenir compatibles avec GEA. Structure : Pour reprendre la structure du code de Tibahut, nous avons décidé de modifier légèrement la structure de GEA. Une fonction "config()" doit / contient vos paramètres de GEA Une fonction "setEvents()" contient vos lignes GEA.add Cette modification vous demande donc de modifier votre ancienne version de GEA afin de s'adapter à cette structure. Modifications Réécriture complète du code (diminution de plus de 30% du nombre de ligne) GEA.add(…, 30, """", {{""Time"", ""12:00"", ""12:00""}}) devient GEA.add({..., {""Time"", ""12:00"", ""12:00""}}, 30 , """") les conditions Time, Days, Dates, DST, NODST passe au début dans les conditions et non plus dans les actions comme auparavant. Cette modification est automatique vous n'avez pas besoin de modifier votre code. La gestion des regex a été modifiée, si vous souhaité utilisé un regex, il vous faudra le préfixé par "#r#" Exemple, si la météo est rain ou cloudy GEA.add({"Weather", "#r#rain|cloudy"}, 30, "Pas beau") Lors de déclenchements immédiat, GEA va maintenant vérifier l'ID de TOUTES les conditions pour savoir s'il doit traiter ou non la donnée (anciennement seule la 1ère condition était contrôlée) Détection automatique de la version V4+ ou V3 Le nom des modules n’apparaît plus dans la console pour éviter les soucis de performance de la v4, utilisé #name# dans le message pour l'obtenir si besoin GEA.add(73, -1, "Le module #name# dans la pièce #room# vient de s'allumer") #value[1]# ..#value[9]# n'ont plus de limite (9 maximum sur l'ancienne version) Utilisation du setTimeout au lieu d'un sleep pour le fonctionnement de GEA La fonction userCode() a été modifiée pour correspondre au code de Tibahut soit scindée en config() et setEvents() Possibilité d'utilisé {"Dates", …} avec un format de date par langue Exemple : {"Dates", "10/31/2017"} Voir GEA.traduction[<lang>].input_date_format ou de préciser directement son propre format dans setEvents() en mettant GEA.trad.input_date_format = "mm/dd/yyy" {"Days",…} Prend dorénavant les autres langues que l'anglais et le français. Voir GEA.trad.week_short, GEA.trad.weekend et GEA.trad.weekdays Modifications des options Modifié {"TurnOn"[, <id>][, <durée>]} Allume un module puis l'éteint automatiquement après la durée, il peut aussi etre une condition Modifié {"TurnOff"[, <id>][, <durée>]} Eteint un module puis l'allume automatiquement après la durée, il peut aussi estre une condition Modifié {"Time", <debut>[, <fin>]} Si l'heure de fin n'est pas renseignée, on prend la même heure que celle de début Modifié {"Dates", <debut>[, <fin>]} Si la date de fin n'est pas renseignée, on prend la même date que celle de début Modifé {"Weather"[, <propriété>], <value>} Possibilité de préciser une autre propriété (Wind, Temperature, Pressure, Humidity, …) Modifié {"Inverse"[, <no condition>]} Permet de spécifier le numéro de la condition a inverser (1ère par défaut) Ajouté {"Switch"[, <id>]} Allume ou éteint un module selon son état Ajouté {"Value2"[, <id>], <valeur>} Idem à {"Value", …} mais pour la valeur2 (stores vénitiens) Ajouté {"setArmed"[, <id>]} Arme un module Ajouté {"setDisarmed"[, <id>]} Désarme un module Ajouté {"Killscenario", <id>} Tue un scénario selon son identifiant Ajouté {"PictureToEmail", <id cam>, <email>} Envoi l'image de la caméra à une adresse e-mail Ajouté {"ApiPut", <url>, <properties>} Effectue un put Ajouté {"ApiPost", <url>, <properties>} Effectue un post Ajouté {"ApiGet", <url>} Effectue un get de l'url Ajouté {"Sleep", <secondes>, <action>} Effectue une action dans X secondes {"Sleep", 2, {"TurnOn", 73}} utilise setTimeout Ajouté {"EnableScenario", <id>} Active le scénario ou savoir si le scénario est activé Ajouté {"DisableScenario", <id>} Désactive le scénario ou savoir si le scénario est désactivé Ajouté {"SetRunConfigScenario, <id>, <runconfig>} Permet de connaitre/changer le mode d'exécution d'un scénario Ajouté {"CountScenes", <id>} Retourne le nombre de scènes en cours d'exécution Ajouté {"DebugMessage", <id>, <elementid>, <message>, <type>} Ecrit dans la console de l'objet précisé Ajouté {"Popup", <titre>, <message>} Ajoute une popup dans le gestionnaire de notification Ajouté {"Filters", <"lights"|"blind">, <action>} Effectue l'action sur tout les modules de type light ou blind (turnon, turnoff, close, open, …) Ajouté {"CentralSceneEvent", <id>, <key>, <attribute>} Retourne vrai si le CentralSceneEvent déclencheur correspond à ces critères Ajouté {"Frequency", <jour>, <frequence>} Exemple, tous les dimanches ou un dimanche sur 2 {"Frequency", "Sunday", 2} Ajouté {"RebootHC2"} Redémarre la box Ajouté {"ShutDownHC2"} Eteint la box Ajouté {"Depend", <taksid>} Dépend d'une autre tâche, ne sera exécuté que si la "taskid" a préalablement été exécutée Ajouté {"VariableCache", <nom variable>, <valeur>} Permet de stocker une valeur et de la récupérer plus tard (uniquement dans la scène principale) Ajouté {"Info", <propriété>} Retourne la propriété contenu dans /settings/info Ajouté {"Hue", <propriété>, <valeur>} Permet de piloter une ampoule Philips Hue Ajouté {"ThermostatLevel", <id>, <valeur>} Modifie la valeur de votre thermostat Ajouté {"ThermostatTime", <id>, <valeur>} Modifie la durée de votre thermostat Ajouté {"Ask", <portable>, <message>, <scenario>} Affiche une notification demandant l'exécution d'un scénario Ajouté {"Doorlock", <id>, <valeur>} Permet de sécurisé ou non une serrure électronique Ajouté {"Or", <condition1>, <condition2>[,…] Permet de faire un OU sur plusieurs conditions Ajouté Ajouté Ajouté Ajouté Ajouté Ajouté Ajouté Ajouté Ajouté {"Xor", <condition1>, <condition2>[,…] {"RoomLights", <nom pièce>, "turnOn"|"turnOff"} {"SectionLights", <nom sect>, "turnOn"|"turnOff"} {"OnOff", <id>, "ON|OFF"} {"SonosMP3", id_vd, id_button, filepath [, volume]} {"SonosTTS", id_vd, id_button, message [, volume]} {"JSONDecodeFromGlobal", <VG>, <propriété>} {"JSONDecodeFromLabel", <id>, <label>, <propriété>} {"Monthly", <propriété>} {"Polling", <id parent>} Permet de faire un OU exclusif sur plusieurs conditions Allume ou éteint une pièce entière selon son nom Allume ou éteint une section entière selon son nom Identique à "turnOn" mais retourne "ON" ou "OFF" Voir le VD de Krikroff Voir le VD de Krikroff Décode un Variable globale et retourne la valeur de la propriété Décode un Label et retourne la valeur de la propriété Une fois par mois Poll un device Supprimé {"Groupe", <id groupe>} Supprimé Supprimé {"IF", …} Supprimé Attention Ajouté Ajouté Ajouté Ajouté Ajouté Ajouté Ajouté Ajouté {"Global", "", ""} {"LedBrightness", <luminosité>} {"DeviceState", <id module>} {"NeighborList", <id module>} {"LastWorkingRoute", <id module>} {"CheckVG", <nom vg>} {"CheckLabel", <id vd>, <nom label>} {"Protection", <id module>, <type>, <On|Off>} {"MultiAlarm", <id vd>, <label>} Devient définitivement "true" (sans les guillemets) Modifie la luminosité des LED de la HC2 Retoure l'étant d'un module Retourne la liste des modules voisins Retourne la liste de la route empruntée Vérifie l'existence d'un variable globale Vérifie l'existence d'un label Modifie la protection (local, rf) d'un module Vérifie l'alarme 1 .. 4 Vous trouverez ci-joint un fichier syntaxe_GEAV6.lua (écrit par @pepite) qui regroupe toutes les commandes et leurs utilisations. Télécharger le et garder le sous la main, c'est votre bible GEA. Le wiki est en cours de modification ce qui va prendre beaucoup de temps GEA Wiki Historique : v.6.01 - 15 décembre 2017 fix : vd GEA Alarm fix : Dead - remplacement de wakeUpDeadDevce par wakeUpAllDevices fix : {"Time": "Sunset+10>08:00"} fix : Option "Portable" is missing fix : multiple dates provoquant un table missing fix : correction du Or et XOr en mode instantané fix : fichier syntaxe_GEAV6.lua (ci-joint) add : {"Deads"} pour réveillé tous les noeux morts v.6.02 20 décembre 2017 fix : vd GEA Alarm -- double push fix : "Sleep" en conjonction avec un Plugin mod : getMessage pour les plugins et arguments de scénario (traitement des variables #time#, #value#, ...) v.6.03 29 décembre 2017 add : #datefull# dans les messages pour obtenir "dimanche 23 décembre 2017" fix : Correction du code pour {"Weather"} add : {"WeatherLocal"} ... identique à {"Weather"} mais retourne les conditions météos selon votre langue v.6.04 7 janvier 2018 add : Roomlights ... {"RoomLights", <nom de la pièce>, "turnOn"|"turnOff"} add : Sectionlights ... {"SectionLights", <nom de la séction>, "turnOn"|"turnOff"} mod : correct Weather, erreur ajoutée en V6.03 mod : #datefull# erreur sur le dimanche mod : correction déclenchement instantané qui stop la mauvaise tache mod : correction déclenchement instantané avec plusieurs conditions add : Slider mod : Close 100 = tout fermé, 0 tout ouvert mod : Open et Close peuvent recevoir plusieurs ids {"Open", {id1, id2}, valeur} mod : optimisation des déclenchements immédiats (1ère passe) v.6.05 29 janvier 2018 add : #trigger# in message add : {"OnOff", <id>, "ON|OFF"} identique à turnOn mais retourne ON ou OFF add : {"SonosMP3", id_vd, id_button, filepath [, volume]} -->voir VD de Krikroff --> Merci @MAM78 add : {"SonosTTS", id_vd, id_button, message [, volume]} --> voir VD de Krikroff --> Merci @MAM78 add : {"JSONDecodeFromGlobal", <nom VG>, <propriété à vérifier>} add : {"JSONDecodeFromLabel", <id VD>, <label>, <propriété à vérifier>} add : {"TempExt"} -- température exterieure selon les conditions métérologique add : {"TempExtTTS"} -- température exterieure selon les conditions métérologique au format (X degrer X) mod : amélioration du translate mod : clarifier le message des actions dans le debug mod : optimisation #2 diminution accès aux variables globales mod : optimisation consommation mémoire mod : suppression bavardage intempestif au mode immédiat mod : correction décalage durée d'execution mod : correction du "Time" qui pouvait ne pas se comporter correctement mod : fonctionnement de l'optimisation mod : bug fix v.6.06 ajouté le 7 février 2018 mod : Correction bug introduit un 6.05 avec "Function" add : Possibilité d'ignoré le déclenchement d'une option en mode immédiat en mettant son nom entre parenthèse exemple : {"Global+", "Test", 100} --> {"(Global+)", "Test", 100} add : {"Monthly", <propriété>} --> Une fois par mois. Propiétés possibles : <nombre> 1-31 : Tous les X du mois "begin" : Tous les 1er du mois "end" : Tous les derniers jours du mois <day> "Monday", "Tuesday", ... : Tous les 1er lundi, mardi, ... du mois Voir le fichier de syntaxe pour plus d'info. v.6.07 ajouté le 22 mars 2018 mod : correction slider {"Slider", <id_mv>, <Label>, <valeur>} mod : ajout de GEA.getMessageDecorator(msg) pour permettre à l'utilisateur d'ajouter facilement ces propres gsub() mod : ajout GEA.trad.locale mod : correction usage de la variable globale mod : correction lors de multiple {"Portable", <id portable>} mod : ajout Popup with scenario ID add : {"Polling", <id module>} v.6.10 ajouté le 31 octobre 2018 mod : correction du #name# pour les "Or" et "XOr" mod : usage d'un cache pour les noms de modules et de pièces mod : contrôle des variables globales (API not found) mod : contrôle des label (API not found) add : {"LedBrightness", <luminosité>} add : {"DeviceState", <id module>} add : {"NeighborList", <id module>} add : {"LastWorkingRoute", <id module>} add : {"CheckVG", <nom vg>} add : {"CheckLabel", <id vd>, <nom vg>} v.6.11 ajouté le 13 novembre 2018 mod : correction d'un bug dans checklabel add : {"Protection", <id>, <type_protection>, <On|Off>} by @971jmd add : {"MultiAlarm", <id vd>, <label>} by @drboss v.6.12 ajouté le 11 juin 2020 Correction création variables globales (firmeware 4.55) Correction bug sur incrémentation d'une propriété Ajout contrôle des valeurs négatives Isolation des triggers sur les labels Correction des dates sans année Réintégration de la variable SuspendreGEA La durée peut maintenant être contenu dans une VG ex : GEA.add(..., 30, "", ...) ou GEA.add(..., "MaVG", "", ...) Ajout NotStarted pour retrocompatibilité avec la version 5.x VirtualDevice choix du numéro du bouton ou de son id ou de son nom Possibilité de remplacer l'ID par le nom du module {"Value", "Plafonnier", 30} au lieu de {"Value", 150, 30} le nom du module peut être agrémenté du nom de la pièce en ajoutant <nom module>@<nom pièces> ... Plafonnier@Chambre parents Posibilité de remplacer l'ID d'un scénario par son nom {"CountScenes", "GEA 6.12"} au lieu de {"CountScenes", 37} Exemple complet : {"VD", "Notification center", "Pushbullet"} Appuie sur le bouton dont le libellé est "Pushbullet" du module virtuel "Notification center". v.6.13 ajouté le 30 juin 2020 Correction de bugs Possibilité d'avoir une sous-option en 1ère ou 2ème place d'une option (très très clair comme message ;-) donc un exemple) {"Dates", {"Global", "VacOn"}, {"Global", "VacOff"}} --- avant, il n'était possible que de mettre le {"Global", "VacOff"} NE POUVANT GARANTIR A 100% LA VERSION 6.13, JE LAISSE DISPONIBLE LA 6.11 GEA 6.11.lua syntaxe_GEAV6_11.lua GEA 6.13.lua
- 390 réponses
-
- 20
-
-
-
-
Quick App - Gestionnaire d'Événements Automatique - GEA pour HC3
Lazer a posté un sujet dans Quick App Developpeur
GEA Gestionnaire d’Événements Automatique Version 7.37 Voici le célèbre GEA de @Steven porté sur Home Center 3. Cette version de GEA est basée sur la version 6.13, les fonctionnalités sont donc identiques, à quelques différences près documentées plus bas. Ce n'est plus une scène, mais un QuickApp. La notion d'instances multiples des scènes n'a plus lieu d'être, car le QuickApp est mono-instance par nature, mais son principe d'exécution asynchrone du code LUA permet d'obtenir le même résultat, à savoir : - une boucle automatique de détection des événements à intervalle régulier de 30 secondes - un déclenchement instantané sur événement (avec le paramètre -1 pour la durée) Au sujet des événements, il n'y a plus besoin (et de toute façon il n'est pas possible) de définir des triggers pour le déclenchement. C'était une opération fastidieuse, car il fallait saisir manuellement les ID des modules dans l'en-tête de la scène. Cette nouvelle version de GEA détecte donc automatiquement les triggers, et surveille les événements via l'API refreshStates. Actuellement j'ai positionné cet intervalle de surveillance à 100 ms, c'est à dire un dixième de seconde. Ce n'est donc pas de l'instantanéité absolue, mais ça ne l'était de toute façon pas sur les scènes de la HC2, et ça reste inférieur au seuil de perception humain. Pour l'instant cela n'a posé aucun problème de performance lors de mes tests.... on verra ultérieurement s'il y a lieu de faire évoluer cet intervalle. La syntaxe de GEA est strictement identique à celle de la HC2 : GEA.add( ... ) Pour cette raison, ce topic est ouvert uniquement pour les discussions concernant le développement de GEA, les nouvelles fonctionnalités, et les rapports de bugs constatés. Pour les questions sur l'utilisation et la syntaxe de GEA, se reporter au topic unique "Support GEA" où vous trouverez toute l'aide nécessaire : En clair : Une règle GEA fonctionne sur HC2, mais ne fonctionne pas sur HC3 => je viens poster ici pour qu'on puisse corriger le bug Autrement : je supprimerai les messages sans préavis, j'ai autre chose à faire que de déplacer les messages postés sur le mauvais topic... avis aux contrevenants Le topic de référence concernant la syntaxe de GEA se trouve ici, comme d'habitude : Remarque : j'ai mis à jour le fichier de référence GEA_Syntaxe à télécharger en bas de ce message. Changements de GEA pour HC3 par rapport à HC2 Supprimé : "VirtualDevice", "VD" => remplacé par "QuickApp" et "QA" "SetrunConfigScenario" => remplacé par "SetRunModeScenario" et "RunModeScene" "RebootHC2" => remplacé par "RebootHC3" "ShutdownHC2" => remplacé par "ShutdownHC3" "multiAlarm" => remplacé par "Alarm" "setMode" => remplacé par "ThermostatMode" "setThermostatSetpoint" => remplacé par "CoolingThermostatSetpoint" et "HeatingThermostatSetpoint" "ThermostatLevel" "ThermostatTime" "DebugMessage" "PluginScenario" "Popup" Ajouté : "QuickApp" | "QA" : {"QuickApp", <id_module>, <méthode>, [paramètres]} "DeviceIcon" | "CurrentIcon" : {"CurrentIcon", <id_module>, <no_icon>} "Color" | "RGB" : {"Color", <id_module>, <intensité_rouge>, <intensité_vert>, <intensité_bleu>, <intensité_blanc>} "RunModeScene" | "SetRunModeScenario" : {"RunModeScene", <id_scene>} | {"SetRunModeScenario", <id_scene>, <run_valeur>} - <run_valeur> : "manual" | "automatic" "isSceneRunning" | "RunningScene" : {"isSceneRunning", <id_scene>} "ThermostatMode" : {"ThermostatMode", <id_thermostat>, <mode>} "ThermostatFanMode" : {"ThermostatFanMode", <id_thermostat>, <fan>} "CoolingThermostatSetpoint" : {"CoolingThermostatSetpoint", <id_thermostat>, <valeur>} "HeatingThermostatSetpoint" : {"HeatingThermostatSetpoint", <id_thermostat>, <valeur>} "Profile" : {"Profile", <id_profil>} "RebootHC3" : {"RebootHC3"} "SuspendHC3" : {"SuspendHC3"} "ShutdownHC3" : {"ShutdownHC3"} "Parameter" "Climate" "Breached" "VariableQuickApp" | "VariableQA" "CustomEvent" "WOL" "httpGet" "Call" "isEvenDay" Modifié : "Armed", "Disarmed", "setArmed", "setDisarmed" => Prend l'ID de la zone Amélioré : GEA.portables = {123, "Nokia 3310"} : ID du mobile, ou nom du mobile "Email" : ID du mobile, ou nom de l'utilisateur : {"Email", <id_user>, <"Message du mail">, <"Sujet du mail">} | {"Email", <id_user>, <"Message du mail">} "Picture" : ID ou nom de l'utilisateur : {"Picture", <id_camera>, <id_user>} | {"Picture", <id_camera>, <"nom_user">} "VariableCache" : utilisable dans les règles à déclenchement instantané avec -1 (en tant que condition, actions, mais pas comme déclencheur) "Alarm" : remplace "Alarm" et "MultiAlarm" : peut contenir autant d'alarmes que voulu "Ask" : exécute une scène, une méthode d'un QuickApp, ou une action GEA Les zones d'alarme, les profils, et les zones de climat peuvent être identifiés par leur nom Note : les actions "Reboot", "Suspend", et "Shutdown" ne fonctionnent plus depuis le firmware 5.050.13... Installation Importer le fichier fqa ci-joint. Ne modifier que le contenu de config pour vos propres règles : Mise à jour Copier/coller simplement tout le contenu du fichier LUA téléchargé dans le fichier main du QuickApp. Téléchargement Nouvelle installation : GEA_v7.36.fqa Mise à jour : Fichier main : GEA v7.37.lua Fichier tools : Library - tools v2.20.lua Documentation de référence sur la syntaxe : GEA v7.36 Syntaxe.lua- 573 réponses
-
- 12
-
-
-
Bonjour, Comme discuté dans le fil du support GEA, je trouve que apprendre par l'exemple est la meilleure solution. Malheureusement, dans le fil du support, la majorité du code qui s'y trouve ne fonctionne pas ... C'est un peu normal... Je vous propose donc de poster ici votre configuration GEA, POSTEZ UNIQUEMENT LES FONCTIONS TESTÉE ET VÉRIFIÉE. POUR PLUS DE LISIBILITÉ, NE POSEZ PAS DE QUESTIONS DANS CE FIL !!! SI VOUS VOULEZ REMERCIER UN POST, CLIQUEZ SUR LE BOUTON J'AIME Si vous avez une question, allez dans le fil GEA support et faites référence à un post ou copiez la config pour laquelle vous voulez poser une question. Merci et en espérant que ce fil soit utile
- 34 réponses
-
- 17
-
-
Showroom GEA pour HC3 Postez uniquement les fonctions testées et vérifiées. Pour plus de lisibilité NE POSEZ PAS DE QUESTIONS DANS CE FIL !!! Si vous voulez remercier pour un post, cliquez sur le bouton j'aime Si vous avez une question, allez dans le fil Support GEA et faites référence à un post ou copiez l'extrait de config pour laquelle vous voulez poser une question. Ce topic fait suite aux 2 Showrooms consacrés à GEA sur HC2 :
-
Bonjour, Devant le fonctionnement très aléatoire des push, j'aimerais les remplacer par "FreeSms" qui fonctionne correctement. Comment faire dans GEA 6.10 pour que les messages prévus pour être expédiés en push, partent par FreeSms ? Je ne sais pas si c'est possible, et si oui, comment le faire ? Merci a tous pour vos idées ou réponses.
-
Compatible uniquement 4.x (pour la 3.60 ... c'est ICI ... merci DMK2424) L'idée est de générer automatiquement le tableau d'ID utilisé dans GEA ou autres scripts. Ainsi, il sera possibile à chaque mise à jour de votre HC2, de simplement relancer le générateur, copier le résultat dans GEA et vos ID seront donc remis à jour. Voici le tableau dont je parle : local id = { --inconnu LUA_SNIPPETS = 141, --Garage OREGON = 128, SURPRESSEUR = 118, CAMERA = 123, PORTE_GARAGE = 238, DETECTEUR_PORTE = 112, PORTE_GARAGE_GARAGE = 64, --Jardin TEMPERATURE = 69, SEISMOMETRE = 71, HUMIDITE = 261, DETECTEUR = 68, NETATMO = 137, PLUVIOMETRE = 262, LUMINOSITE = 70, LAMPE_OUEST = 234, PLUIE = 139, COIN_REPAS = 14, PRESSION_ATMOSPHERIQ = 258, TERRASSE = 160, METEOALERTE = 150, ARROSAGE = 158, NETATMO_EXTERIEUR = 260, --Local Technique LIVEBOX = 251, IPX800_RELAIS = 106, PORTE_LOCAL = 56, VMC_DOUBLE_FLUX = 114, LAVE_LINGE = 120, PLAFONNIER = 54, PASSERELLE_NETATMO = 135, PASSERELLE_ZIBASE = 126, --Entrée CAMERA_ENTREE = 129, DETECTEUR_ENTREE = 5, LUMINOSITE_ENTREE = 7, SEISMOMETRE_ENTREE = 8, PLAFONNIER_ENTREE = 10, PORTE_ENTREE = 58, TEMPERATURE_ENTREE = 6, --Cuisine SIRENE = 200, BRITA__FILTRE_ = 131, CUISINE = 237, CAPTEUR_FUMEE = 46, ALARME_FUMEE = 48, FRIGO = 52, TEMPERATURE_CUISINE = 47, LAVE_VAISSELLE = 50, TABLETTE = 176, --Chambre parentale SECHE_SERVIETTE = 60, --Salon CHAUFFAGE = 104, HUMIDITE_SALON = 257, CO2 = 256, NETATMO_SALON = 255, SONOMETRE = 259, POELE = 34, OREGON_SALON = 127, TV = 39, HIFI = 42, BLUE_RAY = 41, OPENKAROTZ = 133, ROMBA = 43, LUMIERE_SALON = 107, PRISE_LIBRE = 44, BRISE_SOLEIL = 105, WI = 40, KAROTZ = 134, NETATMO_SALON_SALON = 136, --Chambres PLAFONNIER_KENDRA = 23, PLAFONNIER_NORA = 18, TEMPERATURE_CHAMBRES = 147, FENETRE_NORA = 143, FENETRE_KENDRA = 145, OREGON_CHAMBRES = 138, FENETRE_NOLAN = 149, PLAFONNIER_NOLAN = 21, --Couloir PORTE_TERRASSE = 153, APLIQUE_ESCALIER = 25, TEMPERATURE_AU_SOL = 155, SPOTS = 230, LEDS_ESCALIER = 27, --Divers ANDROID_FILES = 162, IMPERIHOME = 208, TYPE_DE_JOURNEE = 110, EVENEMENTS = 173, NETATMO_DIVERS = 253, CLOCK_SYNC = 252, UPDATE_NOTIFIER_1_0_6 = 206, AGENDA = 178, MY_BATTERIES = 130, VACANCES_SCOLAIRES = 151, } Ce générateur ce base sur les noms des modules et des pièces que vous avez déclarer. Il va donc parcourir tous vos modules, prendre leur nom et le transformer (majuscule, suppression caractères spéciaux, ...). Si le nom existe deux fois, il va le suffixer du nom de la pièces (ex : DETECTEUR_GARAGE). Donc, si comme moi, vous ne changer pas régulièrement le nom de vos modules, ce générateur va vous permettre de gagner quelques précieuses minutes. Usage ... simple, copier le code ci-dessous et lancer le script avec le bouton "start". Une fois le script terminé, il va vous affiché le tableau dans la fenêtre de debug, il ne vous suffira plus que de le copier dans vos scripts. Il est possible de spécifier les ID ou type de module que vous ne voulez pas prendre en compte. Vous pouvez aussi préciser si vous souhaiter prendre en compte les modules caché ou mort. Voici donc le script dans sa globalité : --[[ %% properties %% globals --]] 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, 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, \"\")" print(result) Il ne vous restera plus qu'à utiliser les ID ainsi fibaro:getValue(id["DETECTEUR_GARAGE"], "value") GEA.add(id["DETECTEUR_GARAGE"], -1, "La porte du garage est entrain de s'ouvrir") ATTENTION : Les déclencheurs doivent et devront toujours être changé par vos soins ATTENTION 2 : Si vous ne comprenez pas l'usage de ce script, c'est sà»rement parce que vous n'en avez pas l'utilité Icone by @Did (Merci)
-
Bonjour, J'aimerais récupérer la valeur d'une variable globale, sans la modifier,et qui correspond a l'ID d'un module.(220 dans mon cas) Voici mon code actuel : local id = { COULOIR = 220, } GEA.add( id["COULOIR"], 1*60, "" ,{{"turnOff"}}) J'aimerais pouvoir récupérer l'ID (220), stocké dans une Variable Globale (XCOULOIR), plutôt que laisser "Couloir=20" dans le code. Un truc du genre : local COULOIR = fibaro:getGlobal("XCOULOIR ") Si je mets la ligne ci-dessus, ça marche pas. Connaissez vous la bonne syntaxe. Merci
-
GEA scene de vie
flamalex a posté un sujet dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
------------------------------------------------------------------------------------------ [ EDIT: finalement j'abandonne le déverrouillage, par contre le verrouillage reste intéressant en fonction des situations de la vie courante, avec, bien sûr, une parfaite maitrise, sinon risque de mauvaises surprises ] ------------------------------------------------------------------------------------------ bonjour, Je souhaite un verrouillage de la serrure si et seulement si la porte d’entrée n’a pas été ouverte alors que le portail s’est refermé. Je m’explique, c’est plutôt complexe comme configuration et explication L’alarme est activée, la porte d’entrée fermée et verrouillée, le portail fermé, Madame rentre à la maison pour déposer sa voiture et aller chercher le petit à pied, De ce fait, lorsqu’elle rentre à la maison, elle ouvre le portail, A l’ouverture du portail, l’alarme se désactive et la porte d’entrée de la maison se déverrouille Et c’est là que ça se complique, car elle ne va pas rentrer dans la maison, puisqu’elle sort de son véhicule pour passer le portail et aller chercher le petit à pied, donc la porte d’entrée est déverrouillée. Si jusque-là vous m’avez suivi, alors c’est presque gagné J L’idée serait qu’elle referme le portail derrière elle et ainsi, la serrure de la porte d’entrée se verrouille Pour cela il faut réunir les conditions suivantes : L’arrivée de madame a provoqué L’ouverture du portail, le déverrouillage de la serrure de porte, l’alarme a été désactivée, la porte d’entrée (l’ouvrant) fermé et est resté fermé, le portail a été refermé, cela pdt une durée de x sec, alors re verrouillage de la porte d’entrée. Comment articuler cela en GEA? merci ci dessous, une partie du code, pour les entrées et sorties en tps normal -- Si Alarme activée et portail fermé alors ouverture portail "Alarme Activée Ouverture Portail" GEA.add({{"Value",id["ALARMESTATUT"],0},{"Value",id["STATUTPORTAIL"],0}}, -1 ,"", {{"turnOn", id["OPENPORTAIL"]}}) -- ICI nous allons passer la variable "AlarmActiv" à ON si alarme activée depuis 5sec, -- Si statutalarme Activée , tempo de 5 secs, puis variable AlarmActiv = 1 (ON), "2eme essai ds 5sec si portail ne bouge pas" GEA.add({{"Value",id["ALARMESTATUT"],0}}, -1, "", {{"Function", function() fibaro:sleep(5000) end}, {"Global", "AlarmActiv", "ON"}}) --ICI nous nous servons de la valeur de la variable "AlarmActiv" pour s'assurer que le portail s'est bien ouvert sur activation de l'alarme, la verification à donc lieu 5sec apres -- Si Variable AlarmeActiv = ON et (supprimé=Moteur Portail à l'arret), et Portail fermé, alors ouverture portail GEA.add({{"Global", "AlarmActiv", "ON"},{"Value",id["STATUTPORTAIL"],0}}, -1 ,"lancement du 2eme essaie ouverture portail sur activation alarme", {{"turnOn", id["OPENPORTAIL"]}}) --1eme Controle, ici on verifie par un 1eme test que l'alarme est desactivée -- si portail en MOUV d'ouverture et Alarme activée par variable, alors desactivation alarme et on déverrouille la porte d'entrée GEA.add({{"Value",id["MOUVOPEN"],0},{"Global","StatutAlarme","1"}}, -1 ,"Desactivation Alarme et déverrouille serrure",{{"turnOn", id["ALARMEACT"]},{"VirtualDevice",id["VD_TK"],2}}) --2eme Controle -- si PIR CARPORT s'active que l'alarme est activée, Alarme activée par variable,et portail ouvert et Flo Absente(VG) ou Alex Absent(VG) alors Desactiver Alarme GEA.add({id["PIR_CARPORT"],{"Value",id["ALARMESTATUT"],0},{"Global","StatutAlarme","1"},{"Value",id["STATUTPORTAIL"],1},{"Global","Phone_Flo","Absent"},{"Global","Phone_Alex","Absent"}}, -1 , "2eme controle desactivation alarme", {{"turnOn", id["ALARMEACT"]}}) -- Chargement des Variables -- ICI Nous avons une variable "statutAlarme" qui va servir a dire que l'alarme est bien activée avec le portail fermé -- si alarme activée et portail fermé depuis 1*60 sec alors variable Phone_Flo = "Absent" et phone Alex = "Absent" et variable StatutAlarme = 1 et verrouillage de la serrure porte d'entree GEA.add({{"Value",id["ALARMESTATUT"],0},{"Value",id["STATUTPORTAIL"],0}},1*60 ,"" ,{{"Global","Phone_Flo","Absent"},{"Global","Phone_Alex","Absent"},{"Global","StatutAlarme","1"},{"VirtualDevice",id["VD_TK"],3}}) -- si alarme desactivée alors variable StatutAlarme = 0 et variable Phone_Flo = "Present" et phone Alex = "Present" et "AlarmActiv" = "OFF" et RUBAN ROUGE à OFF GEA.add({"Value", id["ALARMESTATUT"],1}, -1 ,"" ,{{"Global","StatutAlarme","0"},{"Global","Phone_Flo","Present"},{"Global","Phone_Alex","Present"},{"Global", "AlarmActiv", "OFF"},{"VirtualDevice",id["VD_RUBANROUGE"],9}}) Statut de L’ouvrant de la porte est id402 Statut de la serrure id465 Statut du portail : STATUTPORTAIL Statut alarme : ALARMESTATUT -
Bonjour à tous, Je pensais avoir bien suivi les étapes mais je bloque déjà à mon premier script J'ai installé GEA en suivant ce tuto: https://gea.piccand.me/doku.php/installation Puis je tente de créer quelques petites actions (message si porte ouverte plus de 10min, éteindre une lampe allumée plus de 10min...) mais je bloque... C'est surement bête mais quoi que je fasse, j'obtiens ce message d'erreur: [DEBUG] 00:53:59: line 12: attempt to index global 'GEA' (a nil value) Ca veut dire quoi au fait? Je ne comprends pas trop où je me plante. Aussi, vu que des messages doivent être envoyés sur mon GSM, ne doit on pas configurer quelque chose dans le home center ou juste installer l'app android suffit? Je reste dispo pour plus de détails évidemment
-
Tuto Smartphone/Tablette Lien Bi-Directionnel Entre Sms Gateway Et La Hc2
byackee a posté un sujet dans Tutoriels
Bonjour a tous, Ci-dessous un petit tuto avec le fichier pour faire communiquer notre chère box HC2 et l'application android SMS Gateway. Fonctions: 1) Commander un péripherique de la box par SMS et obtenir le retour d'info par SMS 2) Envoyer un SMS avec la HC2 ( alerter lors de coupure internet, frigo qui ne consomme plus d'énergie, etc..) Alors allons y Now: Prerequis: - Server web - Smartphone android - Application "SMS Gateway" de b00lean - une HC2 Installation et configuration des fichiers PHP sur votre server Web: 1) récupérer les fichiers sur mon github ici et les copier sur votre server web 2) modifier les fichiers comme ci-dessous: fichier sms.php //variable a modifier $hc2ip = "192.168.2.3"; $smsgatewayip = "192.168.2.23" remplacer les ip de la HC2 et du smartphone faisant tourner SMS Gateway fichier tableaux.php $devices = array(); $devices[chambre][lumiere] = 82; $devices[salon][lumiere] = 42; $commandes = array(); $commandes[0] = array('on','turnOn','allume'); $commandes[1] = array('off','turnOff','eteint'); $commandes[1] = array('close','turnOn','ferme'); $commandes[1] = array('open','turnOff','ouvert'); Sur ce fichier il faut modifier le tableau devices par vos périphériques sous ce format $devices[nom de la piece][nom du module] = id du module; Configuration du logiciel SMS Gateway: aller dans settings: 1) cocher les case: "Listen for http send SMS commands", "Forward incoming SMS to HTTP" et "Start gateway automatically" 2) cliquer sur le boutton HTTP Settings 3) configurer les champs : Listen for HTTP commands port: 9090 Required password in URL: votre mot de pass qui sera utiliser par le HC2 Forward incoming SMS to HTTP URL: http://ip.du.server.web/sms.php?login=login du HC2&password=mot de pass du HC2 4) revenez en arriere et lancer SMS Gateway Configuration du HC2: 1) importer le device virtuel SMS.vbif 2) créer une variable nommé "sms" et une variable prédéfini "Telvince" ( a modifier au choix car tout le monde ne s'appel pas vincent ) 3) renseigner l'IP et le port du device virtuel par l'ip et le port de SMS Gateway (ex: ip 192.168.1.2 et port 9090) 4) modifier le bouton du module virtuel suivant vos variable: local phone = fibaro:getGlobalValue("TelVince") local sms = fibaro:getGlobalValue("sms") Utilisation: Il suffit d'envoyer un SMS au numero du smartphome faisant tourné SMS gateaway avec la syntaxe suivante nomdumodule nomdelapiece action (exemple: lumiere chambre on) PS: l'écriture du SMS ne tiendra pas compte des majuscules et des accents, vous pouvez donc écrire avec ou sans comme vous voulez Integration dans GEA: --Test internet GEA.add({"Global", "internet", "NOK"} , 5*60, alerte.."Pas de connexion internet depuis #duration#", { {"Global", "sms", alerte.."Pas de connexion internet depuis #duration#"},{"VirtualDevice", id["SMS"], "1"}, }) SMS Gateway.zip