Aller au contenu

Messages recommandés

Posté(e)

Euh alors la je ne sais pas trop comment ça peut se passer avec ce genre de configuration (routeur + passerelle).. 

 

De mon côté j'ai une freebox crystal, j'ai défini un port au pif (2000 je crois) que j'ai redirigé vers l'adresse ip locale de ma HC2 sur le port 80. 

 

J'attaque donc ma freebox comme ça avec webhook :

@27.158.xxx.xxx:2000

 

Ca a marché pour moi, j'espère que ça va aller pour toi.. 

 

 

Posté(e)

Je pense que ça peut le faire si tout est bien redirigé correctement, NOIP est ce qui m'avais été suggéré avant que je ne sache que chez free on est en ip fixe... 

Posté(e)

Allez on y croit, tu verras c'est trop cool quand t'as enfin réussi à le faire marcher.. 

 

Tu as raison, demain boulot, faut se détendre maintenant.. 

 

Bonne soirée et bon courage pour la suite ! 

Posté(e)
Le 05/11/2017 à 02:56, Diuck a dit :

 

@ Steven :17:

Pourrais tu me dire ce qui ne colle pas dans ma configuration car je Galère pas mal ce qui m'oblige à te demander conseil  Google Home répond bien mais ne lance pas la commande :13: 

D'avance merci ! 

 

Capture.thumb.PNG.308302a90506b7dd4e257e48b6b7222e.PNG59fe6f3ca2e80_Capture2.thumb.PNG.31f3b65bbad6f7603c9cb51ff921ff22.PNG

 

Je vois 2 soucis :

 

Le premier "allumer la lumière" qui fait une turnOff --- étrange non ? :-)

Le deuxième, si tu fais un appel simple au turnOff ou turnOn, ce n'est pas un POST mais un GET que tu dois faire. (Tu peux supprimer le contenu de Body)

 

Le POST est utilisé pour envoyé des arguments à un sénario. Ce que j'utilise pour ma fameuse scène "Jarvis" car c'est une seule scène qui pilote tout les appels IFTTT.

 

Voilà, courage. Une fois que tu auras un applet IFTTT qui fonctionne, tu seras tout bon.

 

 

Posté(e)

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 $

:

4851810611.png

 

32988506111.png

 

36233106112.png

 

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

 

 

  • Upvote 1
Posté(e)

Merci @Steven pour ton partage 

Ton premier applet fonctionne nickel chez moi 

Je testerai se soire à la débauche 

Encore merci à toi et vivement que fibaro intègre le home 

Posté(e)

Cool !

Super @Steven merci pour cette belle mise à jour ! 

J'adore l'idée du ET, et le remplacement des caractères spéciaux est génial aussi ! (j'ai un peu galeré avec le "à") 

 

Fibaro commence à avoir une sacrée longueur de retard si ils se décidaient à intégrer le GH.. 

 

Encore une fois, BRAVO ! :16:

Posté(e)
Il y a 3 heures, Steven a dit :

 

Je vois 2 soucis :

 

Le premier "allumer la lumière" qui fait une turnOff --- étrange non ? :-)

Le deuxième, si tu fais un appel simple au turnOff ou turnOn, ce n'est pas un POST mais un GET que tu dois faire. (Tu peux supprimer le contenu de Body)

 

Le POST est utilisé pour envoyé des arguments à un sénario. Ce que j'utilise pour ma fameuse scène "Jarvis" car c'est une seule scène qui pilote tout les appels IFTTT.

 

Voilà, courage. Une fois que tu auras un applet IFTTT qui fonctionne, tu seras tout bon.

 

 

Salut Steven :13:

Merci pour ta réponse mais en effet le turnOn et le turnOff sont  inversé c’était pour les tests :blink: mais j'ai fini par tomber sur ta scène à ajouter à la HC avec "Jarvis" qui est vraiment super !!  malheureusement impossible de faire fonctionner le System. La GH répond bien à la commande via l'applet IFTTT mais ne transmet pas l'ordre je pense que mon problème viens de la redirection des ports comme j'expliqué dans un message ci dessous dédié à j-psy. 

Depuis j'ai créer une IP Fixe avec no-ip dans le doute mais toujours rien. Comme j'expliqué ma box orange me sert juste de passerelle internet et mes adresses viennent de mon router.  quand  je fais la recherche  de mon adresse extérieur sur  http://www.mon-ip.com/  il me donne l'adresse de ma box Orange faut il lui indiquer le chemin pour aller sur mon router ?

Comme tu le sais je ne suis pas un As dans le domaine mais j'essaye de me débrouiller au mieux.

 

Si tu peux m'aider à avance je serais ravis :P

 

D'avance merci Steven  

 

Bon Ok je viens de tout mettre à plat comme expliqué plus haut malheureusement je bloc comme toi  avec les adresses je suis chez orange en adresse IP fixe je viens de contrôler sur http://www.mon-ip.com/ 

La commande à GH répond bien mais rien ne se passe j'ai modifié la scène en ajoutant la commande  ["Lumière cuisine "]    = "Allume la cuisine", qui est également dans la commande Lili du module concerné.

 

Configuré dans WEBHOOKS comme ci dessous 

========================================================== --
-- Script pour IFTT (Google Assistant + Webhooks)
-- input     : "javis $"
-- webhooks  : https://<login>:<password>@<adresse>:443/api/scenes/40/action/start
-- method  : post
-- content : application/json
-- body    : {"args":[{"action":" {{TextField}}"}]}
-- ========================================================== --

