Salut a tous,
Mise a jour du 1er Fevrier 2021 suite a des demandes:
- Utilisation de Tags a la place de Variables dans le scenario, corrigeant le probleme des accents dans les mots et le plantage MySQL.
Ci-apres un petit resume de mes bidouilles du jour afin d’utiliser IFTTT avec 1 seul applet pour commander les equipemets / scenarios / etc …
Desole, j’ecris depuis un PC anglais et je n’ai donc pas de touche avec nos caracteres francais …
Comme deja trouve sur la toile, il existe des methodes pour utiliser IFTTT avec 1 seul applet et faire la liaison avec Jeedom par les interractions, ceci je ne souhaitais pas le faire.
Petite demonstration:
1) Creer son unique applet IFTTT
→ Applet Google Assistant + Webhook de type ‹ Say a phrase with a text ingredient ›
→ Mots clefs : ‹ peux-tu › ou ‹ jeedom › ou ‹ s’il te plait › (bref, ce qui vous chante)
→ URL : https://VotreUrlVersJeedom.com/core/api/jeeApi.php
→ Method : Post
→ Content Type : application/x-www-form-urlencoded
→ Body : apikey=VotreKeyApiJeedom&type=scenario&id=VotreScenarioID&action=start&tags=IFTTT:« {{TextField}} »
Donc des qu’on va dire ‹ OK GOOGLE, peux-tu allumer la lumiere de la cuisine ›, le signe $ va etre utilise en tant que TextField et j’appelle le scenario avec ce Tag en argument que j’utiliserai alors dans le scenario pour interragir avec Jeedom.
2) Construction du scenario dans Jeedom
On va creer un scenario qui n’aura aucun declencheur!
- Le premier bloc sera de type code, comme ceci:
Voici comment vous devrez adapter votre code:
$tags = $scenario->getTags();
(empty($tags['#IFTTT#'])) ? $tags['#IFTTT#'] = "" : null;
(empty($tags['#IFTTTMessage#'])) ? $tags['#IFTTTMessage#'] = "" : null;
(empty($tags['#IFTTTNumber#'])) ? $tags['#IFTTTNumber#'] = "" : null;
$arg = $tags['#IFTTT#'];
$message = $arg;
$number = -1;
if (strpos($arg, '%') !== false || strpos($arg, 'pourcents') !== false) {
$pos = my_ofset($arg);
$number = substr($arg, $pos, strlen($arg)-$pos);
$number = substr($number, 0, strpos($number, ' '));
$message = substr($arg, 0, $pos);
}
$message = trim(strtolower($message));
$number = trim(strtolower($number));
$tags['#IFTTTNumber#'] = $number;
function my_ofset($text){
preg_match('/^\D*(?=\d)/', $text, $m);
return isset($m[0]) ? strlen($m[0]) : false;
}
function contains_words($string, $array_of_words)
{
if (!$array_of_words) return false;
$i = 0;
foreach ($array_of_words as $words)
{
if (strpos($string, $words) !== FALSE) $i++;
}
return ($i == count($array_of_words)) ? true : false;
}
$tags['#IFTTTMessage#'] = "";
if(contains_words($message, array("allum", "bouill")))
{
$tags['#IFTTTMessage#'] = "Le bouilloire va s'allumer";
}
if(contains_words($message, array("étein", "lumi", "rez")))
{
$tags['#IFTTTMessage#'] = "Les lumières du rez-de-chaussée vont s'éteindre";
}
if(contains_words($message, array("allum", "lumi", "cuisine")))
{
$tags['#IFTTTMessage#'] = "Lumière cuisine allumée";
}
if(contains_words($message, array("étein", "lumi", "cuisine")))
{
$tags['#IFTTTMessage#'] = "Lumière cuisine éteinte";
}
if(contains_words($message, array("lumi", "bar")) && $number != -1)
{
$tags['#IFTTTMessage#'] = "Lumière du bar à " .$number. " %";
}
if(contains_words($message, array("allum", "lumi", "bar")))
{
$tags['#IFTTTMessage#'] = "Lumière du bar allumée";
}
if(contains_words($message, array("étein", "lumi", "bar")))
{
$tags['#IFTTTMessage#'] = "Lumière du bar éteinte";
}
Bref, vous y mettez tout pour controler vos equipements comme vous le souhaitez et comment votre Google Home doit repondre a l’ordre recu/identifie.
Et a la fin du code PHP on ENREGISTRE les Tags:
$scenario->setTags($tags);
-
Puis on utilise nos Tags dans chaque bloc d’action:
-
A la fin on fait parler notre Google Home:
Voila c’est tout
Sebastien