-
Compteur de contenus
2 501 -
Inscription
-
Dernière visite
-
Jours gagnés
28
Tout ce qui a été posté par MAM78
-
Si tu veux le faire du Homekit pilotable depuis l'extérieur de ton domicile, il te faut un Hub HomeKit. Sinon comme indiqué, tu peux toujours utiliser le VD mais il te faudra un autre moyen d'agir dessus (IFTTT, Application tiers sur ton téléphone qui est en mesure d'envoyer une commande http/https via l'API Fibaro).
-
C'est un exemple d'usage de formules imbriquées suite à mon échange avec @Steven
- 12 330 réponses
-
- 1
-
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
J'y ai assisté en direct. Faisait pas chaud ! Supporter du PSG mais étant Alsacien d'origine. Dilemme Le bon côté quoi qu'il arrivait je gagnais
-
Je confirme selon cette syntaxe. il n'y a pas de passage dans la fonction Label. Est-ce qu'il y a un problème dans ma syntaxe ou est-ce qu'il n'est pas possible en l'état d'imbriquer des formules dans la partie condition ?
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
J'ai supposé qu'il n'était pas possible d'imbriquer les fonction GEA (cf. ma question antérieur), d'où ma suggestion. Je viens d'essayer ta proposition ci-dessus, mais elle ne fonctionne pas pour un label. Je n'ai pas fait le test pour une VG. Voici mon test : GEA.add({{"RegEx", {"Label", id["VD_HomeMode_Manager"], "lblGaby"}, "Absent"} ,{"Trigger", "lblGaby"}} ,-1, "StringToAlpha" ,{"Push", {id["PHONE_ID_Michel"]}} ,"StringToAlpha") Le problème est que ma fonction "RegEx" reçoit la valeur nil et non le contenu du label. EDIT : je suppose donc que la fonction "Label" n'est pas exécutée avant la fonction "RegEx"
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
@Steven j'ai une suggestion à te faire concernant la mise en forme/filtrage des données qu'il est parfois nécessaire d'appliquer sur les données sources que nous récupérons dans nos devices, VD, VG, source externe via des commandes API, ... et que nous testons pour vérifier une condition. Est-ce qu'il serait envisageable de pouvoir ajouter un tag (exemple : "[Ma_Function, Paramètre1]") dans les fonctions GEA qui correspondrait à une fonction GEA. Cette fonction recevrait la donnée source brute (propriété du devices, Label d'un VD, VG, source externe via des commandes API) et cette fonction appliquera une transformation/mise en forme (en utilisant éventuellement un ou des paramètres optionnelles) et ce serait cette donnée transformée qui serait vérifiée par GEA évaluée la condition ou restituée pour les actions. Cela ouvrirait des grandes possibilités de création de nouvelles fonctions soit par les utilisateurs ou au sein même de GEA. Comme par exemple : StringToNumber qui utilisable à n'importe quel source (Label, VG, source externe via des commandes API, ... ) JSONDecodeFromGlobal pourrait devenir une fonction JSONDecode qui serait applicable à n'importe quel source (Label, VG, ...)
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Petites précisions concernant ce que je vous propose ici : L'idée est de référencer des conditions/actions qui ne sont pas déjà réalisables au travers des fonctions déjà disponibles sous GEA. Je pense que les fonctions conditions/actions que vous créez pour une simplification d'écriture ou de lecture n'ont pas lieu d'être référencer dans la bibliothèque. Mais rien n'empêche évidement que vous les présentiez dans vos messages, mais elles ne seraient pas intégrées dans la bibliothèque. C'est évidement c'est un sujet ouvert à discussion vous en pensez quoi ?
-
Merci @pepite pour ta contribution que j'ai ajouté à la bibliothèque.
-
Je ne pense pas comme ça, mais de cette façon ce sera bon : GEA.add({"Or" ,{"Global","NameVG", "1"} ,{"Global","NameVG", "2"} ,{"Global","NameVG", "3"} ,{"Global","NameVG", "4"} ,{"Global","NameVG", "5"}} , 30 , "", {"Global","AutreVG","Résultat à afficher"})
- 12 330 réponses
-
- 1
-
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Bibliothèque des fonctions additionnelles pour GEA Nom : LabelRegEx Auteur : @MAM78 Description fonctionnelle : Permet de filtrer les caractères contenue dans un label d'un VD pour en conserver que les caractères utiles et les exploiter. Code : GEA.options.labelregex = {name="LabelRegEx", math=true, optimize = true, depends = {"label"}, control =function(id, property, RegEx, condition) if condition == nil or RegEx == nill then return false, "Check option StringToAlpha condition or ReGex" else return true end end, getValue=function(id, property, RegEx, condition, case) local newvalue = "" for word in string.gmatch(GEA.options.label.getValue(id, property), RegEx) do newvalue = newvalue..word end if case ~= nil then if string.upper(case) == "UPPERCASE" then newvalue = string.upper(newvalue) elseif string.upper(case) == "LOWERCASE" then newvalue = string.lower(newvalue) end end return condition==newvalue end, } Description des paramètres de la fonction : value = données source, RegEx = chaine de caractères de filtrage, case = peut prendre la valeur UPPERCASE ou LOWERCASE afin de mettre en majuscule ou minuscule le résultat après filtrage. Exemples d'utilisations : GEA.add({{"LabelRegEx", id["VD_HomeMode_Manager"], "lblXXX", "[a-zA-Z0-9.-]", "Valeur rechercher"} ,-1, "La valeur du label lblXXX filtrée est égale à : #value#") Compatibilité : 6.11 Nom : TempInt Auteur : @pepite Description fonctionnelle : Permet le retour du relevé (et en TTS) de Température des différents modules d'une Station Météo Netatmo. Code : GEA.options.tempint = {name ="TempInt", math=true, optimize=true, getValue=function() return fibaro:getValue(164, "ui.lblTemp.value"):match("[0-9.]+") end, } GEA.options.tempext = {name="TempExt", math=true, optimize=true, getValue=function() return fibaro:getValue(147, "ui.lblTemp.value"):match("[0-9.%-]+") end, } GEA.options.tempinttts = {name ="TempIntTTS", optimmize=true, getValue=function() local temp = fibaro:getValue(164, "ui.lblTemp.value") return temp:match("[0-9.]+"):gsub("%.", "virgule").. "degrer" end, } GEA.options.tempexttts = {name ="TempExtTTS", optimize=true, getValue=function() local temp = fibaro:getValue(147, "ui.lblTemp.value") return temp:match("[0-9.%-]+"):gsub("%.", "virgule").. "degrer" end, } Exemples d'utilisations : -- Temperature Salon Netatmo-- GEA.add({ {"TempInt-",40},{"Time", "18:30"}}, 30, "Temperature intérieure : {TempInt} °C le {Date}", {"SMS", "Temperature du Salon #value# degrés le #date#"}, "Température Salon Netatmo 18h30") --=== Temp exter matin Station Netatmo ===== GEA.add( {{"Time", "07:00", "07:01"}, {"Time", "07:30", "07:31"}}, 30, "Température exterieure : {TempExt} °C", "Relevés Temperature extérieure" ) Compatibilité : 6.11
-
GEA - Bibliothèque de fonction GEA additionnelles (conditions / actions) Préambule : A l'occasion de mes échanges avec @Steven au sujet des fonctions GEA et notamment celles qui ne sont pas forcement destinées à y être incluses dans la version officielle de GEA (notamment du fait qu'elles ne serait pas forcement utiles au plus grand nombre), il nous ai paru intéressant de référencer l'ensemble des fonctions additionnelles que chacun développe et les référencer sous la forme d'une bibliothèque dans laquelle chacun pourrait venir les récupérer et les intégrer dans son GEA. Le Projet : Nous avons tous des idées/besoins différents et GEA permet d'ajouter vos propres conditions/actions dans GEA. Référencer l'ensemble des fonctions que chacun développe de son côté et les référencer ici sous la forme d'une bibliothèque. Attention : L'idée est de référencer des conditions/actions qui ne sont pas déjà réalisables au travers des fonctions disponibles sous GEA. Les fonctions conditions/actions que vous créez pour une simplification d'écriture ou de lecture n'ont pas lieu d'être référencer ici. Mais rien n'empêche évidement que vous les présentiez dans vos messages, mais elles ne seront pas intégrées dans la bibliothèque. Comment développer une nouvelle fonction (option) : @Steven avait décrit comment développer une fonction (Option) GEA. Vous trouverez les explications ici : Pour rappel ces fonctions doivent être positionnée dans la partie : function config() de GEA. Comment soumettre une nouvelle fonction (option) : C'est simple vous créez un post dans ce sujet dans lequel vous souhaitez vos créations. Pour chaque proposition, il convient : d'en faire une description fonctionnelle de fournir le code de décrire les paramètres de la fonction : donner un ou plusieurs exemples d'utilisation d'indiquer avec quelle version de GEA est est compatible Les propositions seront référencées au fil de l'eau dans le deuxième post ci-dessous. Et peut-être qu'un jour elles seront intégrées dans une version officielle de GEA ` Historique des contributions : LabelRegEx @MAM78 du 22/01/2019 TempInt, TempExt,TempIntTTS, TempExtTTS @pepite du 232/01/2019
-
Ok sur 100% de ce que indiques. Merci en tout cas pour temps consacré. Du coup ce serait peut-être intéressant de créer un Tutoriel recensant les différentes GEA.options.xxxxx afin que chacun puisse y récupérer celles de la communautés. Si tu es d'accord, je peux me charger de créer le tutoriel et le compléter au fil du temps par les nouvelles contributions. J'ignore s'il est possible sur le forum de donner l'accès en modification sur le premier post d'un Sujet à plusieurs utilisateurs ?
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Top ça. Si j'avais su j'aurais perdu un peu moins de temps, mais du coup j'ai appris plein de choses sur ton code GEA et la construction de fonctions utilisateur Est-ce qu'il ne serait pas intéressant néanmoins de pouvoir disposer d'une fonction permettant de filtrer un contenu selon sa propre règle de filtrage et/ou de remplacement de caractères ? Comme pour faire du String to Number ou du Upercase, Lowcase, ... EDIT : Mais du coup je ne sais toujours pas comment associer cette fonction au résultat d'une autre condition et la réutiliser dans la partie condition.
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Je viens de tester et ça marche avec les lignes suivantes : GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblGaby", "#r#Présent"} ,{"Trigger", "lblGaby"}} ,-1, "Gaby arrive de la maison") GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblGaby", "#r#Absent"} ,{"Trigger", "lblGaby"}} ,-1, "Gaby quitte la maison") Ok je ne connaissais pas le regEx #r#, mais dans ce cas quels sont les caractères qui sont filtrés / remplacés ?
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Pour moi et si les tranches horaires correspondent au moment ou l'action doit être réalisée, tu devrais l'écrire comme ça : GEA.add({{"Slider!", 305, "3", 21}, {"Time","7:19","7:20"}}, 30, "",{"Slider",305, "3", 21}) -- Play Wit Fm dans la salle de bain à 7h20 en mode Travail GEA.add({JourTravail, {"Time","7:20","7:21"}}, 30, "" , {"VirtualDevice", 305, 9}) -- Stop music dans la salle de bain à 8h30 en mode Travail GEA.add({JourTravail, {"Time","8:30","8:31"}}, 30, "" , {"VirtualDevice", 305, 2})
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Ca il y a pas de souci, c'est ce que je fais déjà, de façon légèrement différente mais c'est toujours en passant par une fonction "LabelRegEx" qui va chercher le contenu de label (et pas autre chose comme un VD) et nettoyer la valeur. Ce voudrait pouvoir faire quelque chose comme cela : {"RegEx", {"Label", id["VD_HomeMode_Manager"], "lblMichel"}, "[a-zA-Z0-9.-]", "Absent"}}, , , "", {ACTIONS} ) {"RegEx", {"Global", id["VG_XXXXr"]}, "[a-zA-Z0-9.-]", "Absent"}} {"Label", id["VD_HomeMode_Manager"], "lblMichel"}, {"RegEx", #value#, "[a-zA-Z0-9.-]", "Absent"}} {"Global", id["VG_XXXXr"], "lblMichel"}, {"RegEx", #value#, "[a-zA-Z0-9.-]", "Absent"}}
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
J'ai bien essayé, mais je ne vois pas comment ça marche. J'ai essayé ça, mais sans succès. GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblMichel", "#[a-zA-Z0-9.-]#Prsent"} ,{"Trigger", "lblGaby"}} ,-1, "Gaby arrive de la maison") GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblGaby", "#[a-zA-Z0-9.-]#Absent"} ,{"Trigger", "lblGaby"}} ,-1, "Gaby quitte la maison") J'ai supposé qu'il fallait remplacer le r de #r# par la chaine ReGex. Ca ne doit pas être cela Pour rappel mes labels contiennent ça :
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
J'y ai bien pensé mais lorsque le type == "property" il n'y a que 2 sous valeurs possibles : deviceID: numéro d’ID du module propertyName: nom de la propriété Pour deviceID je ne vois pas trop utilités dans la mesure ou la ligne qui sera déclenchée contiendra déjà une condition avec ce deviceID. Sauf peut-être si la condition concerne plusieurs deviceID, dans ce cas cela peut être utile de savoir lequel. EDIT : est-ce qu'il possible dans GEA de tester en une fois plusieurs ID de module comment par exemple : Dans cas effectivement il serait utile de pouvoir vérifier quel deviceID a déclenché la condition GEA.add( {"Label", {72, 73, 74}, "lblXXX", "ZZZZ"}, , "", {ACTIONS} )
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Si c'était bien le but, mais après réflexion je me suis dit que ce serait plus utile de pouvoir mettre le RegEx en paramètre de la fonction afin de pouvoir créer les filtres que l'on veux J'ai néanmoins eu quelques soucis avec les Emoji puisque certain intègre des caractères accentués, du coup je suis obligé de supprimé les caractères les caractères accentués du coup je suis obligé de tester de la façon suivante : Présent devient Prsent dans mon test. Cf. exemple ci-dessous. GEA.add({{"LabelRegEx", id["VD_HomeMode_Manager"], "lblGaby", "[a-zA-Z0-9.-]", "Prsent"} ,{"Trigger", "lblGaby"}} ,-1, "Gaby arrive de la maison") Super, je vais tester ça. Si c'est bon, il sera possible d'utiliser une fonction RegEx indépendamment de la source de donnée (Label, VG, Données récupérées via une API, ...)
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Merci. J'ai testé et ça fonctionne également tout comme ma suggestion qui était sur la même base. Ce sera peut-être effectivement plus simplement intégrable en réutilisant la fonction existante "Trigger". J'ai néanmoins adapté la fonction afin d'évite de devoir renseigner "ui." et ".device" dans le paramètre de la fonction et ne garder que le nom du label. Voici le code modifié. GEA.options.trigger = { name = "Trigger", getValue=function(value) if (not value)then if (GEA.source.type == "autostart") then return "autostart" elseif (GEA.source.type == "global") then return "Global["..GEA.source.name.."]" elseif (GEA.source.type == "property") then return "Property[" ..GEA.source.deviceID .."]" elseif (GEA.source.type == "event") then return "Event["..GEA.source.event.data.deviceId.."]" end elseif (value) then if (GEA.source.type == "property") then return GEA.source.propertyName:gsub("ui.", ""):gsub(".value", "") == value end end return "other" end }
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Nouvelle application mobile pour smartphone Fibaro Home Center / Yubii Home Center
MAM78 a répondu à un(e) sujet de fredokl dans Applications Smartphones et Tablettes
Ah oui effectivement si c'est une solution à tiroirs. L'addition risque d'être salée -
Essay de modifier ton slider manuellement (via l'application ou sur ta console HC2) et il devrait tout seul revenir sur 21.
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :