[javascript] IFTTT et connexion à myconstellation


#1

Bonjour,
bon après un passage sur jeedom (que j’ai vite laissé tombé), je reviens sur myconstellation et je continu d’avancé sur mon projet de maison connecté.
Début Août j’ai acquis un google home et maintenant je cherche un moyen d’interagir entre le GH et mon serveur myconstellation.
Le problème c’est que pour le moment la langue française n’est pas disponible pour les développeurs. Il faut donc trouver des astuces.
Je passe donc par le service IFTTT pour lancer des actions (webhook).
Dans le principe je n’ais aucun soucis, avec IFTTT je peux exécuter des actions et donc lancer une url.
Derrière cette url j’ai mis un script qui me connect à myconstellation et lance une action.
Si je test cette page directement, je n’ai aucun souci l’action via constellation est parfaitement executé.
Mais lorsque je passe par IFTTT là, cela ne fonctionne pas.
Alors oui IFTTT ouvre bien ma page (j’ai mis des logs).
Je pense que mon script qui demande la connexion à myconstellation puis exécute l’action n’est pas instantané et IFTTT ne laisse pas le temps à mon script de s’exécuter.

Voilà je viens donc vers vous pour voir si quelqu’un à une idée pour que cela fonctionne.

Meric par avance.

Mon script :
`<script>
var constellation = $.signalR.createConstellationConsumer(
http://xx.xx.xx.xx:8088”,
“ddxx528bb1c8TGG8f3088d4434f4742TGf4HG”,
“Administrator”);

    constellation.connection.start();

    // Test la connection :
    constellation.connection.stateChanged(function (change) {
        if (change.newState === $.signalR.connectionState.connected) {
            // console.log("media On/Off");
            constellation.server.sendMessage({Scope: 'Package', Args: ['ConstPackBroadlink']}, 'AmpliOnOff', {});
        }
    });
&lt;/script&gt;`

#2

Bonjour,

Super projet !

Pour le call HTTP sur IFTTT, il ne s’agit que d’un appel HTTP de type GET. Il n’y a aucune interprétation de la réponse et donc du code client de la page. En gros, le système de webhook lance une requête GET et c’est tout! Tu peux de ce fait déclencher du code côté serveur (type ASP.net, PHP, etc…) mais le code client JS ne sera pas interprété !

Autrement dit ton code JS qui se connecte à ta Constellation en utilisant l’API JS n’est pas interprété, donc ne peut marcher !

Trois solutions :
1/ développer un webhook en utilisant NodeJS (https://github.com/myconstellation/constellation-nodejs) pour te permettre de déclencher ton code JS côté serveur
2/ utiliser l’API HTTP/REST de Constellation
3/ développer un webhook en utilisant une techno server-side de ton choix (PHP, ASP.net, ou autre) qui fait le proxy avec l’API HTTP/REST de Constellation

Pour moi le plus simple étant de faire un appel direct à ta Constellation : tu configures le call HTTP de IFTTT directement sur l’adresse de ton serveur Constellation soit via un package virtuel soit via un consommateur.

Ici si tu veux juste envoyer un message tu peux utiliser l’API “Consumer” : https://developer.myconstellation.io/client-api/rest-api/interface-rest-consumer/

En me basant sur ton code, si tu veux invoquer le MC “AmpliOnOff” sur ton package “ConstPackBroadlink” avec un appel HTTP, tu appellera l’URL :

http://xx.xx.xx.xx:8088/rest/consumer/SendMessage?SentinelName=Consumer&PackageName=IFTTT&AccessKey=ddxx528bb1c8TGG8f3088d4434f4742TGf4HG&scope=Package&args=ConstPackBroadlink&key=AmpliOnOff&data={}

Tu peux donc utiliser directement cette URL comme adresse de callback sur IFTTT. Ainsi IFTTT invoquera directement ton MC en passant par l’API HTTP.

Bien à toi,


#3

Bonjour Sébastien, comme d’habitude tes réponses sont clair et facile à mettre en place.
J’ai donc pus tester rapidement et cela à fonctionné direct.
J’avais besoin de lancer plusieurs action alors j’ai créé une page et j’appel les url Rest avec du Curl dans ma page php.
Maintenant je peux lancer tous mes appareils vidéo (livebox, ampli et télé grâce à broadlink) en appelant une url et donc avec IFTTT.
Maintenant plus qu’à l’inclure dans une applet ifttt et google home et je pourrais tous controler avec ghoogle home.

Bon aller je vais me remettre sur mon interface bootstrap.

Merci pour tous.

PS: tu ne connaitrais pas le protocle smpp par hasard, je cherche un spécialiste… lol on ne sais jamais.

Bonne journée