Aymkdn / assistant-plugins

Des plugins pour les Assistant (comme Google Home, Cortana, Alexa)
https://aymkdn.github.io/assistant-plugins/
MIT License
92 stars 21 forks source link

IPX800V3 et Google home #32

Closed nusmiaf closed 6 years ago

nusmiaf commented 6 years ago

bonjour , ça n'a pas grand chose a voir avec l'assistant freebox .. mais je te pose la question tout de même Aymeric , connais tu le serveur domotique IPX800V3 ? (de chez GCE-Electronic's) ce la fonctionne très bien avec IFTTT = une demande " simple phrase " et un trigger Webhooks pour une action physique sur l' IPX ( comme fermé ou ouvrir un relais .. ) ma question est: peut on faire l'inverse ? a savoir qu'une action de l'IPX répercute une notification sur Google home ( une simple phrase donc )

Aymkdn commented 6 years ago

peut on faire l'inverse ? a savoir qu'une action de l'IPX répercute une notification sur Google home ( une simple phrase donc )

Je dirais que oui. Si tu utilises assistant-plugins il te faudra installer le plugin notifier. Ensuite :

  1. Crée une applet dans IFTTT qui prend en source un WebHook, et en sortie qui envoie une note Pushbullet
  2. La note Pushbullet doit avoir "Assistant" dans Title et "notifier_Le phrase qui sera lue par Google Home" pour le Message
  3. Ton serveur domotique devra alors trigger le WebHook que tu as créé
Wyman42 commented 6 years ago

Je rajoute : notifier_"Ok ça marche du tonnerre"

nusmiaf commented 6 years ago

le problème c'est que je ne maitrise pas les API , je ne sais pas comment crée un message push via mon IPX sur chaque entrées / sorties j'ai la possibilités d'envoyer un mail ou un push a chaque changement d’état . mais j'ai aucune idée de comment faire , j'imagine que dans mon cas , je doit envoyer un push a Webhook's ou directement a pushBullet sans titre

Aymkdn commented 6 years ago

Après une rapide recherche sur le net (ici par exemple) je pense que dans Server tu dois mettre maker.ifttt.com et dans Port tu dois mettre 443. Click la case Enable et Save.

Pour le Push1 tu mets le path de l'url, donc par exemple /trigger/NomDeTonWebHook/with/key/TaCléQuiCommenceParDpHXXXX

nusmiaf commented 6 years ago

alors j'ai essayer de crée un applet pour test , donc un IF ,Webhook que j' appel " relais 30" , ça ok en suite une action , un pusbullet en note comme tu le décrit plus haut , mais quel doit etre la syntaxe du message ? sans titre

j'ai essayer title = " relais 30 " et message = " relais 30 ON "

ça me repond => Unrecognized Ingredient in action field: {{relais}} Unrecognized Ingredient in action field: {{relais}}

et la clé qui commence pas PDHXXXX j'imagine que c'est quand l' applet est crée..?

Aymkdn commented 6 years ago

Il suffit de relire ce que j'ai noté :

La note Pushbullet doit avoir "Assistant" dans Title et "notifier_Le phrase qui sera lue par Google Home" pour le Message

Là dans ton Title tu as mis {{OccuredAt}} et dans Message tu as mis un truc qui n'a aucun rapport...

Ensuite, évite les espaces dans le nom de ton WebHook. Donc appelle le "relai30".

Quant à la clé elle se trouve là : https://ifttt.com/maker_webhooks/settings capture

Donc le "push1" sera : /trigger/relai30/with/key/TaClé

nusmiaf commented 6 years ago

désolé la copie d'écran était avant que je renseigne... alors j'en suis là : sans titre3 sans titre sans titre2

mais y a aucun effet au changement d'état du relais

mais y a sans doute des paramètre a rentré dans mon IPX car sur la page de ton lien =>http://gurau-audibert.hd.free.fr/josdblog/2014/05/ipx800-fonction-push/

il paramètre les deux page : le push " centralisé " et " l'individuel " sans titre

sans titre5

dans Path par contre je reprend pas " /trigger/NomDeTonWebHook/with/key/TaCléQuiCommenceParDpHXXXX

Aymkdn commented 6 years ago

Pour IPX j'en sais rien. Je n'utilise pas donc tu dois te démerder....

Pour la note Pushbullet, ce n'est toujours pas correct.... dans la partie Message tu dois mettre notifier_ suivi de ton message. Si tu ne mets pas notifier_ au début du message, le plugin notifier ne sera pas déclenché.

nusmiaf commented 6 years ago

ok j'ai corriger le " notifier_XXXX

merci pour ton aide précieuse je vais creuser les paramètre global push de ma machine

j'ai trouver ça , mais j'ai beaucoup de mal avec les syntaxe , je comprend pas :/ => 2 – Comment déclencher un trigger IFTTT avec l’IPX.

Le principe est de faire du PUSH sur le Maker Channel de IFTTT.

Première étape, se connecter au Channel. Ensuite en allant sur https://ifttt.com/maker18 vous obtenez toutes les informations nécessaires pour calculer l’URL a programmer sur l’IPX. En particulier allez sur ‘How to Trigger Events’ Où vous verrez le guide suivant :

[quote]To trigger an Event Make a POST or GET web request to: https://maker.ifttt.com/trigger/1{event}/with/key/<> With an optional JSON body of: { “value1” : “”, “value2” : “”, “value3” : “” } The data is completely optional, and you can also pass value1, value2, and value3 as query parameters or form variables. This content will be passed on to the Action in your Recipe. [/quote]

Traduit en PUSH IPX cela donne

[ul]Serveur : maker.ifttt.com1 PORT : 443 URL ON : /trigger/{event}/with/key/<> ?value1=ON URL ON : /trigger/{event}/with/key/<> ?value1=OFF METHODE : GET SSL : ON. [/ul] J’ai fait l’essai avec port 80 et SSL Off, cela marche aussi. Nous reviendrons sur les URL plus bas.

Ne faites pas la même erreur de débutant que moi. Pensez au ‘/’ en début de l’URL et utilisez le paramètre valueN avec un V minuscule.

j'ai ces liens si tu veux jeter un œil
=> https://forum.gce-electronics.com/t/interface-ipx800-et-ifttt/2681/3 => http://www.gce-electronics.com/attachment.php?id_attachment=47 => http://gce-electronics.com/fr/content/gce-electronics.com/fr/index.php?controller=attachment&id_attachment=140

nusmiaf commented 6 years ago

j'ai uniquement modifier le port 443 par le 80 et là ça passe ! le push part bien ,

j'ai une notification sur l'écran du PC mais rien de l'assistant Google home

donc là c'est l'applet a qui il manque un addon pour déclencher la lecture du message ?

sans titre6

Aymkdn commented 6 years ago

Tu as quoi dans la console du plugin ? Ça doit marquer :

[assistant] Commande reçue:  [ 'notifier_relais 30 on' ]
[assistant] Appelle du plugin 'notifier'
nusmiaf commented 6 years ago

sans titre7

j'ai bien ce que tu dit , mais Google home n'a pas lu le message j'ai uniquement le popup sur mon écran pc

Aymkdn commented 6 years ago

1) As-tu bien configuré le plugin notifier en indiquant la bonne adresse IP pour ton Google Home dans le fichier configuration.json ? 2) As-tu bien redémarré l'assistant-plugins après avoir modifié le fichier de configuration ? 3) Ton Google Home est-il bien sur le même réseau que ton PC ?

