Aller au contenu
jojo

url avec auth pour API HC3

Recommended Posts

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites
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

Partager ce message


Lien à poster
Partager sur d’autres sites

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)

Partager ce message


Lien à poster
Partager sur d’autres sites

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à.

Partager ce message


Lien à poster
Partager sur d’autres sites

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) ?

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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é.

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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)

Partager ce message


Lien à poster
Partager sur d’autres sites

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 !?

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

×