Aller au contenu

Recommended Posts

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é par Kristiano

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :huh:

Partager ce message


Lien à poster
Partager sur d’autres sites

@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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci@steven pour l’explication


Envoyé de mon iPhone en utilisant Tapatalk Pro

Partager ce message


Lien à poster
Partager sur d’autres sites

@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 :60:

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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/

 

Partager ce message


Lien à poster
Partager sur d’autres sites

maybe i will do it :74: for you.

 

Please be patient.

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

@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.

Partager ce message


Lien à poster
Partager sur d’autres sites
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 :60:

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é par pedia

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :(

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est fait !!! :60:

It's done !!! :60:

 

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 :74:

It is now possible to send from GEA a message on a SONOS loudspeaker announcing the weather according to the criteria you want :74:

 

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é par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites
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 !

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Exactement, je vais changer le post précédent au cas ou quelqu'un d'autre copie ces lignes.

 

Bien joué.

Partager ce message


Lien à poster
Partager sur d’autres sites

 @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é.

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 11 heures, MAM78 a dit :

C'est fait !!! :60:

It's done !!! :60:

 

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 :74:

It is now possible to send from GEA a message on a SONOS loudspeaker announcing the weather according to the criteria you want :74:

 

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é par Kristiano

Partager ce message


Lien à poster
Partager sur d’autres sites
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

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

@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é par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites
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

Partager ce message


Lien à poster
Partager sur d’autres sites

@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 ? 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

@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é par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

×