Je ne cache pas que configurer mon router me pose problème :13: mon FAI c'est orange et ma box me sert de passerelle internet qui est reliée à mon router Linksys EA6300 qui dois être configurer pour la redirection des ports mais la gros problème un peu d'aide serait la bien venue

 

D'avance merci:P

  

Posté(e)

Excellent ton nouvel avatar Steven :60:

 

Alors j'ai une expérience de 1h avec la Livebox d'Orange (le temps de chercher le tuto pour la virer), et je n'ai jamais utilisé de routeur Linksys.

 

Mais de façon générale, mettre 2 routeurs l'un derrière l'autre, à moins d'être un pro de réseau qui sait ce qu'il fait, c'est se créer des ennuis... ce que tu ne peux nier :P

 

Pour te donner une piste, ce qu'il faudrait, c'est que tu crées 2 redirections/

1/ La Livebox redirige un port externe vers l'IP du Linksys.

2/ Le Linksys, à son tour, redirige ce port externe vers l'équipement interne (ton HC2)

En résumé, une double redirection.

Posté(e)

 

il y a une heure, Lazer a dit :

Excellent ton nouvel avatar Steven :60:

 

Je me suis dis que Fibaro ou Stranger Things c'était un peu du pareil au même. Tu sais jamais dans quel monde tu te trouve :2:mais tu fais tout pour t'en sortir.

  • Like 3
Posté(e) (modifié)

Salut tout le monde ! Ca fait une éternité que je n'étais pas passé ! :) Une vie bien chargée cette dernière année ... Ha ! Ca me fait plaisir de vous retrouver :D

 

Super travail Steven comme d'habitude ! J'ai testé ta nouvelle version avec le "et" mais ca ne fonctionne pas tout à fait pour moi.

Peut-être que mes phrases lili sont trop longues :

 

(J'ai remplacé "Jarvis" par "Peux-tu" ou "Pourrais-tu" car ma femme veux que nous soyons polis avec GoogleHome :)  )

 

Donc si je dis "ok google Peux-tu allumer la lumière de la cuisine" ou "ok google Peux-tu éteindre la lumière de l'escalier du haut" -> ca fonctionne très bien.

Mais dis je dis "ok google Peux-tu allumer la lumière de la cuisine et éteindre la lumière de l'escalier du haut" et il me répond "Excusez-moi je n'ai pas compris"

 

Si je dis "ok google Peux-tu allumer la lumière de la cuisine et éteindre la" -> il allume bien la cuisine et cherche le device "éteindre la " qui n'existe pas ... Mais si j'ajoute un mot de plus après "éteindre la ..." et il me répond "Excusez-moi je ne comprends pas".

 

Il n'y aurait pas un problème de taille du tableau  ou un truc dans le genre ?

Modifié par JossAlf
Posté(e)
Il y a 2 heures, Lazer a dit :

Excellent ton nouvel avatar Steven :60:

 

Alors j'ai une expérience de 1h avec la Livebox d'Orange (le temps de chercher le tuto pour la virer), et je n'ai jamais utilisé de routeur Linksys.

 

Mais de façon générale, mettre 2 routeurs l'un derrière l'autre, à moins d'être un pro de réseau qui sait ce qu'il fait, c'est se créer des ennuis... ce que tu ne peux nier :P

 

Pour te donner une piste, ce qu'il faudrait, c'est que tu crées 2 redirections/

1/ La Livebox redirige un port externe vers l'IP du Linksys.

2/ Le Linksys, à son tour, redirige ce port externe vers l'équipement interne (ton HC2)

En résumé, une double redirection.

 

Merci de votre aide 

comme tu dis il est vrais que cela génères des ennuis, mais la raison de cette installation qui semble compliquée m’évite d'avoir à reconfigurer ma box lorsque je change de FAI.

 

Donc il me reste à faire appel à un pro pour me configurer tous ca.

Encore Merci :D

 

 

Posté(e)

@JossAlf

Mon dieux, un revenant ;)

 

De mon côté, il n'y a pas de limitation, mais j'ai aussi constaté ce problème sur des phrase longues. Je pense que cela vient du Google Home.

 

Personnellement, j'ai mis des phrases plus courtes car je n'ai pas trouvé d'autre solution :(

 

"Ok Google Jarvis Allume la télé et allume l'entrée" fonctionne très bien. Par contre moi aussi si je rajoute quelque chose, j'ai une douce voix qui me dit qu'elle ne sais pas comment m'aider.

Posté(e)

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.

Posté(e)

@Steven

Bon j'essaye de configurer mon router et il y a du mieux maintenant je reçois les notification push   de IFTT mais la commande ne fonctionne pas 

Une Idée ?

Posté(e) (modifié)

Diuck (Salut vielle branche ;) )

 

Regarde du côté de la syntaxe. J'avais un problème avec les apostrophes en fonction de ce que j'utilisais pour éditer le code j'avais des '  ‘  ’ Regarde au niveau du debug pour voir si la syntaxe dans "Lili commande allumer:"  est vraiment identique à ce qui google home a envoyé !

Modifié par JossAlf
Posté(e)

Ok super JossAlf rien de le debug 

 

comme j'expliqué plus haut j'essaye de configurer mon router mais pas simple:angry: 

j'ai ouvert la porte à ma box orange c'est pourquoi je reçois le Notification de IFTTT mais maintenant je pense qu'il faut que je configure mon router linksys 

 

 

Capture.PNG

Posté(e)

Vivement demain que je teste tout ça :)

Mais Diuck, pour tester, commencer avec un accès distant simple à ta box par son IP publique, ça tu y arrives ?

×
×
  • Créer...