Diuck 47 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
j-psy 15 Signaler ce message Posté(e) 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 ! Partager ce message Lien à poster Partager sur d’autres sites
Diuck 47 Signaler ce message Posté(e) 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é 7 novembre 2017 par Diuck Partager ce message Lien à poster Partager sur d’autres sites
JossAlf 164 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
JossAlf 164 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
maneavel 2 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
Steven 2 335 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
j-psy 15 Signaler ce message Posté(e) 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.. Partager ce message Lien à poster Partager sur d’autres sites
Steven 2 335 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
Diuck 47 Signaler ce message Posté(e) 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é 7 novembre 2017 par Diuck 1 Partager ce message Lien à poster Partager sur d’autres sites
Steven 2 335 Signaler ce message Posté(e) 7 novembre 2017 Excellent, ça fait plaisir 1 Partager ce message Lien à poster Partager sur d’autres sites
j-psy 15 Signaler ce message Posté(e) 7 novembre 2017 1 Partager ce message Lien à poster Partager sur d’autres sites
Lazer 8 457 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
j-psy 15 Signaler ce message Posté(e) 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.. Partager ce message Lien à poster Partager sur d’autres sites
Nico 2 148 Signaler ce message Posté(e) 7 novembre 2017 Et moi j'ai fais livré au mauvais point relai mdr Partager ce message Lien à poster Partager sur d’autres sites
j-psy 15 Signaler ce message Posté(e) 7 novembre 2017 Mdr @Nico Certains galèrent avec les adresses ip, et d'autres avec les adresses postales.. Chacun sa croix ! 1 1 Partager ce message Lien à poster Partager sur d’autres sites
JossAlf 164 Signaler ce message Posté(e) 7 novembre 2017 @Steven trop fort ! Je vais tester ça Partager ce message Lien à poster Partager sur d’autres sites
Hysis 550 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
Diuck 47 Signaler ce message Posté(e) 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 ? Partager ce message Lien à poster Partager sur d’autres sites
JossAlf 164 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
pepite 1 272 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
Diuck 47 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
Diuck 47 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
pepite 1 272 Signaler ce message Posté(e) 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 ;-) Partager ce message Lien à poster Partager sur d’autres sites
JossAlf 164 Signaler ce message Posté(e) 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é 8 novembre 2017 par JossAlf Partager ce message Lien à poster Partager sur d’autres sites