Utilisation api de ha depuis un pc via curl

bonjour

Je commande certains périphériques depuis un autre programme qui tourne sur un Raspberry via un url lancée depuis le shell via CURL.

j’arrive à piloter un boitier ON/OFF Tuya sans difficulté, à lire un capteur de température ZIGBEE, mais impossible de trouver la syntaxe pour les modules des volets roulant.

Existe-t-il de la documentation ou des exemples ?

Merci

Jo2a

Salut

La documentation de l’API : REST API | Home Assistant Developer Docs

Un exemple : Restful API to command_open autogate/garage - Configuration - Home Assistant Community

Merci beaucoup Giga77

Je comprends que l’API ne connaît que deux commandes de base cover_close et cover_open.

Peut-on definir d’autres fonctions comme la lecture d’état ou le positionnement précis ?

Merci

Jo2a

Alors t’as mal compris :sweat_smile:
Tu as les actions supporté ici : Cover - Home Assistant

Oui, toujours avec la doc : Cover - Home Assistant
Pour récupérer l’état d’une entité, utilises /api/states/<entity_id>

Merci Giga77, je débute donc désolé pour mes questions “simplistes”. Je vais regarder de plus près.

bonne soirée

Bonsoir Giga77,

bon je galère et je ne débouche pas …

Voilà un exemple de commande qui passe : curl -X POST -H « Authorization: Bearer clé-token » -H « Content-Type: application/json » -d « {« entity_id »: " cover.curtain_switch_rideau_test "} » http://192.168.1.19:8123/api/services/cover/stop_cover

les deux autres qui fonctionnent …/api/services/cover/open_cover et /api/services/cover/close_cover

impossible de trouver la bonne syntaxe pour la commande de lecture d’état ou de position fixée …

preneur de votre aide si c’est possible

je débute sur HA

merci

Jo2a

Je t’ai pourtant indiqué ce que tu dois utiliser…

Tu as un exemple dans la documentation : REST API | Home Assistant Developer Docs

bonsoir

je te le répète, je débute donc je découvre en marchant … le premier exemple de ta réponse c’est un fichier à rajouter quelque part dans HA ?

merci de ta patience

Jo2a

Tu débutes dans quoi Home Assistant, utilisation d’une API via curl, lecture d’une documentation ?
Je ne sais pas ce que tu ne comprends pas, ni dans quoi tu débutes :wink:

Il n’y a aucun fichier à rajouter. Il suffit de lire la documentation. Maintenant si tu as un soucis à comprendre l’anglais utilises ça : REST API | Home Assistant Developer Docs

T’as juste à remplacer ton token :

curl  -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json"  http://192.168.1.19:8123/api/states/cover.curtain_switch_rideau_test

Merci

cela fonctionne

j’avais gardé la commande POST … d’où mon erreur

Jo2a

bonsoir Giga77

quelle serait la syntaxe de la requête pour la commande cover.set_cover_position ?

je n’arrive pas à passer la valeur de la position demandée dans la requête CURL

merci

Tu me montres ce que t’as essayé ?

Bonjour voilà ce que j’ai essayé :

et quelques variantes autour de ces syntaxes avec à chaque fois comme résultat erreur : 400: Bad Request La syntaxe de la commande n’est pas correcte.

{50} est différent de 50 :grinning_face_with_smiling_eyes:

Tu devrais utilisé du texte préformaté, ç’est plus simple pour faire du copier coller.
image


Et il y a plein d’exemples

ça donne ça :

curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN"  -d '{ "entity_id": "cover.curtain_switch_rideau_test","position": 50}'  http://192.168.1.19:8123/api/services/cover/set_cover_position
1 « J'aime »

merci pour ta patience et ton aide mais j’ai désormais d’autres erreurs …

C:\Users\phili>curl -X POST -H « Content-Type: application/json » -H « Authorization: Bearer Token» -d ‹ { « entity_id »: « cover.curtain_switch_rideau_test »,« position »: 50} › http://192.168.1.19:8123/api/services/cover/set_cover_position

le retour donne ???
curl: (3) URL rejected: Port number was not a decimal number between 0 and 65535
curl: (3) URL rejected: Port number was not a decimal number between 0 and 65535
curl: (3) unmatched close brace/bracket in URL position 3:

si je change : -d “ { « entity_id »: « cover.curtain_switch_rideau_test »,« position »: 50} “

j’obtiens : {« message »:« Data should be valid JSON. »}

Utilise le texte préformaté, stp. Les charactères comme les guillemets sont modifiés sinon…

voilà la comande utilisée :

curl -X POST -H "Authorization: Bearer token" -H "Content-Type: application/json" -d "{ "entity_id": "cover.curtain_switch_rideau_test","position": 50}" ``http://192.168.1.19:8123/api/services/cover/set_cover_position

voilà le réponse : {« message »:« Data should be valid JSON. »}

je n’ai plus d’erreur de port et d’url rejetée mais jsute un problème de compatibilité je suppose ?

Tu ne peux pas remplacer ’ par " dans

-d '{ "entity_id": "cover.curtain_switch_rideau_test","position": 50}'

Essaie avec ça :

curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN"  -d '{ "entity_id": "cover.curtain_switch_rideau_test","position": "50"}'  http://192.168.1.19:8123/api/services/cover/set_cover_position

pas mieux … voir pire !

retour :

curl: (3) URL rejected: Port number was not a decimal number between 0 and 65535
curl: (3) URL rejected: Port number was not a decimal number between 0 and 65535
curl: (3) unmatched close brace/bracket in URL position 3:
50}’