Aller au contenu

url avec auth pour API HC3


Messages recommandés

Posté(e)

bonjour,

Pour mon QA Nuki (qui une fois ok deviendra un tuto ...)

je dois renseigner au ma serrure l'url qu'elle doit appeler dès qu'il y a un changement de statut de la serrure (comme ça le QA affichera toujours la bonne info)

J'ai essayé ceci, mais évidemment, ça ne fonctionne pas

http://<HC3_user>:<HC3 pxwd>@<IP HC3>/api/callAction?deviceID=<ID du QA>&name=<nom fonction pour mise à jour>

quel type d'url (avec authentification) la HC3 s'attends à recevoir ?

Merci

Posté(e)

Ah, le protocole OAuth 2.0 avec redirection d'URL, une vraie plaie.

On a le même problème avec Netatmo qui a décidé de changer son API et qui impose ce nouveau mode d'authentification.

Pour l'instant je n'ai pas de solution, et de façon générale cette nouvelle mode va être un problème pour toutes les solutions domotiques locales, hors cloud.

Posté(e)

Et oui, c'est la memerde, j'espère que Fibaro trouvera une solution dans le plugin.

Sinon j'ai contact avec qqun de chez NETATMO, et lui me parle d'une solution semi-locale... Je vais la poster dans le topic.

 

 

Posté(e)

merci, mais je ne vous suis plus ... quel rapport avec Netatmo ?

 

dans mes Googles Scripts, qui font également appel à une fonction d'un QA, j(ai mis ceci, et ça fonctionne, mais je n"ai pas trouvé ce qui était envoyé en réalite :

var Box_User = "xxx";
var Box_Pwd = "yyy";
var Box_AuthHeader ="Basic " + Utilities.base64Encode(Box_User + ':' + Box_Pwd);
var Box_Options = {headers: {Authorization: Box_AuthHeader}};
var Box_IP = "hc3.domaine.ndd";
var Box_Port = "443";   // le port externe qui est redirigé vers le port interne
var Box_Protocole = "https";
var Box_Cmd = "api/callAction";

var Var1 = "deviceID"; 
var Val1 = "###";
var Var2 = "name"; 
var Val2 = "name of the function";

var url = Box_Protocole + "://" + Box_IP + ":" + Box_Port + "/" + Box_Cmd + "?" + var1 + "=" + val1 + "&" + var2 + "=" + val2;

envoi = UrlFetchApp.fetch(url, Box_Options);

je n'arrive pas à identifier l'url qui est effectivement envoyée à la box et qui fonctionne. 

Y aurait-il un log des tentatives d'accès à la box qui me permettrait de voir ce qui cloche /où ça coince ?

Posté(e)

Hum, tu veux dire que tu arrives déjà à te connecter ?
Dans ce cas pas de souci, si ce n'est pas du OAuth 2 avec redirection d'URL.


J'ai relu ton message, tu veux juste lui fournir une URL pour être notifié des changements d'état ?

Dans ce cas vire le login et password dans l'URL, ça fait longtemps que cette écriture est dépréciée (elle est encore supportée par la plupart des navigateurs cependant)

Il faut que tu fournisses les identifiants de connexion sur la HC3 en passant par les entêtes (header) de la requête émise par la serrure Nuki.

Posté(e)
il y a 9 minutes, Lazer a dit :

u veux dire que tu arrives déjà à te connecter ?

oui, et appeler une méthode spécifique d'un QA

il y a 11 minutes, Lazer a dit :

avec redirection d'URL.

ici (contrairement à avec mes Google Scripts qui utilisent mon HAProxy) je reste en local, donc je dois juste fournir  l'ip locale de la HC3 (192.168.X.y)

il y a 15 minutes, Lazer a dit :

tu veux juste lui fournir une URL pour être notifié des changements d'état ?

oui et cette url va exécuter une méthode d'un QA qui va mettre à jour le statut de la Nuki

il y a 18 minutes, Lazer a dit :

Il faut que tu fournisses les identifiants de connexion sur la HC3 en passant par les entêtes (header)

je me doutais bien, maid pourrais-tu me donner un exple car là on atteint les limites de mon (in)compétence ?

Merci

Posté(e)

merci, je vais étudier ton  lien.

mais pour l'exemple, c'est simple (sinon je n'aurais même pas commencé), c'est url de mon premier post (sans l'authentification, bien-sûr)

Posté(e)

Et bien ton user:password il faut l'encoder dans le header, je recopie l'exemple de Wikipedia :

 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 

avec un encodage de type bas64, exactement comme pour le script de backup automatique que tu utilises déjà.

Posté(e)

oui, c'était là que j'étais arrivé dans ma lecture, mais quelle url COMPLETE (avec l'authentification et le "message" (=url comme si on n'avait pas besoin d'authentification) dois-je mettre (par exemple dans mon browser) ?

 

 

Posté(e)

L'URL c'est juste l'URL normale, sans ajouter le user:password devant, comme tu l'as fait.

http://<IP HC3>/api/callAction?deviceID=<ID du QA>&name=<nom fonction pour mise à jour>

Et le user:password, lui est encodé dans le header en base64, comme dans l'exemple de Wikipedia

 

Ensuite tu mets tout ça dans la Nuki... sous réserve qu'elle te le permette, comme dit, je n'ai jamais utilisé.

Posté(e)

ma Nuki n'a que un seul champ : une url, qui idéalement devrait contenir également l'authentification.

Donc il n'est pas possible de générer une ligne (url) avec le "message" et le header d'authentification ?

Posté(e)

ah OK, bon voilà qui est clair.....

 

pour le login dans l'URL, je ne sais pas si Nuki le supporte, il faut leur demander alors.

Posté(e)

je vais regarder sur le forum de Nuki,

mais comme l'url est un champ text, ce champ peut contenir ce qu'on veut.

ici exemple du retour du JSON des url enregistrées (ici 1 url, max 3. possibles)

// 20220813180405
// http://192.168.x.y:wwww/callback/list?token=abcdefg

{
  "callbacks": [
    {
      "id": 0,
      "url": "http://192.168.x.z:ppp/UniversalListen?trame=blablabla"
    }
  ]
}

= exemple pour ma LD (où pas d'authentification nécessaire => NO comment)

Posté(e)

je vais peut-être dire une connerie, mais si tu utilises un user spécifique, il faut penser à lui donner le droit d'accès au QA...

peut-être pour ça que ton premier lien n'a pas marcher !?

Posté(e)

ce n'est pas une bête question, ou bien, alors je suis également très bête:), car j'ai déjà eu ce soucis par le passé, et on ne m'y reprendra plus.

En fait, comme le disais @Lazer, ma première url fonctionne depuis un browser, mais plus entre serveurs. J'ai eu le soucis avec mes Google Scripts.

 

Pour l'instant ça semble être un limitation au niveau du bridge Nuki. Dès que je trouve une solution, je la partage.

×
×
  • Créer...