soulac Posté(e) le 17 janvier 2019 Signaler Posté(e) le 17 janvier 2019 (modifié) Il y a 9 heures, jjacques68 a dit : chez moi je fais : ["alarme"] = function() fibaro:call(147, "pressButton", 1) end ou 147 est l’ID du VD en question et 1 est le n° du bouton dans le VD (= numéro de l’objet dans le VD... les labels sont aussi des objets...) @jjacques68 merci pour ton retour mais cela ne fonctionne pas de mon coté. Il y a 9 heures, jjacques68 a dit : tu peux créer un user spécifique à l’utilisation dans la HC2 et lui donner l’accès que à la scène qui doit exécuter les ordres. c’est pas le top mais ça réduit les risques... et c’est ce user que tu utilises dans la recettes d’IFTTT. du coup pas besoin de communiquer le super user. oui c'est ce que j'ai fait un user unique pour GH et IFTTT avec un accès très limité. j'ai aussi fait un reverse proxy avec mon syno sous les conseils de @Lazer. Modifié le 17 janvier 2019 par soulac
jjacques68 Posté(e) le 17 janvier 2019 Signaler Posté(e) le 17 janvier 2019 je pense qu’il faudrait que tu postes le code complet de la scène...
soulac Posté(e) le 18 janvier 2019 Signaler Posté(e) le 18 janvier 2019 @jjacques68 comme convenu --[[ %% properties %% events %% globals --]] -- ========================================================== -- -- Script pour IFTT (Google Assistant + Webhooks) -- input : "jarvis $" -- webhooks : https://<login>:<password>@<adresse>:443/api/scenes/40/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 synonymes = { ["alarme"] = function() fibaro:call(291, "pressButton", 1) end, ["ouvre le portail"] = "Portail action", } -- 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 -- Lecture des paramètres de cette scène -- local params = fibaro:args() fibaro:debug(json.encode(params)) local action = nil if (params) then for k, v in ipairs(params) do if (v.action) then action = v.action end end end -- Recherche une action a effectuer -- if (action) then liliCommand = string.lower(replaceChar(trim(action))) 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
jjacques68 Posté(e) le 18 janvier 2019 Signaler Posté(e) le 18 janvier 2019 ah oui ok, tu veux passer par les commandes lili ? c’est indispensable ? moi je ne m’en sers pas.
jjacques68 Posté(e) le 18 janvier 2019 Signaler Posté(e) le 18 janvier 2019 (modifié) Essaye cette scène, c'est celle que j'utilise, j'ai simplement supprimé mes ordres et remplacé par le tien : C'est quasi identique à celle que tu as, mais sans passer par les commandes lili... Il faut juste que tu sois sûr que le VD que tu appelles à bien l'ID 291 et que le bouton que actionnes soit bien le premier objet du VD. --[[ %% properties %% events %% globals --]] local ActionOk = false local Debug = true --tableau de toutes les actions possibles local ListAction = { ["alarme"] = function() fibaro:call(291, "pressButton", 1) end, } --fonction d'affichage Debug-------------------------------------------------------------- function AfficheDebug(msg, color, debug) if debug == true then --si debug activé if msg and color then --si y a un message et une couleur print("<font color ='"..color.."'>"..msg.."</font>") else --sinon erreur print("<font color ='orange'>Error in function AfficheDebug</font>") end end end --remplace les caractères spéciaux : à é è ê '-------------------------------------------- function ReplaceChar(s) local Char = { -- 3 caractères à détecter {" ' ", "'"}, {" â ", "'"}, -- 2 caractères à détecter {"é", "é"}, {"à©", "é"}, {"è", "è"}, {"à¨","è"}, {"î", "î"}, {"ô", "ô"}, {"û", "û"}, {"ù", "ù"}, {"ê", "ê"}, {"â","â"}, --1 caractère à détecter {"Ã", "à"}, } for i,v in pairs(Char) do s = string.gsub(s, v[1], v[2]) end return s end --???????---------------------------------------------------------------------- function Trim(s) return (s:gsub("^%s*(.-)%s*$", "%1")) end --corrige l'ortographe de "étein" (t-d-s-dre-et 1)-------------------------------------------- function CheckEtein(s) local Res = "" local Output = "" local Pattern = {"éteint", "éteindre", "et 1", "est à", "et à%s"} for k,v in pairs(Pattern) do Res = string.match(s, v) --cherche le pattern, str = pattern trouvé if Res then Output = "éteins " Output = Output..string.sub(s,string.len(Res)+2) return Output end end --sinon return l'argument return s end --corrige les espaces autour du "-"----------------------------------------------------- function DelDash(s) i, j = string.find(s, "-") if i then return string.sub(s,1,i-2).."-"..string.sub(s,i+2) else return s end end ---------------------------------------------------------------------------------------- --main ---------------------------------------------------------------------------------------- -- Lecture des arguments de la scène (voir IFTTT) local params = fibaro:args() local action = nil local number = 0 if (params) then for k,v in ipairs(params) do if (v.action) then action = v.action end --recupère l'action if (v.number) then action = action.." "..tostring(v.number) end --recupère le nombre si y a end end if action then --enchaine les fonctions de traitement de chaine action=DelDash(CheckEtein(string.lower(ReplaceChar(Trim(action))))) --recherche et execute l'action en fonction de l'argument for ordre,func in pairs(ListAction) do if action == ordre then AfficheDebug(os.date("%d/%m/%Y - %H:%M : ").."action lancée : "..action, "white", Debug) func() --execute l'action ActionOk = true end end --si action inconnue alors debug. if ActionOk == false then AfficheDebug(os.date("%d/%m/%Y - %H:%M : ").."action inconnue : "..action, "red", true) end end Modifié le 19 janvier 2019 par jjacques68
soulac Posté(e) le 19 janvier 2019 Signaler Posté(e) le 19 janvier 2019 (modifié) @jjacques68 super cela fonctionne à merveille. Petite question j'ai vue dans les pages précédentes que l'on pouvait ne plus utiliser "Ok Google jarvis" pour appeler une commande et juste avoir "Ok Google". Si oui comment peut on faire. Merci encore pour la scène qui fonctionne comme je le souhaite. Juste une petite chose dans le débug j'ai ceci est ce normal ? [DEBUG] 15:40:43: 2019-01-19 15:40:43.905139 [ fatal] Unknown exception: /opt/fibaro/scenes/169.lua:50: attempt to index local 's' (a nil value) Modifié le 19 janvier 2019 par soulac
jjacques68 Posté(e) le 19 janvier 2019 Signaler Posté(e) le 19 janvier 2019 (modifié) Cette erreur n'est pas normal, d'après le code que je t'ai envoyé, il s'agit de la ligne 50, donc la fonction "Trim". Elle ne reçoit pas de valeur... ??? pas normal ça ! Ce qui veut dire que toutes les les fonctions qui corrigent la chaine de caractères de ton ordre semblent ne pas fonctionner ! Tu as fait un copier/coller du code ? c'est tout ? Modifié le 19 janvier 2019 par jjacques68
jjacques68 Posté(e) le 19 janvier 2019 Signaler Posté(e) le 19 janvier 2019 Pour ne pas utiliser le mot clé "jarvis" : Dans l'application google home : allé dans "Paramètres" - "Plus de paramètres" - onglet "Assistant" - "Routines" - bouton "+" : Choisir "Ajouter de commandes" et saisir la commande que tu veux. Exemple "Allume la lumière du salon". Enregistrer et "Ajouter une action" et saisir "jarvis allume la lumière du salon". puis ajouter. Maintenant quand tu donnes cet ordre, le GH va automatiquement ajouter "jarvis" sans que tu l'ai dis. Malheureusement, il faut le faire un par un pour toutes les commandes vocales que tu souhaites.
soulac Posté(e) le 19 janvier 2019 Signaler Posté(e) le 19 janvier 2019 il y a 32 minutes, jjacques68 a dit : Cette erreur n'est pas normal, d'après le code que je t'ai envoyé, il s'agit de la ligne 50, donc la fonction "Trim". Elle ne reçoit pas de valeur... ??? pas normal ça ! Ce qui veut dire que toutes les les fonctions qui corrigent la chaine de caractères de ton ordre semblent ne pas fonctionner ! Tu as fait un copier/coller du code ? c'est tout ? Bon je pense que c est normal j ai l erreur qd je lance la scène après plus rien je vois que les actions de google home
jjacques68 Posté(e) le 19 janvier 2019 Signaler Posté(e) le 19 janvier 2019 ah ok si tu lances la scène manuellement c'est normal, vu qu'il n'y a pas d'ordre...
jjacques68 Posté(e) le 19 janvier 2019 Signaler Posté(e) le 19 janvier 2019 Je viens de modifier le code fourni ci-dessus : Ajout de ligne 102 : if action then et à la dernière ligne : end et donc plus d'erreur situ lances la scènes manuellement. En gros il se passe rien si tu lances manuellement.
soulac Posté(e) le 19 janvier 2019 Signaler Posté(e) le 19 janvier 2019 Ok parfait super Pr les routines parfait aussi tout fonctionne tu es un chef. Juste une petite question mon GH me répond jarvis et l action on peut enlever jarvis dans la réponse de GH ? Sinon je vais abuser mais avec la scène peut on avoir une valeur d une température d un module. Je m expliqué je souhaiterais avoir la température de mon salon du module qui est l oeil de fibaro.
jjacques68 Posté(e) le 19 janvier 2019 Signaler Posté(e) le 19 janvier 2019 (modifié) Ta réponse du GH se fait dans IFTTT, tu as du paramétrer cette réponse. Dans mon cas j'ai juste mis "oké". Recevoir une information (température ou autre valeur) dans la réponse, me semble impossible... On en avait déjà parlé qqpart dans ce topic... En tout cas si c'est possible, je sais pas comment faire, et c'est vrai que ça intéresserait aussi... Mais j'y crois pas. Modifié le 19 janvier 2019 par jjacques68
DGDIM Posté(e) le 9 mars 2019 Signaler Posté(e) le 9 mars 2019 Bonjour a tous, Voila en quete 'info sur google home je me demandais ceci : si j’achète plusieurs google home es ce que je peut demander a google home ( salon) de diffuser une music dans une autre pièce tout en restant dans mon salon ? Merci
DGDIM Posté(e) le 10 mars 2019 Signaler Posté(e) le 10 mars 2019 ok super Merci et pour ce qui est de la Belgique google home ne pose pas de problème ? car a ce que j'ai lu apparemment il ne serais pas sorti officiellement ?
jojo Posté(e) le 10 mars 2019 Signaler Posté(e) le 10 mars 2019 J'en ai 2 (et suis en Belgique), et ils fonctionnent bien pour ce que j'en fait (pas de la muqique)
Patrickdu34 Posté(e) le 11 mars 2019 Signaler Posté(e) le 11 mars 2019 Le 14/01/2019 à 12:54, speckery a dit : question conne, mais maintenant que Google home intègre pleinement et en francais Fibaro, pourquoi utilisez vous encore la passerelle ifttt? Bon mis a part que j'ai un gros soucis de rafraîchissement des scenes, ca tourne plutot pas mal non? @speckery, Tu dit pleinement, les volets sont intégrés a GH ?
jojo Posté(e) le 13 mars 2019 Signaler Posté(e) le 13 mars 2019 Le 14/07/2018 à 17:40, 971jmd a dit : bonjour a tous j'ai peut être trouvée une solution pour faire parler notre google home avec une phrase de notre choix mai je n'y arrive pas voici quel que lien si vous voulez essayer https://github.com/noelportugal/google-home-notifier je mets de l'ordre dans mes mails, alors pardon si je me répète. La solution pour faire parler Google Home est dans ma signature
weber matthieu Posté(e) le 14 mars 2019 Signaler Posté(e) le 14 mars 2019 Bonjour à tous, Pour ma part, j'ai bien réussi à lier mon compte Fibaro ID. Mais ensuite, je ne vois que ma sirène d'une autre marque... J'ai détecteur de fuite, présence, commande de volet, détecteur de fumé chez moi mais je ne vois rien sous Google Home. La commande vocal ''ok, google parler à fibaro ne fonctionne pas non plus''. Je me retrouve un peu bête...
speckery Posté(e) le 14 mars 2019 Signaler Posté(e) le 14 mars 2019 hello c'est pas une science exacte l'intégration de la HC au google home... moi j'ai plein de scènes qui n'apparaissent pas, c'est la croix et la bannière pour arriver a les faire apparaître... c'est assez aléatoire... un coup je délie le compte fib a la GH, un coup je redémarre les 2, un coup je recrée la scene... des fois rien ne se passe et 2 mois apres la scene apparait pour je ne sais quelle raison... franchement c'est le bordel pour mettre a jour la google home a chaque fois qu'on crée un new device ou scene...
weber matthieu Posté(e) le 14 mars 2019 Signaler Posté(e) le 14 mars 2019 il y a une heure, speckery a dit : hello c'est pas une science exacte l'intégration de la HC au google home... moi j'ai plein de scènes qui n'apparaissent pas, c'est la croix et la bannière pour arriver a les faire apparaître... c'est assez aléatoire... un coup je délie le compte fib a la GH, un coup je redémarre les 2, un coup je recrée la scene... des fois rien ne se passe et 2 mois apres la scene apparait pour je ne sais quelle raison... franchement c'est le bordel pour mettre a jour la google home a chaque fois qu'on crée un new device ou scene... Merci pour retour. Je ne sais pas si je suis rassuré mais je ne suis pas le seul La magie de la domotique FIBARO...
Lazer Posté(e) le 14 mars 2019 Auteur Signaler Posté(e) le 14 mars 2019 Les capteurs c'est "normal" les volets c'est "normal" (raisons de sécurité) Ce qu'on peut piloter, ce sont tous les autres actionneurs : dimmers, switchs (donc ta sirène) Malheureusement pas de VD.
Messages recommandés