nusmiaf commented 6 years ago

le " configuration.json " c'est celui a la racine du répertoire assistant-plugins

sans titre8

il y a celui dans le repertoir assistant-plugins\node_modules\assistant-notifier\ ,, celui là on y touche pas ?

sans titre9

IP : freebox 192.168.0.2 Pc 192.168.0.11 ipx 192.168.0.31 googlehome 192.168.0.32

oui j'ai redémarrer , j'ai testé ( au cas ou) les 2 cas en renseignant l'IP et sans dans
assistant-plugins\node_modules\assistant-notifier\configuration.json

pareil donc le je renseigne ou pas normalement celui là ?

nusmiaf commented 6 years ago

j'ai tester avec l'ancienne version de l’assistant-plugin .. ça donne ça : sans titre9

ça te donne peut etre une info sur ce qui ne va pas ?

Aymkdn commented 6 years ago

Donc oui c'est bien le configuration.json de la racine qu'il faut modifier.

Concernant ton erreur... je sèche :o) Peut-être un problème de firewall ou d'antivirus ?

nusmiaf commented 6 years ago

et bien il est bien modifier ( sauf erreur de ma part ) { "main": { "pushbullet_token": "o._R" }, "plugins": { "freebox": { "code_telecommande": "1_8", "search_path": "/Disque dur/Vidéos/", "use_Mon_Bouquet": false, "box_to_control": "hd1", "apptoken": "C____R" }, "ifttt": { "key": "c_____0" }, "notifier": { "host": "192.168.0.32" } } }

