Domodial Posté(e) le 2 décembre 2017 Signaler Posté(e) le 2 décembre 2017 (modifié) Ca y'est je me suis lancé avec le travail de Steven Dit Google Jarvis Allume le plafond D'accord, Jarvis allume plafond Et ça ne s'allume pas Quand je regarde dans l'activité IFTTT ça me dit : Applet skipped (avec comme commande "allume plafond") Bon j'ai compris ce que cela veut dire, mais dans un langage naturel ils entendent quoi par là ? Modifié le 2 décembre 2017 par Domodial
Domodial Posté(e) le 2 décembre 2017 Signaler Posté(e) le 2 décembre 2017 Bon, j'ai fini par réussir à faire fonctionner le bouzin. Problème dans l'URL (méchant Steven ) qui m'a induit en erreur avec www.xxx.xxxx.xxx En fait c'est domodial.net (sans www) dans mon cas. Maintenant ma coquine de lumière s'allume, par contre elle ne s'éteind pas Et pis le coup des raccourcis "Home" chez moi ça ne fonctionne pas... Super boulot Steven comme d'hab !! MERCI !!
Domodial Posté(e) le 2 décembre 2017 Signaler Posté(e) le 2 décembre 2017 (modifié) hum y'a des trucs à comprendre lol Si je passe la commande "éteind" ça ne fonctionne pas. Mais "éteins" ça fonctionne ! Modifié le 2 décembre 2017 par Domodial
Domodial Posté(e) le 2 décembre 2017 Signaler Posté(e) le 2 décembre 2017 (modifié) Les raccourcis pour modifier l'ordre ne fonctionnent toujours pas. Ca c'est chiant car la nenette me dit : ha y'a un bug. Modifié le 2 décembre 2017 par Domodial
Steven Posté(e) le 2 décembre 2017 Signaler Posté(e) le 2 décembre 2017 Que mets tu comme raccourcis ?
Domodial Posté(e) le 2 décembre 2017 Signaler Posté(e) le 2 décembre 2017 En fait je met les mêmes. Dans la configuration du Steven Script j'utilise "Allume plafond" Et dans le raccourcis je dit : "Allume le plafond" ou "Allumer le plafond" Alors l'assistant dit : allume plafond
Steven Posté(e) le 2 décembre 2017 Signaler Posté(e) le 2 décembre 2017 Dans le raccourcis l'assistant doit dire "Jarvis allumé plafond". Il ne faut pas oublier le mot clé "Jarvis". 1
Yohan Posté(e) le 2 décembre 2017 Signaler Posté(e) le 2 décembre 2017 Il y a 9 heures, Steven a dit : Si tu as déjà ces phrases dans les commandes lilli, tu n'as pas besoin de les noter, cela n'est utile que si tu souhaites mettre des synonymes. Pour les volets, je dois tester car je n'en ai pas donc pas encore testé chez moi. @jjacques68 C'est l'appel à mon VD Imperihome qui fait parler une tablette qui n'a rien à voir avec le Google Home. Ok dans les commandes lili du dimmer j'ai allume et éteins mais si je veux faire varier, tu le gères de quelle façon ?
Steven Posté(e) le 2 décembre 2017 Signaler Posté(e) le 2 décembre 2017 Tu dis juste "Jarvis augmente la lumière <nom du module>"
Yohan Posté(e) le 2 décembre 2017 Signaler Posté(e) le 2 décembre 2017 Ca fonctionne chez toi ? Car il ne se passe rien sur mon dimmer et dans le debug il me dit que c'est introuvable. [DEBUG] 23:36:23: [{"action":" augmente la lumière des spot TV"}][DEBUG] 23:36:23: Utilisé : augmente la lumière spot tv[DEBUG] 23:36:25: Introuvable
Steven Posté(e) le 4 décembre 2017 Signaler Posté(e) le 4 décembre 2017 Oui, je ne t'aurai pas fourni un script sans l'avoir essayé d'abord Le principe est simple, si le script détecte le mot "augmente" ou "diminue", ensuite il essaie il parcoure tous les devices de type dimable (c'est peut-être là que cela coince) et fait un matching entre le nom des devices et celui dicté dans la phrase. Je prend en compte les devices de type : com.fibaro.multilevelSwitch ... pourrais-tu regarder le type de tes spot tv ? S'il ne sont pas du même type, le plus simple est de modifier la ligne suivante pour tester. for _, v in ipairs(api.get("/devices?type=com.fibaro.multilevelSwitch")) do lights[string.lower(v.name)] = v.id end En supprimant ce qui est indiqué en rouge. Cela sera un peu moins performant mais sûr de trouver ton module. 1
Domodial Posté(e) le 4 décembre 2017 Signaler Posté(e) le 4 décembre 2017 Hello, Sur les modules RGBW je n'ai pas vu d'entrée lili. Comment faire du coup ?
Steven Posté(e) le 4 décembre 2017 Signaler Posté(e) le 4 décembre 2017 Perso, je créerais un synonyme avec ["allume led"] = function() fibaro:call(<ID_LED>, "turnOn") end, ["éteins led"] = function() fibaro:call(<ID_LED>, "turnOff") end,
Domodial Posté(e) le 4 décembre 2017 Signaler Posté(e) le 4 décembre 2017 Merci Steven ! C'est donc pour ça que tu avais prévu le truc, je n'ai pas encore compris toutes les possibilités
Steven Posté(e) le 4 décembre 2017 Signaler Posté(e) le 4 décembre 2017 Oui, je savais bien qu'il fallait ouvrir quelques possibilités car cela ne pouvait pas fonctionner à 100% ... En réalité, j'ai aussi des RGBW et j'ai aussi constaté qu'il n'y avait pas de commande lili Tu sais que tu peux aussi faire ainsi pour piloter un module virtuel : Par exemple, je souhaite appuyer sur le bouton "Eteindre" de mon VD "Chauffage". Alors je mets : ["éteins le chauffage"] = "Chauffage Eteindre"
Yohan Posté(e) le 4 décembre 2017 Signaler Posté(e) le 4 décembre 2017 Salut @Steven, j'ai trouvé. Ca fonctionne sur les FGD211 mais pas sur les FGD212.
Steven Posté(e) le 5 décembre 2017 Signaler Posté(e) le 5 décembre 2017 Excellent Envoi moi le "type" de ton FGD212, c'est juste une ligne de code a adapter dans mon script comme cela tout le monde pourra en profiter. https://<ip_hc2>/api/devices/<ID_DU_MODULE> et recherche le mot "type":"
Domodial Posté(e) le 5 décembre 2017 Signaler Posté(e) le 5 décembre 2017 Il y a 17 heures, Steven a dit : Oui, je savais bien qu'il fallait ouvrir quelques possibilités car cela ne pouvait pas fonctionner à 100% ... En réalité, j'ai aussi des RGBW et j'ai aussi constaté qu'il n'y avait pas de commande lili Tu sais que tu peux aussi faire ainsi pour piloter un module virtuel : Par exemple, je souhaite appuyer sur le bouton "Eteindre" de mon VD "Chauffage". Alors je mets : ["éteins le chauffage"] = "Chauffage Eteindre" Super Steven ! J'ai essayé et mes leds fonctionnent superbement bien Pour le VD il faut que je fasse ce que tu me dit pour le Dodo (qui coupera tout quand envie de dodo ) 1
Yohan Posté(e) le 5 décembre 2017 Signaler Posté(e) le 5 décembre 2017 Salut Steven, Voici le type : "type":"com.fibaro.FGD212" "baseType":"com.fibaro.multilevelSwitch"
Steven Posté(e) le 6 décembre 2017 Signaler Posté(e) le 6 décembre 2017 Lol, moi j'ai ceci : "type":"com.fibaro.multilevelSwitch","baseType":"com.fibaro.binarySwitch" Bref, le plus simple de est faire ce que j'ai mentionné sur ce post : 1
Yohan Posté(e) le 6 décembre 2017 Signaler Posté(e) le 6 décembre 2017 Parfait Steven ça fonctionne et c'est très réactif. Merci pour ton aide.
971jmd Posté(e) le 7 décembre 2017 Signaler Posté(e) le 7 décembre 2017 (modifié) Le 06/11/2017 à 05:03, Steven a dit : Allez, petite mise à jour du script Jarvis. Ma fille de 7 ans voulait pouvoir dire "Jarvis allume la lumière du salon ET éteints la lumière de la cuisine" J'ai donc ajouté un petit morceau de code qui découpe les instructions en me basant sur le ET. Je souhaitais augmenter le chauffage de 2 degrés sans avoir à dire deux fois "Jarvis augmente le chauffage" J'ai donc créer un deuxième applet qui reçoit la même chose que le premier + un numéro. Je peux maintenant dire "Jarvis augmente le chauffage 2 fois" Voici donc le 2ème applets $ : Et le scénario modifié --[[ %% 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 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 k, v in ipairs(device.properties.rows) do for j, 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 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 k, 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 (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 i = 1, #devices do thisDone, n = doDevice(devices[i], liliCommand) if (thisDone) then name = n done = true end end if (not done) then local scenes = api.get("/scenes") for i = 1, #scenes do thisDone, n = doScene(scenes[i], 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 i = 1, #devices do thisDone, n = doVirtual(devices[i], liliCommand) if (thisDone) then name = n done = true end end end if (done) then fibaro:debug("Device reconnue : " .. name) end end end end salut @Steven je comprend pas tres bien local mot_cle_separateur = "et" local synonymes = { ["ouvre le portail"] = "Portail action", faut il remplacer ET par jarvis et je comprend pas tres bien les synonymes faut il metre la meme phrase dans LILI voici mon debug quand je dit: ok google jarvis eteins la cuine [DEBUG] 22:39:24: null[DEBUG] 22:39:37: [{"action":" éteins la cuisine"}][DEBUG] 22:39:37: Utilisé : éteins la cuisine et comme notification que je recois de IFTT Applet run: if you say"jarvis $", then make a web request eteins la cuisine et Le 06/11/2017 à 05:03, Steven a dit : Modifié le 7 décembre 2017 par 971jmd
971jmd Posté(e) le 7 décembre 2017 Signaler Posté(e) le 7 décembre 2017 (modifié) Modifié le 7 décembre 2017 par 971jmd
pepite Posté(e) le 7 décembre 2017 Signaler Posté(e) le 7 décembre 2017 Bonjour @971jmd PAs tres bien compris tes 2 posts ;-)
971jmd Posté(e) le 7 décembre 2017 Signaler Posté(e) le 7 décembre 2017 (modifié) Il y a 2 heures, pepite a dit : Bonjour @971jmd PAs tres bien compris tes 2 posts ;-) Modifié le 7 décembre 2017 par 971jmd
Messages recommandés