Aller au contenu

Steven

Membres confirmés
  • Compteur de contenus

    4 434
  • Inscription

  • Dernière visite

  • Jours gagnés

    201

Tout ce qui a été posté par Steven

  1. Steven

    Support Gea

    @minos Il te suffit d'enlever le {"Repeat"} sur ta dernière ligne. Tu peux aussi enlever le {"Days", "All"} qui ne sert à rien car par défaut GEA le prend en compte.
  2. Steven

    Support Gea

    Prochaine version {"TurnOn", {10, 12, 14}, 300} = Allume les lumières 10, 12 et 14 pendant 5mn (extinction automatique) Exemple concret : Allumé une lumière sur détection de mouvement pendant 5mn si la lumière n'est pas déjà allumée ... un grand classique. GEA.add( {<id detecteur>, <id lumière>}, -1, "Détection mouvement", { {"Inverse", 2}, {"TurnOn", <id lumière>, 300}} ) ou GEA.add( {<id detecteur>, "<id lumière>!"}, -1, "Détection mouvement", {"TurnOn", <id lumière>, 300} ) Et voilà, avant il fallait 3 lignes {"Inverse", <numéro de condition>} : Inverse la condition 2 dans l'exemple soit la lumière.
  3. Steven

    Support Gea

    La version est en test et apparemment il y a quelques bugs détectés à corriger. Pour @Sakkhho Que dis-tu d'un petit {"turnOn", {12,14,16}, 300} ?
  4. Steven

    Support Gea

    Je mets un point d'honneur a garder une compatibilité entre les versions. Tu peux donc prendre de l'avance :-)
  5. Steven

    Support Gea

    Bientôt
  6. Steven

    Support Gea

    @pepite
  7. Steven

    Support Gea

    @minos Tu avais perdu quelques lignes de codes. Par contre il m'est impossible de tester si le traffic fonctionne vu que je ne l'ai pas. local id_temp_ext = 14 local id_pluviometre = 16 local id_lumiere_Store_Banne = 81 --Led Store Banne Terrasse local id_lumiere_exterieure_Terrasse = 27 --Lumieres exterieure Terrasse local id_lumiere_exterieure_Devant = 39 --Lumieres extérieure Devant local id_lumiere_porte_entree = 93 -- Lumieres Porte Entrée exterieure local id_lumiere_salon = 125 --Lumieres Salon lampe + Applique local id_lumiere_sejour = 123 --Lumieres Séjour local id_vd_agenda = 127 --Agenda Google local message = "" local jours = {"dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"} local mois = {"janvier", "février", "mars", "avril", "mai", "juin", "juillet", "aout", "septembre", "octobre", "novembre", "décembre"} local today = jours[tonumber(os.date("%w"))+1] .. os.date(" %d ") .. mois[tonumber(os.date("%m"))] message ="Nous sommes le " .. today .."!!!" message = message .. "La température extérieur est de " .. fibaro:getValue(id_temp_ext, "value") message = message:gsub("%.", " virgule ") .." degrés" -- 22.5 devient 22 virgule 5 local rain = fibaro:getValue(id_pluviometre, "value") if (tonumber(rain) > 0) then message = message .. "...Il pleut" else message = message .. "...Il ne pleut pas" end local allume = false if (tonumber(fibaro:getValue(id_lumiere_Store_Banne, "value")) > 0) then message = message .. "...Les lumiéres du store banne terrasse sont allumées" allume = true end if (tonumber(fibaro:getValue(id_lumiere_exterieure_Terrasse, "value")) > 0) then message = message .. "...Les lumières côté terrasse sont allumée" allume = true end if (tonumber(fibaro:getValue(id_lumiere_exterieure_Devant, "value")) > 0) then message = message .. "...Les lumières côté de devant sont allumée" allume = true end if (tonumber(fibaro:getValue(id_lumiere_porte_entree, "value")) > 0) then message = message .. "...La lumière extérieure de l'entrée est allumée" allume = true end if (tonumber(fibaro:getValue(id_lumiere_salon, "value")) > 0) then message = message .. "...Les lumières du salon sont allumées" allume = true end if (tonumber(fibaro:getValue(id_lumiere_sejour, "value")) > 0) then message = message .. "...Les lumières du séjour sont allumées" allume = true end if (not allume) then message = message .. "...Toutes les lumiéres sont éteintes" end -- Récupéré l adresse IP et le port enregistré dans le VD local ip_module = fibaro:get(fibaro:getSelfId(),"IPAddress") --IP du VD local port = fibaro:get(fibaro:getSelfId(),"TCPPort") --Port VD HC2 = Net.FHttp(ip_module, port) status, response = HC2:GET("/api/rest/speech/tts?text="..message:gsub(" ", "+")) fibaro:debug(response) fibaro:debug(status) -- Lecture de l agenda local found = false local events = "" local now = os.date("%d.%m") fibaro:debug(now) for i = 1, 6 do local e = fibaro:getValue(id_vd_agenda, "ui.Label"..i..".value") if (string.find(e, now)) then found = true events = events .. ".." .. e:gsub(":", " heure "):gsub(now, "") events = events:gsub("heure 00", "heure ") end end if (found) then events = "Les rendé vous de la journée sont .." .. events else events = "Aucune entrée dans l'agenda" end local id_temp_ext = 14 local id_pluviometre = 16 local id_lumiere_Store_Banne = 81 --Led Store Banne Terrasse local id_lumiere_exterieure_Terrasse = 27 --Lumieres exterieure Terrasse local id_lumiere_exterieure_Devant = 39 --Lumieres extérieure Devant local id_lumiere_porte_entree = 93 -- Lumieres Porte Entrée exterieure local id_lumiere_salon = 125 --Lumieres Salon lampe + Applique local id_lumiere_sejour = 123 --Lumieres Séjour local id_vd_agenda = 127 --Agenda Google local message = "" local jours = {"dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"} local mois = {"janvier", "février", "mars", "avril", "mai", "juin", "juillet", "aout", "septembre", "octobre", "novembre", "décembre"} local today = jours[tonumber(os.date("%w"))+1] .. os.date(" %d ") .. mois[tonumber(os.date("%m"))] message ="Nous sommes le " .. today .."!!!" message = message .. "La température extérieur est de " .. fibaro:getValue(id_temp_ext, "value") message = message:gsub("%.", " virgule ") .." degrés" -- 22.5 devient 22 virgule 5 local rain = fibaro:getValue(id_pluviometre, "value") if (tonumber(rain) > 0) then message = message .. "...Il pleut" else message = message .. "...Il ne pleut pas" end local allume = false if (tonumber(fibaro:getValue(id_lumiere_Store_Banne, "value")) > 0) then message = message .. "...Les lumiéres du store banne terrasse sont allumées" allume = true end if (tonumber(fibaro:getValue(id_lumiere_exterieure_Terrasse, "value")) > 0) then message = message .. "...Les lumières côté terrasse sont allumée" allume = true end if (tonumber(fibaro:getValue(id_lumiere_exterieure_Devant, "value")) > 0) then message = message .. "...Les lumières côté de devant sont allumée" allume = true end if (tonumber(fibaro:getValue(id_lumiere_porte_entree, "value")) > 0) then message = message .. "...La lumière extérieure de l'entrée est allumée" allume = true end if (tonumber(fibaro:getValue(id_lumiere_salon, "value")) > 0) then message = message .. "...Les lumières du salon sont allumées" allume = true end if (tonumber(fibaro:getValue(id_lumiere_sejour, "value")) > 0) then message = message .. "...Les lumières du séjour sont allumées" allume = true end if (not allume) then message = message .. "...Toutes les lumiéres sont éteintes" end -- Récupéré l adresse IP et le port enregistré dans le VD local ip_module = fibaro:get(fibaro:getSelfId(),"IPAddress") --IP du VD local port = fibaro:get(fibaro:getSelfId(),"TCPPort") --Port VD HC2 = Net.FHttp(ip_module, port) status, response = HC2:GET("/api/rest/speech/tts?text="..message:gsub(" ", "+")) fibaro:debug(response) fibaro:debug(status) -- Lecture de l agenda local found = false local events = "" local now = os.date("%d.%m") fibaro:debug(now) for i = 1, 6 do local e = fibaro:getValue(id_vd_agenda, "ui.Label"..i..".value") if (string.find(e, now)) then found = true events = events .. ".." .. e:gsub(":", " heure "):gsub(now, "") events = events:gsub("heure 00", "heure ") end end if (found) then events = "Les rendé vous de la journée sont .." .. events else events = "Aucune entrée dans l'agenda" end fibaro:sleep(8000) status, response = HC2:GET("/api/rest/speech/tts?text="..events:gsub(" ", "+")) fibaro:debug(response) fibaro:debug(status) -- Lecture du traffic SNCF local traffic = fibaro:getValue(103, "ui.lblTrafficArrivee.value") if (traffic == "ras") then traffic = "L'état du traffic SNCF est normal" else traffic = "Attention, la SNCF annonce un " .. traffic:gsub("min", " minutes ") end fibaro:sleep(8000) status, response = HC2:GET("/api/rest/speech/tts?text="..traffic:gsub(" ", "+")) fibaro:debug(response) fibaro:debug(status)
  8. Steven

    Support Gea

    @minos Je serais tenté de dire que "non" ... ... en effet, la ligne qui fonctionne utilise une durée de 20*60 donc GEA va vérifier de temps en temps que ton ID 111 soit bien activé ou non. Dans le cas qui ne fonctionne pas, tu as une durée de -1 donc GEA DOIT être activé par ta box dès que ton ID 111 (je présume) est activé. Dans ce cas, il est obligatoire de rajouté l'ID 111 dans l'entête. Ainsi : --[[ %% autostart %% properties 111 value %% globals --]] Dès que tu veux utilisé le -1 (immédiat) comme durée, tu DOIS avoir la propriété dans l'entête de ton GEA, il n'y existe aucun autre moyen pour que cela fonctionne.
  9. Steven

    Support Gea

    @minos Tu as bien mis l'ID de ton détecteur dans l'entête ? Envoyé de mon SM-G935F en utilisant Tapatalk
  10. Steven

    Support Gea

    @minos Je regarde demain devant un vrai ordinateur. Envoyé de mon SM-G935F en utilisant Tapatalk
  11. Steven

    Support Gea

    Vérifie les ID que tu as dans l'entête, les scénarios sont sensible s'ils trouvent des ID qui ne correspondent plus à des modules. Non, de mémoire, il n'y a pas encore de nouvelle version de GEA qui corrige tes soucis. Envoyé de mon SM-G935F en utilisant Tapatalk
  12. Steven

    Support Gea

    On remplace tous les espaces " " par un "+" "le traffic est normal" deviendra "le+traffic+est+normal" ainsi il n'y a pas d'espace dans l'URL que tu envois.
  13. Steven

    Support Gea

    Alors, difficile d'être sûr à 100% mais cela devrait (presque) fonctionner. A la fin du code qu'il y a derrière ton bouton Imperihome, voici ce qu'il faudrait ajouter. local traffic = fibaro:getValue(103, "ui.lblTrafficArrivee.value") if (traffic == "ras") then traffic = "L'état du traffic SNCF est normal" else traffic = "Attention, la SNCF annonce un " .. traffic:gsub("min", " minutes ") end fibaro:sleep(8000) status, response = HC2:GET("/api/rest/speech/tts?text="..traffic:gsub(" ", "+")) fibaro:debug(response) fibaro:debug(status)
  14. Steven

    Support Gea

    Aparement, il me faudrait l'ID de celui-ci :
  15. Steven

    Support Gea

    C'est quoi l'ID de ton VD et le nom du label que tu souhaite annoncé (j'en vois 2 sur l'image). Ce même label affiche t'il aussi "Traffic normal" ?
  16. Steven

    Support Gea

    En fait, c'est super simple. Derrière le bouton de ton VD Imperihome, il y a le code suivant : message ="Nous sommes le " .. today .."..." Les 3 points à la fin sont la pour faire une pause. Remplacer par "!!!" au lieu de "..." Et voilà.
  17. Steven

    Support Gea

    Idem chez moi, en modifiant mon VD pour qu'il soit plus lisible, j'ai glissé un bug. Je corrige dès demain et t'envoie le correctif. Bien joué pour l'agenda [emoji6] Envoyé de mon SM-G935F en utilisant Tapatalk
  18. Steven

    Support Gea

    Ok, le soucis est en réalité assez simple, je m'attendais a trouver "40" dans ton label et non pas "40 °C" ce qui n'a plus rien à voir donc voici le code modifié afin qu'il extrait le chiffre du label : GEA.add({"Function", function() return tonumber(string.match(fibaro:getValue(747, "ui.lbl1.value"), "[0-9.]+"))>=30, fibaro:getValue(747, "ui.lbl1.value") end}, 30, "FAN ON", {{"VirtualDevice", 747, 3}}) Allez, dis moi que cela fonctionne ?
  19. Steven

    Support Gea

    Peux-tu m'envoyer le JSON de ton VD stp : http://<HC2_IP>/api/devices/747
  20. Steven

    Support Gea

    Sinon il y a toujours la version barbare : GEA.add({"Function", function() return tonumber(fibaro:getValue(747, "ui.lbl1.value"))>=30, fibaro:getValue(747, "ui.lbl1.value") end}, 30, "FAN ON", {{"VirtualDevice", 747, 3}})
  21. Steven

    Support Gea

    Je me pose actuellement la question suivante : Est-ce que "Label+" et "Label-" existe vraiment dans GEA. Bien réfléchi, je ne pense pas l'avoir codé.
  22. Steven

    Support Gea

    Oui avec un VD tu ne peux pas utiliser Value il faudrait que tu trouve un exemple avec Label+ Je suis pas devant mon ordi. Sinon regarde sur gea.piccand.me Envoyé de mon SM-G935F en utilisant Tapatalk
  23. Steven

    Support Gea

    Oui mais attention Value+ 30 sera actionné à 31 car Value+ signifie plus grand que. Pour l'inverse utilise Value- 26. Envoyé de mon SM-G935F en utilisant Tapatalk
  24. Steven

    Support Gea

    C'est pas vraiment l'IP mais www.xxx.yy:port Oui le 127 doit correspondre à L'ID de ton VD. Perso, je suis toujours en HTTPS mais peut-être pas toi. Est-ce que la fonction testit te met bien 3Ts dans ton VD ? Envoyé de mon SM-G935F en utilisant Tapatalk
  25. Steven

    Support Gea

    Voici le script Google. Il va chercher dans ton agenda les entrées des 2 prochaines semaines et les envoi dans un Module Virtuel. /** * ======================================================================================================== * Création de variable globale sur la HC2 * ======================================================================================================== **/ var HC2_IP = "hc2.xxxxxxxxx.xx"; var LOGIN = "username"; var PWD = "password"; var CAL_ID = 'xxxxxx.yyyyyyy@gmail.com' var TIMEZONE = "GMT+2"; var DATE_FORMAT = "dd.MM"; var ALL_DAY = ""; var TIME_FORMAT = "HH:mm"; var MV_ID = 87; var options = {"headers": { "User-Agent": "MY_APP_NAME (App URL/your email address)", "Authorization": "Basic " + Utilities.base64Encode(LOGIN + ":" + PWD) }} /** * ---------------------------------------------------------------------------- * Recherche les entrées de l'agenda et les envoi au MV après avoir appuyer * sur le bouton Reset * ---------------------------------------------------------------------------- **/ function findAndSend() { var cal = CalendarApp.getCalendarById(CAL_ID); var now = new Date(); var nowPlus2Weeks = new Date(now.getTime() + (14 * 24 * 60 * 60 * 1000)); var events = cal.getEvents(now, nowPlus2Weeks); var index = 1; reset(); events.sort(function(a, b) { return a.getStartTime() - b.getStartTime(); }); for (var i=0 ; i < events.length && i < 10; i++) { var d = getDateTime(events[i]) send("ui.Label"+index+".value", d + " - " + events[i].getTitle()); index += 1; } } function getDateTime(event) { var dt = "" if (event.isAllDayEvent()) { dt = Utilities.formatDate(event.getStartTime(), TIMEZONE, DATE_FORMAT); dt += " " + ALL_DAY; } else { dt = Utilities.formatDate(event.getStartTime(), TIMEZONE, DATE_FORMAT); dt += " "; dt += Utilities.formatDate(event.getStartTime(), TIMEZONE, TIME_FORMAT); } return dt; } function testit() { reset(); send("ui.Label1.value", "3Ts"); } /** * --------------------------------------------------------------------------------------------------------- * Action * --------------------------------------------------------------------------------------------------------- **/ function send(name, value) { var url = "https://"+HC2_IP + "/api/callAction?deviceID="+MV_ID+"&name=setProperty&arg1="+name+"&arg2="+value + " " envoi = UrlFetchApp.fetch(url, options) } /** * --------------------------------------------------------------------------------------------------------- * Retourne toutes les variables * --------------------------------------------------------------------------------------------------------- **/ function reset() { var url = "https://" + HC2_IP + "/api/callAction?deviceID="+MV_ID+"&name=pressButton&arg1=11"; envoi = UrlFetchApp.fetch(url, options) } et je te joint mon Module Virtuel. Le script appuie sur le bouton "Refresh" pour supprimer ce q'il y a dans le MV puis insert les événements un par un. Lorsque tu auras crée ton script sur ton drive.google.com, teste le en choisissant la fonction "testit", il te demandera l'autorisation pour accéder à ton agenda. Ensuite planifie le lancement de la fonction "findAndSend" pour quelle tourne toutes les heures. Et voilà. Google_Agenda.vfib
×
×
  • Créer...