celui du sous répertoire " assistant-plugins\node_modules\assistant-notifier... je l'ai remis tel que d'origine : { "host":"" }

je n'ai pas d’antivirus et le firewall laisse sortir/entré les requêtes puisque les applets fonctionnent freebox et autres allumage de luminaire via ma domotique.. même l'applet test que tu fait faire en test " répète la phrase " fonctionne de la même façon j'ai bien le retour de pushbullet , avec le popup sur le pc et l'action prise en compte sur la fenêtre CMD

c'est donc forcement une erreur quelque part dans le plugin ( de ma part )

Aymkdn commented 6 years ago

Il faudrait déboguer de ton côté pour situer l'erreur... Mais ce n'est pas une chose que je peux t'expliquer :-/

En tout cas, je ne sais pas ce qui peut merder...

As-tu un autre PC ? Pour tester et voir déjà si ça vient de ton PC ?

nusmiaf commented 6 years ago

peut etre un coup de teamviewer ?

j'ai un autre pc mais mini portable

Aymkdn commented 6 years ago

Non, désolé, j'ai beaucoup d'autres choses à faire aujourd'hui...

Essaie sur un autre ordinateur si tu peux.

nusmiaf commented 6 years ago

alors pareil que sur le PC fixe , les requêtes sortes et son prises en compte

sans titre12

les popup de pushbullet apparaissent sur le PC fixe ( rien sur le portable ) et googlehome ne dit toujours rien

par contre je viens de voit en suivant la procédure d'installation que le Update.bat est bien sur l'intallation du potable : sans titre13

alors que je ne lai jamais eu sur le pc fixe :

sans titre14

Aymkdn commented 6 years ago

Le update.bat, ouais je l'ai rajouté tout à l'heure, pour pouvoir faire des mises à jour facilement :-)

Donc ça nous apprend que le problème n'est pas le PC. Donc vraiment là, je ne sais pas... désolé...

nusmiaf commented 6 years ago

Pfff !! ( Lol )moi qui pensait que c'était résolu ! juste que j'avais mal installer du fait de pas avoir fait " update " ... :-/ dans tous les cas la j'ai tout viré , désinstallé node et de refait tout propre

nusmiaf commented 6 years ago

bon voilà j’ai tout ré-installé , node , assistant , avec les plugin IFTTT, Notifier, Wait, Freebox le token pushbulet ok le code télécommande free ok la clé Ifttt ok l'IP de googlehome ok update Node ok l’appairage avec la freebox ok

resultat identique , mais pas un mot....

et idem pour la commande " répète la phrase "

sans titre3

Aymkdn commented 6 years ago

Tu arrives à pinguer ta Google Home depuis ton PC ?

nusmiaf commented 6 years ago

oui le ping j'ai tester dès que jai attribuer cette ip a GH en fixe sur sa MAC adresse ca ping sans probleme

sans titre2 sans titre

Aymkdn commented 6 years ago

Je suis à court d'idées, désolé...

nusmiaf commented 6 years ago

ba si t'a un moment un autre jour , tu peut prendre la main sur mon pc ... voir de toi même si tu veux

