Diuck Posté(e) le 6 novembre 2017 Signaler Posté(e) le 6 novembre 2017 Merci Nico de t'interesser à mon problème n’étant pas trop au top dans se domaine merci de développer stp
j-psy Posté(e) le 6 novembre 2017 Signaler Posté(e) le 6 novembre 2017 Il y a 2 heures, JossAlf a dit : Et tu aurais une astuce pour allumer ou éteindre toutes les lumières du salon ou de la cuisine ? On aurait une phrase générique du style « éteindre les lumières de la cuisine » qui se baserait sur le nom de la pièce et sur le type lampe des modules. Perso, j'ai fait des scènes. Éteins toutes les lumières, lumière salon à 50%, ferme les volets côté sud, etc.. Tout est possible !
Diuck Posté(e) le 7 novembre 2017 Signaler Posté(e) le 7 novembre 2017 (modifié) Une question me viens à l’éprit Dans l'url du IFTTT : http://<login>:<password>@<adresse>/api/scenes/<id du scenario>/action/start faut il y mettre le login et password de l'administrateur ou le login et password de l''utilisateur ? je crois avoir lu quelque chose à ce sujet D'avance merci Modifié le 7 novembre 2017 par Diuck
JossAlf Posté(e) le 7 novembre 2017 Signaler Posté(e) le 7 novembre 2017 @j-psy : oui j’ai ce genre de scènes. On peut même utiliser une fonction. Mais l’idée est d’avoir une phrase générique : Ok Google Éteindre #lumiere #NomDeLaPieceEnvoyé de mon iPhone en utilisant Tapatalk
JossAlf Posté(e) le 7 novembre 2017 Signaler Posté(e) le 7 novembre 2017 @diuck : id et mdp de celui qui a les droits sur les modules que tu veux commander. Envoyé de mon iPhone en utilisant Tapatalk
maneavel Posté(e) le 7 novembre 2017 Signaler Posté(e) le 7 novembre 2017 Je n'ai pas eu le temps de lire l'intégralité du post, mais est-ce que quelqu'un à essayé les raccourcis de Google Home? C'est hyper pratique! Plutôt que de créer autant de IFTTT que d'action à faire, cela vient en complément du script "Jarvis". Cela permet de dire "Ok Google Armageddon" ce qui lance l'action que l'on a paramétré dans Google Home (ex: Ok Google Jarvis fermer volets salon). On peut en paramétrer autant que l'on veut. https://support.google.com/googlehome/answer/7382893?hl=fr
Steven Posté(e) le 7 novembre 2017 Signaler Posté(e) le 7 novembre 2017 Il y a 2 heures, JossAlf a dit : @j-psy : oui j’ai ce genre de scènes. On peut même utiliser une fonction. Mais l’idée est d’avoir une phrase générique : Ok Google Éteindre #lumiere #NomDeLaPiece Envoyé de mon iPhone en utilisant Tapatalk J'y travaille
j-psy Posté(e) le 7 novembre 2017 Signaler Posté(e) le 7 novembre 2017 Il y a 5 heures, JossAlf a dit : @j-psy : oui j’ai ce genre de scènes. On peut même utiliser une fonction. Mais l’idée est d’avoir une phrase générique : Ok Google Éteindre #lumiere #NomDeLaPiece Envoyé de mon iPhone en utilisant Tapatalk Il y a 2 heures, Steven a dit : J'y travaille Je sens qu'on vas s'éclater avec ce Google Home..
Steven Posté(e) le 7 novembre 2017 Signaler Posté(e) le 7 novembre 2017 Voilà tout ce passe ici : local allLightRoom = {"allume", "éteins", "les lumières"} local allBlindRoom = {"ouvre", "ferme", "les volets"} "allume" permet de faire un turnOn, "éteins" un turnOff ... "les lumières" est le mot magique, le reste de la phrase va permettre de trouver la pièce. Exemple : "OK Google Jarvis allume toutes les lumières du salon" .. ma pièce s'appelle Salon "OK Google Jarvis éteins les lumières des chambres" .. ma pièce s'appelle Chambres(et oui, je sais c'est pas logiques mais c'est LES chambres des enfants) "OK Google Jarvis allume les lumières du sandwich de l'entrée" .. ma pièce s'appelle Entrée Je ne peux pas tester pour les stores, je n'en ai pas, mais j'ai préparé le code. A vous de paramétrer selon vos préférences/habitudes --[[ %% properties %% events %% globals --]] -- ========================================================== -- -- Script pour IFTT (Google Assistant + Webhooks -- input : "javis $" -- webhooks : https://<login>:<password>@<url>/api/scenes/<id scenario>/action/start -- method : post -- content : application/json -- body : {"args":[{"action":" {{TextField}}"}]} -- ========================================================== -- -- Ce script va comparer le texte énoncé à l'assistant -- avec les phrases contenues dans les champs liliCommand -- Il va d'abord chercher dans les modules puis les scénarios -- et finir par les modules virtuels -- Pour les modules virtuels il suffit d'énoncer le nom -- du VD suivis du libellé du bouton, ex : "Chauffage Manuel" -- ========================================================== -- -- Les synonymes permettent de remplacer des énoncés à la volée. -- Si par exemple vour avez une phrase lili "allume le chauffage" -- et que vous souhaitez aussi pouvoir dire "active le chauffage" -- il suffit d'ajouter : -- ["active le chauffage"] = "allume le chauffage", -- Vous pouvez aussi lier des phrases avec de boutons de VD -- Exemple ["ouvre le portail"] = "Portail action", -- va donc cliquer sur le bouton "action" du VD "Portail". -- Il est aussi possible de créer ses propres function -- Exemple : -- ["capture camera salon"] = function() -- fibaro:call(<id camera>, "sendPhotoToUser", <id user>) -- end, local mot_cle_separateur = "et" local allLightRoom = {"allume", "éteins", "les lumières"} local allBlindRoom = {"ouvre", "ferme", "les volets"} local synonymes = { ["ouvre le portail"] = "Portail action", ["diminue le chauffage"] = "Chauffage -1", ["augmente le chauffage"] = "Chauffage +1", ["éteins le jardin"] = "éteins la terrasse", ["allume le jardin"] = "allume la terrasse", ["chauffage automatique"] = "chauffage automatic", ["ouvre les volets"] = "brise-soleil ░ Ouvrir", ["ferme les volets"] = "brise-soleil Fermer ▓", ["stop les volets"] = "brise-soleil stop", ["allume la télé"] = "allume la télévision", ["éteins la télé"] = "éteins la télévision", ["voir le garage"] = "imperihome 2", ["voir l'entrée"] = "imperihome 3", ["dodo"] = "bonne nuit", ["mais tf 1"] = "Freebox TV 1", ["mais france 2"] = "Freebox TV 2", ["mais france 3"] = "Freebox TV 3", ["mais m 6"] = "Freebox TV 6", ["capture caméra salon"] = function() fibaro:call(158, "sendPhotoToUser", 2) end, ["capture caméra terrasse"] = function() fibaro:call(203, "sendPhotoToUser", 2) end, ["capture caméra entrée"] = function() fibaro:call(156, "sendPhotoToUser", 2)end, ["quelle est la température intérieure"] = function() fibaro:call(163, "pressButton", 2) end, ["quelle est la température extérieure"] = function() fibaro:call(163, "pressButton", 4) end, } -- Remplacement des caractères spéciaux -- function replaceChar(s) local sprime = s:gsub("à ", "à"):gsub("é", "é"):gsub("è", "è"):gsub("î", "î"):gsub("ô", "ô"):gsub("û", "û"):gsub("ù", "ù"):gsub("ê", "ê"):gsub("â","â"):gsub(" ' ", "'") return sprime end function trim(s) return (s:gsub("^%s*(.-)%s*$", "%1")) end -- Compare 2 chaines de caractères -- function isEqual(s1, s2) s1 = string.lower(s1) s2 = string.lower(s2) return s1 == s2 or replaceChar(s1) == replaceChar(s2) end -- Recherche un module correspondant -- -- et effectue l'action nécessaire -- function doDevice(device, liliCommand) if (device.properties.liliOnCommand) then if (isEqual(device.properties.liliOnCommand, liliCommand)) then fibaro:call(device.id, "turnOn") return true, device.name elseif (isEqual(device.properties.liliOffCommand, liliCommand)) then fibaro:call(device.id, "turnOff") return true, device.name end end return false end -- Recherche une scène correspondante -- -- et effectue l'action nécessaire -- function doScene(scene, liliCommand) if (isEqual(scene.liliStartCommand, liliCommand)) then fibaro:startScene(scene.id) return true, scene.name elseif (isEqual(scene.liliStopCommand, liliCommand)) then fibaro:killScenes(scene.id) return true, scene.name end return false end -- Recherche un module correspondant -- -- et effectue l'action nécessaire -- function doVirtual(device, liliCommand) local fullname = device.name .. " " for _, v in ipairs(device.properties.rows) do for _, w in ipairs(v.elements) do if (w.caption) then if (isEqual(fullname .. w.caption, liliCommand)) then fibaro:call(device.id, "pressButton", w.id) return true, fullname .. w.caption end end end end return false end function manageRoom(mode, option, phrase) local roomid = findRoomName(phrase:gsub(option[1], ""):gsub(option[2], ""):gsub(option[3], "")) local devices = api.get("/devices/?property="..mode.."&enabled=true&visible=true&roomID="..roomid) for _, v in ipairs(devices) do if (mode == "isLight") then if (phrase:match(option[1])) then fibaro:call(v.id, "turnOn") elseif (phrase:match(option[2])) then fibaro:call(v.id, "turnOff") end else if (phrase:match(option[1])) then fibaro:call(v.id, "open") elseif (phrase:match(option[2])) then fibaro:call(v.id, "close") end end end end function getRooms() local rooms = {} for _, v in ipairs(api.get("/rooms")) do rooms[string.lower(v.name)] = v.id end return rooms end function findRoomName(name) local rooms = getRooms() for k,v in pairs(rooms) do if (name:match(k)) then return v end end return -1 end function split(text) local sep = " " .. mot_cle_separateur .. " " local tx = text local t = {} while (tx:find(sep)) do local pos = tx:find(sep) table.insert(t, tx:sub(1, pos)) tx = tx:sub(pos+sep:len(), tx:len()) end if (tx:len() > 0) then table.insert(t, tx) end return t end -- Lecture des paramètres de cette scène -- local params = fibaro:args() fibaro:debug(json.encode(params)) local action = nil local number = nil if (params) then for _, v in ipairs(params) do if (v.action) then action = v.action end if (v.nombre) then number = tonumber(v.nombre) end end end -- Recherche une action a effectuer -- if (action) then local actions = split(string.lower(replaceChar(trim(action)))) local occurence = number or 1 for j = 1, occurence do for i = 1, #actions do liliCommand = trim(actions[i]) fibaro:debug("Utilisé : " .. liliCommand) if (liliCommand:match(allLightRoom[3])) then manageRoom("isLight", allLightRoom, liliCommand) return end if (liliCommand:match(allBlindRoom[3])) then manageRoom("isBlind", allBindRoom, liliCommand) return end if (synonymes[liliCommand]) then liliCommand = synonymes[liliCommand] if (type(liliCommand) == "function") then liliCommand() return end end local name = "< none >" local done = false local devices = api.get("/devices?&enabled=true") for k = 1, #devices do thisDone, n = doDevice(devices[k], liliCommand) if (thisDone) then name = n done = true end end if (not done) then local scenes = api.get("/scenes") for k = 1, #scenes do thisDone, n = doScene(scenes[k], liliCommand) if (thisDone) then name = n done = true end end end if (not done) then local devices = api.get("/devices?type=virtual_device&enabled=true") for k = 1, #devices do thisDone, n = doVirtual(devices[k], liliCommand) if (thisDone) then name = n done = true end end end if (done) then fibaro:debug("Device reconnue : " .. name) end end end end 2 1
Diuck Posté(e) le 7 novembre 2017 Signaler Posté(e) le 7 novembre 2017 (modifié) @JossAlf @Steven @j-psy @Lazer Merci de m'avoir apporté votre aide,J'ai enfin réussi à configurer mon router ce qui me permet de profiter de JARVIS Encore MERCI !! Modifié le 7 novembre 2017 par Diuck 1
Lazer Posté(e) le 7 novembre 2017 Auteur Signaler Posté(e) le 7 novembre 2017 Super Diuck Bon moi j'ai un problème, Google Home ce n'est pas WAF du tout !!! Elle est jalouse que je parle à une autre femme ... et comme elle ne veut pas lui parler, dans sa tête ça doit être une concurrente 1
j-psy Posté(e) le 7 novembre 2017 Signaler Posté(e) le 7 novembre 2017 Lol ! Il paraît qu'une voix d'homme est prévu.. Après, est-ce que c'est vrai ? Quand ? Aucune idée.. Mais ça réglerai ton petit souci @Lazer..
Nico Posté(e) le 7 novembre 2017 Signaler Posté(e) le 7 novembre 2017 Et moi j'ai fais livré au mauvais point relai mdr
j-psy Posté(e) le 7 novembre 2017 Signaler Posté(e) le 7 novembre 2017 Mdr @Nico Certains galèrent avec les adresses ip, et d'autres avec les adresses postales.. Chacun sa croix ! 1 1
JossAlf Posté(e) le 7 novembre 2017 Signaler Posté(e) le 7 novembre 2017 @Steven trop fort ! Je vais tester ça
Hysis Posté(e) le 7 novembre 2017 Signaler Posté(e) le 7 novembre 2017 Allez hop je vais coder un ptit truc pour éteindre la pizza dans le salon. Cherchez pas, y a que @Steven, le méchant trop trop’fort qui allume les sandwich de l’entrée avec ses cordes vocales qui peut me comprendre 1
Diuck Posté(e) le 7 novembre 2017 Signaler Posté(e) le 7 novembre 2017 Jarvis à beaucoup de mal avec les Wall plug ! il ne veux pas les allumer et quand j'ai de la chance il va en éteindre 1/5 il en est quoi pour vous ?
JossAlf Posté(e) le 8 novembre 2017 Signaler Posté(e) le 8 novembre 2017 Tu as regardé le debug ? Compare ce que Google home comprend et ce que tu écris dans les champs lili.Exemple : Mets la télé ~ mais la télé Envoyé de mon iPhone en utilisant Tapatalk
pepite Posté(e) le 8 novembre 2017 Signaler Posté(e) le 8 novembre 2017 Il y a 13 heures, Diuck a dit : J'ai enfin réussi à configurer mon router tu n'as plus qu'à partager ;-) En parlant de lilli, ca meriterait peut-etre un petit tuto dans la HomeCenter pour les nuls ;-) J'en fais partie ;-) Jamais joué avec
Diuck Posté(e) le 8 novembre 2017 Signaler Posté(e) le 8 novembre 2017 Il y a 4 heures, JossAlf a dit : Tu as regardé le debug ? Compare ce que Google home comprend et ce que tu écris dans les champs lili. Exemple : Mets la télé ~ mais la télé Envoyé de mon iPhone en utilisant Tapatalk Salut @JossAlf Oui bien sur regarde ma copie d’écran
Diuck Posté(e) le 8 novembre 2017 Signaler Posté(e) le 8 novembre 2017 Il y a 2 heures, pepite a dit : tu n'as plus qu'à partager ;-) En parlant de lilli, ca meriterait peut-etre un petit tuto dans la HomeCenter pour les nuls ;-) J'en fais partie ;-) Jamais joué avec Salut pepite Je ferais ça ce soir
pepite Posté(e) le 8 novembre 2017 Signaler Posté(e) le 8 novembre 2017 Merci ;-) comme ca, l'info sera coomplète, GH +IFTTT + lilli de notre HC2 ;-) Et il n'y aura plus qu'à ;-) à l'arrivée de la bête ;-)
JossAlf Posté(e) le 8 novembre 2017 Signaler Posté(e) le 8 novembre 2017 (modifié) @Diuck Ah mince ! Normalment tu devrais avoir une ligne supplémentaire avec le nom du Device reconnu quand ça fonctionne . Regarde mon debug : J'ai fais exprès de donner un ordre bidon (j'ai pas de commande lili "Allumer la lumière salon" mais j'ai bien la commande "allumer la lumière blanche") - Les 2 premières lignes correspondent à un échec (comme toi il ne trouve pas de device correspondant à "Allumer la lumière salon") - Les 3 dernières lignes fonctionnent car la HC2 a bien trouvé le device "Lumière Blanche" qui correspond à la commande lili "allumer la lumière blanche" Je ne sais as où ça coince ... Tu n'aurais pas un espace à la fin de tes commandes lili ? -> "allume le salon " ≠ "allume le salon" Modifié le 8 novembre 2017 par JossAlf
Messages recommandés