Headers et Body dans Push ?

Bonjour,

Je cherche à commander par scénario un équipement qui se pilote via des requêtes HTTPS en POST avec des headers et un body bien spécifiques.

Je ne trouve pas comment le faire directement depuis l’IPX et je doute que ce soit possible vu l’échange dans ce post.

Quelqu’un aurait-il une solution à me suggérer sans que ce soit trop compliqué ? Passer par un serveur relais ?

Merci de votre aide.

C’est malheureusement la seule solution aujourd’hui. Un petit script en nodejs fait largement l’affaire.

1 J'aime

Oups, voilà qui va dépasser mes compétences actuelles. Mais j’ai un serveur Synology sur mon réseau, je dois pouvoir l’utiliser pour cela…

Je vais me pencher sur l’installation du paquet nodejs dessus, puis je solliciterai peut-être ton aide pour réaliser le script qui va bien.

Merci de ton aide et bon WE.

Sur un Synology, il y a peut être plus simple. Ça existe peut être déjà comme « plugin » ?

Bonjour,

Qu’entends-tu par là ? Il existe un package nodejs j’ai vu, c’est de cela dont tu parles ?

Je ne connais pas Synology mais ils ont peut être déjà quelque chose (plugin, package, application, peu importe le nom) qui existe déjà :wink:

Tu veux dire directement pour l’équipement en question (un boitier Heatzy en l’occurence que je teste actuellement) ? Ou bien pour faire serveur relais ?

Dans le premier cas, une recherche parmi les packages existants ne donne rien…

Non je pensais à la fonction serveur relais. Ça doit peut être déjà exister.

1 J'aime

J’ai cherché mais ça n’a pas l’aire d’exister. Il y a bien un package proxy, mais je doute que ça me permette de transformer les requêtes.

Voila en clair ce que je souhaite faire :

  • pouvoir envoyer au serveur relais une requête comportant 2 paramètres : l’identifiant du boitier {did} à piloter et le mode dans lequel le faire basculer (avec un simple PUSH comme sait le faire l’IPX), pour intégration dans un scénario
  • que le serveur relais interroge l’API de Heatzy avec mon login et mon password pour récupérer un Token. La syntaxe est la suivante :

POST /app/login
User login
→ Header
‹ Content-Type: application/json ›
‹ Accept: application/json ›
‹ X-Gizwits-Application-Id: Heatzy_Application_Id ›
→ Body
{
« username »: « string »,
« password »: « string »,
« lang »: « en »
}
→ URL
https://euapi.gizwits.com/app/login
→ Curl Command
curl -X POST --header ‹ Content-Type: application/json › --header ‹ Accept: application/json › --header ‹ X-Gizwits-Application-Id: Heatzy_Application_Id › -d ‹ { « username »: « string », « password »: « string », « lang »: « en » } › ‹ https://euapi.gizwits.com/app/login ›
→ Example returned value
{
« uid »: « string »,
« token »: « string »,
« expire_at »: 0
}

  • qu’il envoie ensuite une requête pour faire basculer le boitier voulu dans le mode indiqué (0, 1, 2 ou 3) avec les mêmes règles que pour l’X-4FP (0=Confort, 1=Eco…). La syntaxe est celle-ci :

POST /app/control/{did}
Control the device status
→ Header
‹ Accept: application/json ›
‹ Content-Type: application/json ›
‹ X-Gizwits-Application-Id: Heatzy_Application_Id ›
‹ X-Gizwits-User-token: User_Token ›
→ Body
{
« raw »: [mode]
}
The value for « raw » are :
• « raw »: [1,1,0]→ Comfort Mode
• « raw »: [1,1,1] → ECO mode
• « raw »: [1,1,2] → Anti-Freeze mode
• « raw »: [1,1,3] → OFF mode
→ URL
https://euapi.gizwits.com/app/control/{did}
→ Curl Command
curl -X POST --header ‹ Content-Type: application/json › --header ‹ Accept: application/json › --header ‹ X-Gizwits-User-token: User_Token › --header ‹ X-Gizwits-Application-Id: Heatzy_Application_Id › -d '{« raw »: [1,1,0]} ’ ‹ https://euapi.gizwits.com/app/control/{did} ›

Je fais ces commandes en js dans un widget pour pouvoir faire basculer le boitier.

Si tu as une idée de comment faire ça en nodejs, tu me sauves… :slight_smile:

Merci d’avance à toi.