Accès API par url unique

Mon problème

Je cherche à accéder aux valeurs de mes capteurs (température par exemple) ou à déclencher une action via l’API mais par un appel à une URL.
J’ai essayé de taper ceci : http://[ADDRESS_IP]:[PORT]/api/states/[mon_capteur]?api_password=[LONG_ACCESS_TOKEN]

Avec :
ADDRESS_IP : l’adresse ip de home assistant
PORT : le port d’écoute (8123)
mon_capteur : l’identifiant d’un capteur de température présent dans ma configuration
LONG_ACCESS_TOKEN : Le token généré à partir de la section « utilisateur » de Home assistant

Lorsque j’entre cette url dans un navigateur (Chrome), je reçois une erreur 401 « Unauthorized »
Est-ce que je rate quelque chose ?

En vous remerciant par avance pour votre aide

Ma configuration


[center]

System Information

version core-2023.2.2
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.7
os_name Linux
os_version 5.15.84-v8
arch aarch64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4972
Installed Version 1.28.3
Stage running
Available Repositories 1209
Downloaded Repositories 2
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 9.5
update_channel stable
supervisor_version supervisor-2023.01.1
agent_version 1.4.1
docker_version 20.10.22
disk_total 57.8 GB
disk_used 7.1 GB
healthy true
supported true
board rpi3-64
supervisor_api ok
version_api ok
installed_addons Terminal & SSH (9.6.1), teleinfo2mqtt (8.2.0), tydom2mqtt (2.6.6)
Dashboards
dashboards 3
resources 0
views 2
mode storage
Recorder
oldest_recorder_run 5 février 2023 à 20:47
current_recorder_run 5 février 2023 à 21:47
estimated_db_size 79.31 MiB
database_engine sqlite
database_version 3.38.5
[/center]

L’API ne marche pas comme ça…
La doc REST API | Home Assistant Developer Docs explique, mais, il faut comprendre la syntaxe swagger (j’ai du mal).
Et quelques exemples pratiques Utiliser l'API REST Home Assistant [update] - Devotics

Le token, entre autre, s’envoie via les headers…
Pour tester dans chrome, l’extension postman permet de passer les paramètres comme il faut…

Voilà un exemple:

Bonjour golfvert,

Merci pour votre réponse rapide.
Je viens de tester votre méthode avec Postman et elle fonctionne effectivement.
Ca m’a permis de vérifier :

  1. Que Home assistant est accessible depuis l’extérieur
  2. Que le nom de mon capteur est correct (j’ai eu un peu de mal à comprendre la logique de syntaxe des capteurs)
  3. de voir que mon token longue durée est valide

En revanche, est-ce donc la seule méthode ? N’y a t-il pas moyen d’envoyer la requête via une url unique ?

En vous remerciant,

C’est à dire? Une URL que l’on met dans chrome et qui fait ça comme ça?
Je crains que non…
Par défaut dans la barre d’adresse chrome fait du « GET » et pour changer des valeurs il faut un « POST ».
Et même le « GET » suppose de passer des paramètres en Header. Et ça, je ne pense pas que chrome le fasse en direct…

Quel est le besoin et quel outil devrait faire l’appel à une URL « simple »?

Pour créer un service web sur HA qui répond a un get et pas post, il faut utiliser node-red. Cela permettra un appel depuis la barre d’adresse du navigateur et toutes les actions que l’on souhaite comme la maj d’une entité. On n’a plus la sécurité des token HA par contre.
Je suis un fervent défenseur de l’utilisation des automatisations HA, mais node-red est très puissant et a tout son sens dans des usages spécifiques comme celui ci.

Après comme le dit @golfvert, précises ce que tu veut faire. Il y a peut-être d’autres réponses a t’apporter.

Par url unique j’entends effectivement une url avec des paramètres en GET directement dans l’url, ce qui implique effectivement le passage du token en GET dans l’URL.

Pour répondre à la question « pourquoi ai-je besoin de ceci » :
J’ai migré de Jeedom à Home assitant il y a un petit moment. A l’époque j’utilisais ce système d’URL pour commander Jeedom depuis des widgets sur mon smartphone.
En gros j’utilise KLWP sur Android pour créer des Widgets / boutons sur ma page d’accueil. L’appui sur un bouton permet de faire un appel HTTP avec une url.
Je souhaite simplement réutiliser ces boutons en changeant simplement l’url pour commander Home Assistant plutôt que Jeedom.

En vous remerciant pour vos réponses et le temps que vous passez à m’aider

Entre temps j’ai trouvé une solution plus propre à mon problème :
Pour activer un service Home Assistant ou récupérer un état, j’utilise Tasker.
Dorénavant, lorsque je clique sur un widget KLWP de ma page d’accueil android, je ne lance plus de requête HTTP, je lance une tâche Tasker qui effectue une requête en POST
Pour les prochaines personnes qui ont le même problème, qui tombent sur ce post et qui cherchent une solution, j’ai trouvé comment procéder sur ce sujet

Merci pour votre aide !

Tant mieux…
L’appli HA sous android permet, je crois (j’ai un iPhone), de créer des widgets. Ca éviterait le passage par tasker.

Oui c’est exact, il y a un widget pour effectuer une action (switch) et un widget pour afficher un état, mais je crée mes propres widgets (style neumorphic) à ma page d’accueil pour que le design soit homogène…

Si on accepte de passer par un bouton dans une page web, j’ai donné un exemple avec un webhook ici:

Après c’est l’automatisation qui devra se charger de changer l’état.

A partir de la 2023…5.1 il y a aussi la methode GET pour les webhooks, mais je recommande d’attendre un peu avec la mise à jour.