soulac Posté(e) le 26 novembre 2021 Signaler Posté(e) le 26 novembre 2021 Merci pour ton retour @MAM78 je vais relire le TUTO du coup
soulac Posté(e) le 26 novembre 2021 Signaler Posté(e) le 26 novembre 2021 @MAM78 bon j'ai essayé de faire au mieux mais cela ne fonctionne pas. Dans le VD j'ai : Dans le bouton Famille j'ai : -- -- To configure the VD you must Enter a User Name in designation (caption) of each labels -- This Name wile be used to designate the all the users in VG_HomeMode Globale Variable -- -- -- Variables that must be change by the user -- local Icon_Family_Present = 1017 -- Icon ID when one member of the family is present local Icon_Family_Away = 1018 -- Icon ID when all members of the family are away -- -- Variables that can be change by the user -- local lbl_UserStateValue_Present = " Présent" -- Label value (if Present) local lbl_UserStateValue_Away = " Absent" -- Label value (if Asent) local lbl_FamilyStateValue_Present = " Présente" -- Label value (if Present) local lbl_FamilyStateValue_Away = " Absente" -- Label value (if Asent) local Use_The_VG_HomeMode = true -- Indicates if you want to use the Global Variable local VG_HomeMode = "HomeMode" -- Global Variable containing the homemode state local VG_StateValue_Present = true -- VG value (if Present) local VG_StateValue_Away = false -- VG value (if Away) local debug = false -- Indicate the debug mode state (true ou false) -- -- Do not change the code after here Je n'ai rien touché au code initiale. Dans GEA j'ai l'option : --Permet de filtrer les caractères contenue dans un label d'un VD pour en conserver que les caractères utiles et les exploiter 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, } Puis une ligne simple qui doit activer ou pas une prise en fonction de la présence d'une des personnes de la famille. GEA.add({{"LabelRegEx", id["VD_HomeMode_Manager"], "lblFamilyPresence", "#r#Présent"}, -1, "Prise On",{"turnOn", id["PRISE_BUREAU"]}}) GEA.add({{"LabelRegEx", id["VD_HomeMode_Manager"], "lblFamilyPresence", "#r#Absent"}, -1, "Prise Off",{"turnOff", id["PRISE_BUREAU"]}}) C'est ce que j'ai compris mais malheureusement cela ne fonctionne pas. J'ai oublié quelque chose je supose si tu peux me donner un peu d'aide ? Merci par avance.
MAM78 Posté(e) le 26 novembre 2021 Auteur Signaler Posté(e) le 26 novembre 2021 (modifié) as-tu bien déclaré l'ID associés aux labels de ton VD dans l'entête de GEA section properties, cf exemple ci-dessous "999 ui.lblFamilyPresence.value", remplacer 999 par ton ID du VD : --[[ %% autostart %% properties 999 ui.lblFamilyPresence.value 999 ui.lblToto.value 999 ui.lblTata.value %% globals %% events --]] Attention l'option "GEA.options.labelregex ......." doit être incluse dans la fonction : function config() Modifié le 26 novembre 2021 par MAM78
soulac Posté(e) le 26 novembre 2021 Signaler Posté(e) le 26 novembre 2021 Effectivement je n'avais pas rajoutéles ID dans l'entête GEA. Toutefois en rajoutant les lignes : GEA.add({{"LabelRegEx", id["VD_HomeMode_Manager"], "lblFamilyPresence", "#r#Présent"}, -1, "Prise On",{"turnOn", id["PRISE_BUREAU"]}}) GEA.add({{"LabelRegEx", id["VD_HomeMode_Manager"], "lblFamilyPresence", "#r#Absent"}, -1, "Prise Off",{"turnOff", id["PRISE_BUREAU"]}}) j'ai dans le débug une erreur : durée requise une ptite idée ?
MAM78 Posté(e) le 26 novembre 2021 Auteur Signaler Posté(e) le 26 novembre 2021 (modifié) Ton souci vient des accolades, voici la correction : GEA.add({"LabelRegEx", id["VD_HomeMode_Manager"], "lblFamilyPresence", "#r#Présent"}, -1, "Prise On",{"turnOn", id["PRISE_BUREAU"]}) GEA.add({"LabelRegEx", id["VD_HomeMode_Manager"], "lblFamilyPresence", "#r#Absent"}, -1, "Prise Off",{"turnOff", id["PRISE_BUREAU"]}) Mais, je te suggère d'intégrer la fonction suivante en lieu et place de la fonction "LabelRegEx" : 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 } et de récrire la règle de la façon suivante : GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblFamilyPresence", "#r#Présente"},{"Trigger", "lblFamilyPresence"}}, -1, "Prise On",{"turnOn", id["PRISE_BUREAU"]}) GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblFamilyPresence", "#r#Présente"},{"Trigger", "lblFamilyPresence"}}, -1, "Prise Off",{"turnOff", id["PRISE_BUREAU"]}) Modifié le 29 novembre 2021 par MAM78 EDIT : Correction du code de la fonction "Trigger"
soulac Posté(e) le 29 novembre 2021 Signaler Posté(e) le 29 novembre 2021 @MAM78 merci pour ton retour mais malheureusement cela ne fonctionne pas. Dans GEA j'ai bien rajouté : --[[ %% autostart %% properties 208 value 282 value 284 value 265 value 263 value 311 value 344 value 378 value 305 ui.slider.value 330 ui.lblFamilyPresence.value 330 ui.lblSebastienPresence.value %% globals --]] J'ai rajouté les règles comme suite : GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblFamilyPresence", "#r#Présente"},{"Trigger", "lblFamilyPresence"}}, -1, "Prise On",{"turnOn", id["PRISE_BUREAU"]}) GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblFamilyPresence", "#r#Absente"},{"Trigger", "lblFamilyPresence"}}, -1, "Prise Off",{"turnOff", id["PRISE_BUREAU"]}) Nous sommes d'accord je ne doit pas rajouter l'option : --Permet de filtrer les caractères contenue dans un label d'un VD pour en conserver que les caractères utiles et les exploiter 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, } Merci pour votre aide car la je ne comprends pas. J'ai même dans le module HomeManager modifier les labels "Absente" "Présente" sans les Emoji mais rien non plus.
MAM78 Posté(e) le 29 novembre 2021 Auteur Signaler Posté(e) le 29 novembre 2021 (modifié) Je viens de relire mon message précédent et j'ai fait une erreur de copier/coller sur le sujet de la fonction à remplacer. Voici le code de la fonction en lieu et place de la fonction "LabelRegEx" : 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 } Mais attention ce n'est pas une Option mais une fonction, qu'il convient d'ajouter dans la partie function config() Modifié le 29 novembre 2021 par MAM78
soulac Posté(e) le 29 novembre 2021 Signaler Posté(e) le 29 novembre 2021 @MAM78 super cela fonctionne merci beaucoup pour ton aide
soulac Posté(e) le 2 décembre 2021 Signaler Posté(e) le 2 décembre 2021 @MAM78 je me permets de revenir vers vous car je souhaiterais allumer ma prise à une heure précise mais cela ne fonctionne pas. J'ai fait cette ligne mais rien. GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblSebastienPresence", "#r#Absent"},{"Trigger", "lblSebastienPresence"}}, 30, "",{{"Time","17:53","17:54"},{"turnOff", id["PRISE_BUREAU"]}}) une idée d'erreur ? Merci pour votre patience.
MAM78 Posté(e) le 2 décembre 2021 Auteur Signaler Posté(e) le 2 décembre 2021 Plutôt que te donner directement la solution, je t'invite à lire la documentation GEA {"Time","17:53","17:54"} Je te donne une piste, la partie ci-dessus, je pense que c'est une condition pas une action Je ne suis pas expert en langue anglaise, mais "turnOff" je ne pense pas que ce soit l'équivalent d'allumer Mais t'inquiète, ce genre d'erreurs m'arrive également, n'est-ce pas @Lazer 1
soulac Posté(e) le 3 décembre 2021 Signaler Posté(e) le 3 décembre 2021 Hello merci pour ton retour @MAM78 j'ai modifié la ligne comme ceci GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblSebastienPresence", "#r#Absent"},{"Trigger", "lblSebastienPresence"},{"Time","09:50","09:51"}}, -1, "Prise Off",{"turnOff", id["PRISE_BUREAU"]}) Mais cela n'éteint pas la prise quand le label est déja en mode Absent. Par contre cela fonctionne quand j'appuis sur le VD HomeMode Manager et je bascule du mode Present au mode Absent dans le temps imparti. Je ne sais pas si je me fais bien comprendre. De plus effectivement en relisant la doc GEA j'ai bien vue le changement mais j'ai des lignes qui fonctionne encore comme ceci -- Eteindre prise bureau à 20h00 en mode Travail GEA.add({JourTravail,SebastienPresent}, 30, "Prise bureau off" , {{"Time","20:00","20:01"},{"turnOff", id["PRISE_BUREAU"]}}) J'ai trouvé une variante pour faire le job mais j'aurais aimé que cela fonctionne avec les Labels. Je ne comprends pas ou est mon erreur.
MAM78 Posté(e) le 3 décembre 2021 Auteur Signaler Posté(e) le 3 décembre 2021 (modifié) Il y a 1 heure, soulac a dit : Mais cela n'éteint pas la prise quand le label est déja en mode Absent. Par contre cela fonctionne quand j'appuis sur le VD HomeMode Manager et je bascule du mode Present au mode Absent dans le temps imparti. Je ne sais pas si je me fais bien comprendre. C'est normal, puisque ta règle est conditionnée pour que l'action ne se déclenche seulement durant la tranche horaire mentionnée et que le déclenchement de GEA a été provoqué par le changement de valeur du Label lblSebastienPresence et que celui-ci à pris la valeur "Absent". Ce que je comprend de ce que tu cherches à faire, c'est de vérifier dans la tranche horaire quelle la valeur du Label lblSebastienPresence et si elle est égale à "Absent". Ce n'est pas tout à fait la même chose. Donc ton action n'est pas conditionné par le moment ou ce fait ce changement valeur. Tu devrais essayer ça : GEA.add({{"Time","09:50","09:52"}, {"Label", id["VD_HomeMode_Manager"], "lblSebastienPresence", "#r#Absent"}}, -1, "Prise Off",{"turnOff", id["PRISE_BUREAU"]}) Pour ton info, j'ai remarqué qu'il y a un caractère fantôme entre le mot Absent et la guillemet. "#r#Absent "} Modifié le 3 décembre 2021 par MAM78
soulac Posté(e) le 3 décembre 2021 Signaler Posté(e) le 3 décembre 2021 @MAM78 malheureusement cela ne fonctionne pas. Ce que je souhaite c'est si je suis Absent la prise du bureau soit éteint à une heure précise 13h par exemple. J'ai trouvé une variante en ajoutant dans les boutons "Présent" "Absent" une ligne qui va modifier une variable et dans GEA je fais les lignes suivantes : -- ================================================== -- CONDITION -- ================================================== local JourTravail = {"Global", "JourChome", "NON"} local SebastienPresent = {"Global", "PRESENCE_SEB", "Present"} -- Précense de sébastien local SebastionAbsent = {"Global", "PRESENCE_SEB", "Absent"} -- Absense de sébastien -- Allumer prise bureau à 8h00 en mode Travail GEA.add({JourTravail,SebastienPresent}, 30, "Pise bureau on" , {{"Time","08:00","08:01"},{"turnOn", id["PRISE_BUREAU"]}}) --GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblSebastienPresence", "#r#Présent"},{"Trigger", "lblSebastienPresence"},JourTravail}, -1, "Prise On",{{"Time","08:00","08:01"},{"turnOn", id["PRISE_BUREAU"]}}) -- Eteindre prise bureau à 20h00 en mode Travail GEA.add({JourTravail,SebastienPresent}, 30, "Prise bureau off" , {{"Time","20:00","20:01"},{"turnOff", id["PRISE_BUREAU"]}}) Mais j'aimerais comprendre pourquoi cela ne fonctionne pas avec les labels. J'ai envie de dire c'est la même chose et pas besoin de rajouter une variable mais je me trompe peut etre.
MAM78 Posté(e) le 3 décembre 2021 Auteur Signaler Posté(e) le 3 décembre 2021 (modifié) Je viens de faire des tests, avec ça c'est bon. Tu as plus qu'à adapter les horaires et les noms. GEA.add({{"Time","15:18","15:19"} ,{"Label", id["VD_HomeMode_Manager"], "lblMichel", "#r#Présent"}} ,30, "" ,{"turnOn", id["LAMPE_SAM"]} ,"Présence de Michel, on allume la lumière de la salle à manger") GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblMichel", "#r#Présent"} ,{"Trigger", "lblMichel"} ,{"Time","15:20","15:21"}} ,-1, "" ,{"turnOn", id["LAMPE_SAM"]} ,"Michel vient d'arriver à la maison, on allume la lumière de la salle à manger") GEA.add({{"Time","15:31","15:32"} ,{"Label", id["VD_HomeMode_Manager"], "lblMichel", "#r#Absent"} ,{id["LAMPE_SAM"]}} ,30, "" ,{"turnOff", id["LAMPE_SAM"]} ,"Absence de Michel, la mumière du salon est allumée, on l'éteint") GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblMichel", "#r#Absent"} ,{"Trigger", "lblMichel"} ,{"Time","15:34","15:35"} ,{id["LAMPE_SAM"]}} ,-1, "" ,{"turnOff", id["LAMPE_SAM"]} ,"Michel quitte la maison, la mumière du salon est allumée, on l'éteint") Modifié le 3 décembre 2021 par MAM78
MAM78 Posté(e) le 3 décembre 2021 Auteur Signaler Posté(e) le 3 décembre 2021 (modifié) Voici 2 autres scènes qui pourraient t'intéresser : GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblFamilyPresence", "#r#Présente"}, {"Trigger", "lblFamilyPresence"}, {id["LAMPE_SAM"]}, {"(Time)", "Sunset-15", "Sunrise+5"}} ,-1, "" ,{{"Inverse", 3}, {"turnOn", id["LAMPE_SAM"]}} ,"Arrivée d'un membre de la famille à la maison, il fait nuit, la lumière de la salle à manger est éteinte, on allume") GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblFamilyPresence", "#r#Absente"}, {"Trigger", "lblFamilyPresence"}, {id["LAMPE_SAM"]}} ,-1, "" ,{"turnOff", id["LAMPE_SAM"]} ,"Tous les membres de la fammille ont quitté la maison, la mumière de la salle à manger est allumée, on l'éteint") EDIT : Il y avait une petite erreur corrigée ci-dessus Modifié le 3 décembre 2021 par MAM78
soulac Posté(e) le 3 décembre 2021 Signaler Posté(e) le 3 décembre 2021 (modifié) @MAM78 merci tes lignes fonctionnent cela me donne quelque idée avec la reconnaissance des labels. A super merci pour les autres lignes je vais pouvoir encore jouer Modifié le 3 décembre 2021 par soulac 1
Messages recommandés