Kristiano Posté(e) le 20 décembre 2017 Signaler Posté(e) le 20 décembre 2017 (modifié) I don't think I got any help with my issues so I'm trying again. - My GEA scene is called "GEA 6.01" but still my virtual device shows nothing. What can be wrong? - I declare my ids using 1:1 relation like "KITCHEN_LIGHT = 101". How to include floor or section? id like to turn off a complete floor or area. I tried with a function to manage a section, but run into error GEA.add({"SceneActivation", id["LIVING_LIGHT"] , 14}, -1, "", {{"Function", function() return sectionlight("/api/sections/174") end}}) function sectionlight(string) local HC2 = Net.FHttp("127.0.0.1",11111); -- no need for authentication response ,status, errorCode = HC2:GET(string) sectionsTable = json.decode(response) response ,status, errorCode = HC2:GET("/api/rooms") roomsTable = json.decode(response) response ,status, errorCode = HC2:GET("/api/devices") devicesTable = json.decode(response) for loop1 = 1, #sectionsTable do sectionid = sectionsTable[loop1].id fibaro:debug(sectionid) for loop2 = 1, #roomsTable do room = roomsTable[loop2].name if roomsTable[loop2].sectionID == sectionsTable[loop1].id then fibaro:debug(room) for loop3 = 1, #devicesTable do if (devicesTable[loop3].roomID == roomsTable[loop2].id and devicesTable[loop3].properties.isLight == 'true') then device = devicesTable[loop3].name deviceid = devicesTable[loop3].id fibaro:debug(device) fibaro:call(deviceid, "turnOff") end end end end end end Modifié le 20 décembre 2017 par Kristiano
MAM78 Posté(e) le 20 décembre 2017 Signaler Posté(e) le 20 décembre 2017 Hello, j'ai remarqué que certain événements n'apparaissent pas au lancement de GEA dans la log.[DEBUG] 20:31:54: Ajout auto : #1 Démaorage de la Box[DEBUG] 20:31:54: Ajout auto : #2 Démarrage GEA[DEBUG] 20:31:54: Ajout auto : #3 Check new version *répété*[DEBUG] 20:31:54: Ajout auto : #4 Check new version beta *répété*[DEBUG] 20:31:54: Ajout auto : #5 Porte Garage toujours ouverte *répété*[DEBUG] 20:31:54: Ajout auto : #8 Update VD Jour Chômé[DEBUG] 20:31:54: Ajout auto : #9 Update VD Vacances scolaires Voir le trou #6 et#7 Voici les lignes correspondantes : GEA.add({id["DETECTEUR_PORTE_GARAGE"]}, -1, "La porte du garage vient d être fermée", {{"Inverse"}, {"Sleep", 7, {"SendVoiceMessage", "MP3", "Fermeture Porte Cave.mp3", "50"}}}, "Fermettre porte Garage") GEA.add({id["DETECTEUR_PORTE_GARAGE"], {"Time", "Sunset-15", "Sunrise+5"}}, -1, "La porte de la cave vient d être ouverte", {{"SendVoiceMessage", "MP3", "Ouverture Porte Cave.mp3", "50"}}, "Ouverture porte Garage") Vous auriez une explication, sachant que lors de la détection des événements #6 et #7, les libellés apparaissent bien dans la Log
Steven Posté(e) le 20 décembre 2017 Auteur Signaler Posté(e) le 20 décembre 2017 @MAM78 C'est normal, lors de l'enregistrement de GEA, ce dernier se lance en mode "autostart" et n'inclus QUE les GEA.add qui le concerne (soit une durée >= 0). Tes lignes 6 et 7 sont liées a des déclenchements instantanés et ne seront chargées QUE lors d'un déclenchement instantané correspondant à l'ID qui a provoqué cela. @Kristiano The first version of the VD was bugged, did you try to import the new version ? I updated the same post. About the room or section lights, I will help you as soon as possible.
MAM78 Posté(e) le 20 décembre 2017 Signaler Posté(e) le 20 décembre 2017 Merci@steven pour l’explication Envoyé de mon iPhone en utilisant Tapatalk Pro
Steven Posté(e) le 20 décembre 2017 Auteur Signaler Posté(e) le 20 décembre 2017 @Kristiano Add this in your config function() function config() ... -- turnOn / off all light in a room --{"Room", <name>, "turnOn|turnOff"} GEA.options.room = { name = "Room lights", action = function(roomName, action) local rooms = api.get("/rooms") for _, room in pairs(rooms) do if (room.name:lower() == roomName:lower()) then for _, device in pairs(api.get("/devices?type=com.fibaro.philipsHueLight&roomID="..room.id)) do fibaro:call(device.id, action) end for _, device in pairs(api.get("/devices?property=[isLight,true]&roomID="..room.id)) do fibaro:call(device.id, action) end end end end } -- turnOn / off all light in a section --{"Section", <name>, "turnOn|turnOff"} GEA.options.section = { name = "Section lights", action = function(sectionName, action) local sections = api.get("/sections") for _, section in pairs(sections) do if (section.name:lower() == sectionName:lower()) then for _, room in pairs(api.get("/rooms")) do if (room.sectionID == section.id) then GEA.options.room.action(room.name, action) end end end end end } ... end Then you will be able to use it like this GEA.add(..., {"Section", "Floor", "turnOff"}) GEA.add(..., {"Room", "Kitchen", "turnOn"}) This may be part of the next release because I love the idea 1
Kristiano Posté(e) le 20 décembre 2017 Signaler Posté(e) le 20 décembre 2017 Excellent! Works like a charm!
Steven Posté(e) le 20 décembre 2017 Auteur Signaler Posté(e) le 20 décembre 2017 Was a copy problem ?
Kristiano Posté(e) le 20 décembre 2017 Signaler Posté(e) le 20 décembre 2017 Yes, my misstake! New problem: How to make Sonos tell the following - "Its Monday today and the weather temp is 6 degrees and cloudy" I have the Sonos VD https://www.domotique-fibaro.fr/topic/616-fibaro-hc2-vd-sonos-remote-tã©lã©commande-pour-diffuseur-sonos/
Steven Posté(e) le 20 décembre 2017 Auteur Signaler Posté(e) le 20 décembre 2017 I don't have any Sonos so the only way is to call @pepite
MAM78 Posté(e) le 20 décembre 2017 Signaler Posté(e) le 20 décembre 2017 maybe i will do it for you. Please be patient. 1
Steven Posté(e) le 20 décembre 2017 Auteur Signaler Posté(e) le 20 décembre 2017 @Kristiano Carefull, in "autostart" mode, if you use only {"Section", ...}, GEA will optimize its memory and will remove useless option like {"Room", ...} but Room is used by Section. To prevente this case, please add this line : table.insert(GEA.usedoptions, "room") anywhere in your function config() Thanks P.S. In your case, you use it in "immediat" mode with SceneActivation so you don't care because GEA don't optimize its code but for more security please add this line.
pedia Posté(e) le 20 décembre 2017 Signaler Posté(e) le 20 décembre 2017 (modifié) Il y a 2 heures, Steven a dit : @Kristiano Add this in your config function() function config() ... -- turnOn / off all light in a room --{"Room", <name>, "turnOn|turnOff"} GEA.options.room = { name = "Room lights", action = function(roomName, action) local rooms = api.get("/rooms") for _, room in pairs(rooms) do if (room.name:lower() == roomName:lower()) then for _, device in pairs(api.get("/devices?type=com.fibaro.philipsHueLight")) do fibaro:call(device.id, action) end for _, device in pairs(api.get("/devices?property=[isLight,true]&roomID="..room.id)) do fibaro:call(device.id, action) end end end end } -- turnOn / off all light in a section --{"Section", <name>, "turnOn|turnOff"} GEA.options.section = { name = "Section lights", action = function(sectionName, action) local sections = api.get("/sections") for _, section in pairs(sections) do if (section.name:lower() == sectionName:lower()) then for _, room in pairs(api.get("/rooms")) do if (room.sectionID == section.id) then GEA.options.room.action(room.name, action) end end end end end } ... end Then you will be able to use it like this GEA.add(..., {"Section", "Floor", "turnOff"}) GEA.add(..., {"Room", "Kitchen", "turnOn"}) This may be part of the next release because I love the idea L'idée est super mais chez moi ça allume/éteint toute la maison. Quand je mets un nom de pièce bidon, rien ne se passe, mais quand il y a une vrai pièce, ça agit sur toute la maison. Idem pour les sections, ça agit sur l'ensemble de la maison. Modifié le 20 décembre 2017 par pedia
Steven Posté(e) le 21 décembre 2017 Auteur Signaler Posté(e) le 21 décembre 2017 Tu utilises des Philips Hue ? Car je vois déjà le problème, j’ai oublié le filtre sur la pièce pour ce type d'ampoule 1
MAM78 Posté(e) le 21 décembre 2017 Signaler Posté(e) le 21 décembre 2017 (modifié) C'est fait !!! It's done !!! Il est maintenant possible d'envoyer depuis GEA un message sur un haut-parleur SONOS annonçant la météo selon les critères que vous le souhaitez It is now possible to send from GEA a message on a SONOS loudspeaker announcing the weather according to the criteria you want Si vous n'avez pas d'enceinte Sonos, pour pouvez utiliser mon code également pour l'envoi de messages push. If you dont have a Sonos speaker, you can use my code also for sending push messages. GEA.add( {"Time", "07:15"}, 0, "Nous sommes #datefull# il fait #tempsext# degres et le temps est #WeatherCondition#", {"SendVoiceMessage", "TTS", "Nous sommes #datefull# il fait #tempsext# degrer et le temps est #WeatherCondition#", "10", "fr-FR"}, "Annonce de la météo") GEA.add( {"Time", "07:15"}, 0, "We are #datefull# the outside temperature is #tempsext# degrees and then weather is #WeatherCondition#", {"SendVoiceMessage", "TTS", "We are #datefull# the outside temperature is #tempsext# degrees and then weather is #WeatherCondition#", "10", "en-us"}, "Wheather message") Pour utiliser cette fonctionnalité, il faut ajouter dans GEA les codes ci-dessous : To use this feature, you must add the codes below to GEA : Remplacer la ligne / Replace the line : removeuselesstrad = "Removing useless traduction: " Par celles-ci / By this one : removeuselesstrad = "Removing useless traduction: ", WeatherCondition = {"Clear", "Cloudy", "Rain", "Snow", "Storm", "Fog"}, week2 = {"sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"}, month = {"january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"}, the = "the", unknow = "unknown" Remplacer la ligne / Replace the line : removeuselesstrad = "Suppression de traduction inutile : ", Par celles-ci / By this one : removeuselesstrad = "Suppression de traduction inutile : ", WeatherCondition = {"Clair", "Nuageux", "Pluvieux", "Neigeux", "Orageux", "Brumeux"}, week2 = {"dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"}, month = {"janvier", "février", "mars", "avril", "mai", "juin", "juillet", "aout", "septembre", "octobre", "novembre", "décembre"}, the = "le", unknow = "indeterminé" Remplacer la ligne / Replace the line : message = message:gsub("#date#", os.date(GEA.trad.date_format)) Par celles-ci / By this one : message = message:gsub("#date#", os.date(GEA.trad.date_format)) local currentdate = os.date("*t") message = message:gsub("#datefull#", GEA.trad.week2[currentdate.wday] .. " " .. GEA.trad.the .. " " .. currentdate.day .. " " .. GEA.trad.month[currentdate.month]) message = message:gsub("#tempsext#", tonumber(string.format("%.0f", api.get("/weather").Temperature))) message = message:gsub("#WeatherCondition#", GEA.WeatherCondition) Avant la fonction ci-dessous / Before the function below : -- ---------------------------------------------------------- -- Recherche et activation des plugins scénarios -- ---------------------------------------------------------- Ajouter la fonction ci-dessous / Add this function below : -- ---------------------------------------------------------------- -- Recherche le temps qu'il fait avec la traduction selon la langue -- ---------------------------------------------------------------- GEA.WeatherCondition = function() for i = 1, #GEA.traduction.en.WeatherCondition do if GEA.traduction.en.WeatherCondition[i] == api.get("/weather").WeatherCondition then return GEA.trad.WeatherCondition[i] end end return GEA.trad.unknow end Ci-dessous ma scène d'envoi de messages à l'enceinte Sonos / Below my scene sending messages to the Sonos speaker SendVoiceMessage.lua Nommer la scène SendVoiceMessage / Name the Scene SendVoiceMessage La scène doit porter le même nom que son nom dans la ligne événement GEA (.....{"SendVoiceMessage", "TTS"....) The scene must have the same name as its name in the GEA event line (.....{"SendVoiceMessage", "TTS"....) @Steven tu pourras peut-être optimiser le code GEA et l'intégrer dans la prochaine version ? Modifié le 21 décembre 2017 par MAM78
pedia Posté(e) le 21 décembre 2017 Signaler Posté(e) le 21 décembre 2017 Il y a 9 heures, Steven a dit : Tu utilises des Philips Hue ? Car je vois déjà le problème, j’ai oublié le filtre sur la pièce pour ce type d'ampoule Oui. J'ai donc essayé de comprendre et j'ai modifié : for _, device in pairs(api.get("/devices?type=com.fibaro.philipsHueLight&roomID="..room.id)) do fibaro:call(device.id, action) end Et là effectivement ça marche ! Génial, ça va faciliter grandement certaines lignes ! 1
Steven Posté(e) le 21 décembre 2017 Auteur Signaler Posté(e) le 21 décembre 2017 Exactement, je vais changer le post précédent au cas ou quelqu'un d'autre copie ces lignes. Bien joué.
speedoxx007 Posté(e) le 21 décembre 2017 Signaler Posté(e) le 21 décembre 2017 Ou es-ce que je trouve le VD GEA Alarm?
Did Posté(e) le 21 décembre 2017 Signaler Posté(e) le 21 décembre 2017 @speedoxx007, Le VD GEA Alarm est ici: https://www.domotique-fibaro.fr/topic/1211-support-gea/?do=findComment&comment=53670 Pas facile de le retrouver au milieu de tout ces messages, il faudrait peut-être mettre un lien en début de sujet GEA 6 avant qu'il soit verrouillé. 1
Kristiano Posté(e) le 21 décembre 2017 Signaler Posté(e) le 21 décembre 2017 (modifié) Il y a 11 heures, MAM78 a dit : C'est fait !!! It's done !!! Il est maintenant possible d'envoyer depuis GEA un message sur un haut-parleur SONOS annonçant la météo selon les critères que vous le souhaitez It is now possible to send from GEA a message on a SONOS loudspeaker announcing the weather according to the criteria you want Si vous n'avez pas d'enceinte Sonos, pour pouvez utiliser mon code également pour l'envoi de messages push. If you dont have a Sonos speaker, you can use my code also for sending push messages. GEA.add( {"Time", "07:15"}, 0, "Nous sommes #datefull# il fait #tempsext# degres et le temps est #WeatherCondition#", {"SendVoiceMessage", "TTS", "Nous sommes #datefull# il fait #tempsext# degrer et le temps est #WeatherCondition#", "10", "fr-FR"}, "Annonce de la météo") GEA.add( {"Time", "07:15"}, 0, "We are #datefull# the outside temperature is #tempsext# degrees and then weather is #WeatherCondition#", {"SendVoiceMessage", "TTS", "We are #datefull# the outside temperature is #tempsext# degrees and then weather is #WeatherCondition#", "10", "en-us"}, "Wheather message") Pour utiliser cette fonctionnalité, il faut ajouter dans GEA les codes ci-dessous : To use this feature, you must add the codes below to GEA : Remplacer la ligne / Replace the line : removeuselesstrad = "Removing useless traduction: " Par celles-ci / By this one : removeuselesstrad = "Removing useless traduction: ", WeatherCondition = {"Clear", "Cloudy", "Rain", "Snow", "Storm", "Fog"}, week2 = {"sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"}, month = {"january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"}, the = "the", unknow = "unknown" Remplacer la ligne / Replace the line : removeuselesstrad = "Suppression de traduction inutile : ", Par celles-ci / By this one : removeuselesstrad = "Suppression de traduction inutile : ", WeatherCondition = {"Clair", "Nuageux", "Pluvieux", "Neigeux", "Orageux", "Brumeux"}, week2 = {"dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"}, month = {"janvier", "février", "mars", "avril", "mai", "juin", "juillet", "aout", "septembre", "octobre", "novembre", "décembre"}, the = "le", unknow = "indeterminé" Remplacer la ligne / Replace the line : message = message:gsub("#date#", os.date(GEA.trad.date_format)) Par celles-ci / By this one : message = message:gsub("#date#", os.date(GEA.trad.date_format)) local currentdate = os.date("*t") message = message:gsub("#datefull#", GEA.trad.week2[currentdate.wday] .. " " .. GEA.trad.the .. " " .. currentdate.day .. " " .. GEA.trad.month[currentdate.month]) message = message:gsub("#tempsext#", tonumber(string.format("%.0f", api.get("/weather").Temperature))) message = message:gsub("#WeatherCondition#", GEA.WeatherCondition) Avant la fonction ci-dessous / Before the function below : -- ---------------------------------------------------------- -- Recherche et activation des plugins scénarios -- ---------------------------------------------------------- Ajouter la fonction ci-dessous / Add this function below : -- ---------------------------------------------------------------- -- Recherche le temps qu'il fait avec la traduction selon la langue -- ---------------------------------------------------------------- GEA.WeatherCondition = function() for i = 1, #GEA.traduction.en.WeatherCondition do if GEA.traduction.en.WeatherCondition[i] == api.get("/weather").WeatherCondition then return GEA.trad.WeatherCondition[i] end end return GEA.trad.unknow end Ci-dessous ma scène d'envoi de messages à l'enceinte Sonos / Below my scene sending messages to the Sonos speaker SendVoiceMessage.lua Nommer la scène SendVoiceMessage / Name the Scene SendVoiceMessage La scène doit porter le même nom que son nom dans la ligne événement GEA (.....{"SendVoiceMessage", "TTS"....) The scene must have the same name as its name in the GEA event line (.....{"SendVoiceMessage", "TTS"....) @Steven tu pourras peut-être optimiser le code GEA et l'intégrer dans la prochaine version ? Thanks a lot! But I run into this error in my Sonos VD. The error is not shown Its just that I done hear anything... except silence It seems like the #datefull# etc are not getting updated since I get this in the TTS Scene. [DEBUG] 14:51:50: Mode=TTS Message=We are #datefull# the outside temperature is #tempsext# degrees and then weather is #WeatherCondition# Vol=25 Btw i removed the Pushnotification of the same. So its "". FYI Modifié le 21 décembre 2017 par Kristiano
Steven Posté(e) le 21 décembre 2017 Auteur Signaler Posté(e) le 21 décembre 2017 il y a 58 minutes, Did a dit : @speedoxx007, Le VD GEA Alarm est ici: https://www.domotique-fibaro.fr/topic/1211-support-gea/?do=findComment&comment=53670 Pas facile de le retrouver au milieu de tout ces messages, il faudrait peut-être mettre un lien en début de sujet GEA 6 avant qu'il soit verrouillé. Merci, je l'ai mis sur la 1ere page dans la section avec les VD 1
MAM78 Posté(e) le 21 décembre 2017 Signaler Posté(e) le 21 décembre 2017 (modifié) @Kristiano It's not "en-EN", but "en-us" in the GEA event . Try this ! It seems like the #datefull# etc are not getting updated since I get this in the TTS Scene. [DEBUG] 14:51:50: Mode=TTS Message=We are #datefull# the outside temperature is #tempsext# degrees and then weather is #WeatherCondition# Vol=25 Btw i removed the Pushnotification of the same. So its "". FYI Are you sure to use the V6.02 version off GEA ? Modifié le 21 décembre 2017 par MAM78
Steven Posté(e) le 21 décembre 2017 Auteur Signaler Posté(e) le 21 décembre 2017 Il y a 2 heures, Javier Carelli a dit : Bonjour, est-il possible avec GEA de déterminer la consommation d'énergie de chaque appareil et d'envoyer un message mensuel avec la consommation de chaque appareil? Salutations GEA s'execute toutes les 30 seconds, il n'est donc pas le meilleure pur cela. Par contre, il y a l'api : local ids = "36,39" -- local ids = table.concat(fibaro:getDevicesId({interface="power"}),",") local result = api.get("/energy/now/now/summary-graph/devices/power/"..ids)[1][2] Qui pourrait répondre à tes attentes
Steven Posté(e) le 21 décembre 2017 Auteur Signaler Posté(e) le 21 décembre 2017 @MAM78 Il y a de bonnes idées dans ta proposition, comme le #datefull# qui peut être utilisé par tout le monde. Pour les #WeatherCondition# et #tempsext#, ils sont déjà inclus dans GEA. GEA.add( { {"Weather!", ""}, {"Weather!", "Temperature" , ""} }, .., "Condition : #value[1]# - Temperature : #value[2]#" ) Les conditions météo seront en anglais (puisque Fibaro nous empêche de mettre la bonne locale), mais dans ce cas, je préfère mettre en place un mécanisme de traduction plutôt que quelque chose de très spécifique ... par exemple #translate(weather, #value[2]#)# mais cela semble compliqué à l'usage. Je me suis donc posé la question "Pourquoi ne pas renvoyer la valeur directement dans la bonne langue ?". A ce jour, cela demanderait aux utilisateurs de changer leurs lignes car la plus part on déjà {"Weather", "rain"}. Mais, rien n'empêche de créer une option {"WeatherLocal", ...} ce qui me semble être une idée acceptable ? Après, modifier GEA pour en fin de compte appeler un script externe, je n'y vois pas trop d’intérêt. Pourquoi ne pas tout faire dans le script ou dans GEA ? Donc, vu qu'on a tout pour déterminer, la météo, la température et prochainement le datefull) ... ce qui nous manque c'est la possibilité d'intégrer directement ton script SONOS au sein même de GEA {"SonosMP3", ...} {"SonosTTS", ...} ce qui ne semble pas très compliqué et qui aurait une véritable plus-valu pour GEA. Qu'en penses-tu ?
MAM78 Posté(e) le 22 décembre 2017 Signaler Posté(e) le 22 décembre 2017 (modifié) @Steven Concernant, ta suggestion d'intégrer le script SONOS dans GEA. Ok à 100%. Je pense que cela devrait intéresser de nombreuses personnes (celles qui possèdent des SONOS, évidement !) Concernant l'histoire de traduction j'essai d'écrire une option (fonction) dans GEA qui rechercherait une valeur dans un premier tableau et donnerait comme résultat sa correspondance dans un deuxième. Cette option (fonction) pourrait être utilisée pour faire des traductions. Valeur en anglais, Table1 en anglais, Table2 en français. Résultat de la traduction. Sur l'utilisation de l'événement suivant : GEA.add(true, 0, "Test Transpose", {{"transpose", "B", {"A", "B", "C"}, {"a", "b", "c"}}, {"SendVoiceMessage", "TTS", "Retour #value[1]#", 2, "fr-FR"}}, "Test Transpose") Le résultat attendue serait : Retour b Mais l'erreur suivante : [DEBUG] 00:44:26: Option : [transpose, ["B",["A","B","C"],["a","b","c"]]] ne peut pas être utilisé comme action Mais je n'arrive pas à la faire fonctionner. Tu pourrais m'expliquer ce qui cloche. transpose = {name="transpose", getValue=function(Value, Table1, Table2) for i = 1, #Table1 do if Table1 == Value then print("Transpose"..Table2 ) return Table2 end end return "" end }, Modifié le 22 décembre 2017 par MAM78
Messages recommandés