nusmiaf commented 6 years ago

alors y a un truc improbable avec un autre applet que je viens de crée par acquis pour être sûr ... le push part bien quand le relais 31 cette fois change d'état .. mais RIEN ne se produit dans la fenêtre CMD alors qu'il y a bien la notification PopUp sur le PC !? "Chelou" si je peux me permettre :o 1- j'ai fait " repete la phrase ...caca ..." => ça apparait 2- relais 30 actionné => ça apparait 3- relais 31 actionné => rien nada 4- relais 30 ré actionné => ça apparait sans titre sans titre2 sans titre3 sans titre4

Aymkdn commented 6 years ago

Ta notification pour relais 31 apparait avec le titre "Google Assistant" au lieu de "Assistant". Du coup il n'est pas reconnu : capture

Quoi qu'il en soit, le problème n'est pas là. C'est le plugin notifier qui ne fonctionne pas chez toi.

nusmiaf commented 6 years ago

exact ! c'est dans ma tête... j'ai voulu écrire un truc et j'en ai mis un autre google assistant / assistant comme tu dite de toutes façon ça fait pas parler google home donc , ça fonctionne pas aller je te remercie encore pour ton aide ( surtout que je suis un boulet :p ) et comme dit plus haut ... si tu a un moment pour voir ca de toi même hésite pas Merci Ps: tu a peut être en stock un applet avec Notifier fonctionnel pour me monter un exemple ?

Aymkdn commented 6 years ago

Tu as tout fait correctement côté applet. Le problème vient du plugin qui n'arrive pas à envoyer à Google Home.

Si tu veux tester des choses, tu peux ouvrir le fichier notifier.js qui est dans le dossier ./node_modules/assistant-notifier/

Puis tu rajoutes des console.log. Par exemple dans la fonction AssistantNotifier.prototype.action :

AssistantNotifier.prototype.action = function(text) {
  var _this=this;
  return new Promise(function(prom_res) {
    // on génère le texte
    console.log("on entre dans action");
    GoogleTTS(text, "fr-FR", 1)
    .then(function(url) {
      console.log("Google TTS correctement effectué. URL =>", url);
      var client = new Client();
      client.connect(_this.host, function() {
        console.log("Connexion au client");
        client.launch(DefaultMediaReceiver, function(err, player) {
          console.log("Connexion suite");
          var media = {
            contentId: url,
            contentType: 'audio/mp3',
            streamType: 'BUFFERED'
          };
          console.log("lecture du MP3 produit par Google TTS");
          player.load(media, {
            autoplay: true
          }, function(err, status) {
            console.log("tout s'est bien passé");
            player.on('status', function(status) {
              if (status.playerState == "IDLE") {
                player.stop();
                client.close();
                prom_res();
              }
            });
          });
        })
      })
    })
  })
};

Puis tu relances le programme et tu regardes les informations qui s'affichent.

nusmiaf commented 6 years ago

bonjour , j'ai modifier le notifier.js comme suit:

var Client = require('castv2-client').Client;
var DefaultMediaReceiver = require('castv2-client').DefaultMediaReceiver;
var GoogleTTS = require('google-tts-api');
var AssistantNotifier = function(configuration) {
  this.host = configuration.host;
}
AssistantNotifier.prototype.init = function(plugins) {
  this.plugins = plugins;
  if (!this.host) return Promise.reject("[assistant-notifier] Erreur : vous devez configurer ce plugin !");
  return Promise.resolve(this);
};

/**
 * Fonction appelée par le système central
 *
 * @param {String} text Le texte à lire (par exemple: "bonjour et bienvenue")
 */
AssistantNotifier.prototype.action = function(text) {
  var _this=this;
  return new Promise(function(prom_res) {
    // on génère le texte
    console.log("on entre dans action");
    GoogleTTS(text, "fr-FR", 1)
    .then(function(url) {
      console.log("Google TTS correctement effectué. URL =>", url);
      var client = new Client();
      client.connect(_this.host, function() {
        console.log("Connexion au client");
        client.launch(DefaultMediaReceiver, function(err, player) {
          console.log("Connexion suite");
          var media = {
            contentId: url,
            contentType: 'audio/mp3',
            streamType: 'BUFFERED'
          };
          console.log("lecture du MP3 produit par Google TTS");
          player.load(media, {
            autoplay: true
          }, function(err, status) {
            console.log("tout s'est bien passé");
            player.on('status', function(status) {
              if (status.playerState == "IDLE") {
                player.stop();
                client.close();
                prom_res();
              }
            });
          });
        })
      })
    })
  })
};

/**
 * Initialisation du plugin
 *
 * @param  {Object} configuration La configuration
 * @param  {Object} plugins Un objet qui contient tous les plugins chargés
 * @return {Promise} resolve(this)
 */
exports.init=function(configuration, plugins) {
  return new AssistantNotifier(configuration).init(plugins)
  .then(function(resource) {
    console.log("[assistant-notifier] Plugin chargé et prêt.");
    return resource;
  })
}

résultat en image , pas un mot de GH

sans titre

nusmiaf commented 6 years ago

Laisse tomber ! ça fonctionne depuis le début ...... !!!

le volume du sond de la voix de GoogleHome est indépendant du volume du sond pour la lecture du MP3 j'avais le sond au minimum , ( les 4 leds de GH éteintes ) je ne m'en était pas rendu compte car quand je pose des questions/requêtes a GH le volume de la voix en réponse est de niveau suffisant , mais le lecture du reste apparemment non.. avec le sond augmenté ( au moins 1 led allumée sur GH ) j' entend enfin le fameux " relais 30 on " 👍 !!!!!!!!!!!! 💃

Aymkdn commented 6 years ago

Arf...

nusmiaf commented 6 years ago

Merci , Aymkdn Merci pour ta patience ( je suis plutôt nul ..les codes et moi... :/ j'ai bcoup de mal a comprendre ) Merci pour ton aide et pour ton travail avec ton "Assistant"

et désolé de t'avoir fait chercher des problèmes là ou il n'y en avait pas .... !

nusmiaf commented 5 years ago

bonjour, une question , ets il possible de demander l'etat d'une sortie a Google.H ? avec ifttt ou autre ?

merci

Aymkdn commented 5 years ago

Tu veux dire quoi par "l'état d'une sortie"?

nusmiaf commented 5 years ago

Pardon , je veux dire ... Savoir si une sortie est a 1 ou a 0 Toujours sur mes relais de mon ipx 800v3

Aymkdn commented 5 years ago

Aucune idée

nusmiaf commented 4 years ago

Bonjour Aymeric , une question au hasard , est il possible de récupéré les " commandes envoyées par une appli de mobile " a partir du fichier .APK de cette même appli ? explication : j'ai une alarme que je peux armé /désarmé avec un mode partiel ou total avec retour d'état sur l'appli et évidement j'aimerai bien avoir les commandes correspondante pour mixé tout ça avec la domotique et IFTTT & Google Home

merci

Aymkdn commented 4 years ago

C'est très difficile, voire impossible selon les cas. Cherche sur Google on trouve quelques informations là dessus...

nusmiaf commented 4 years ago

ok merci bcoup

nusmiaf commented 4 years ago

Bonjour , Aymeric est il possible avec Webhooks d'envoyer 2 url distinctes à un interval donner ? ex : http://user:mdp@mon_ip/Set_relais1=1&set_relais2=1 ( temps 1 s ou plus ) et http://user:mdp@mon_ip/Set_relais1=1

explication , une commande de volet individuelle demande un appuis double haut+bas suivi de haut ( ou bas ) pour commander une ouverture ou fermeture générale et non individuelle ..

merci pour ta reponse

Aymkdn commented 4 years ago

Si ta question est de savoir si IFTTT permet de faire ça nativement, la réponse est non.

Il faudra utiliser ces deux plugins pour y arriver : https://aymkdn.github.io/assistant-plugins/?plugin=wait https://aymkdn.github.io/assistant-plugins/?plugin=ifttt