Créer un bouton avec actions et etat via URL

Hello à tous,

Je cherche a créer un bouton avec 2 actions qui déclenchent un call URL ainsi que récupérer le status d’un objet depuis une URL également.

J’ai tenté de chercher un tutorial mais j’ai rien trouvé désolé.

Merci de votre aide!

Mot clé : RESTful Command

Mot clé : RESTful sensor

Merci c’est ce que je cherchais !

Par contre j’avoue ne pas savoir comment activer le rest a un bouton + sensor au niveau entity

Salut,

Peut-être tu pourrais expliquer dans les grandes ligne ce que tu veux faire fonctionnellement.
Plusieurs solutions techniques peuvent faire ce que tu décrit.

Car je sens un petit amalgame entre les notions de bouton au sens interface graphique d’un côté et les entité de l’autre.

Fais des recherches sur le forum… :innocent:

@AlexHass en fait j’ai réussi a associer les calls REST a des boutons mais ca me fait deux boutons différents + le sensor pour l’état. Je cherche une entité plus lisible avec un bouton on/off pour les deux calls et qui change d’icone en fonction du status

Hello,
Le sensor liera automatiquement la valeur à interval régulier.
Tu peux créer un sensor de type scrape sensor ou rest sensor qui lit la valeur toutes les n secondes (paramètre scan_interval). Pour le choix rest ou scrape, tout dépendra ensuite ce que retourne ton URL pour extraire le résultat. Il n’y aura donc pas besoin de bouton puisqu’à lu à intervale régulier (donc pas à la demande).

Voila un exemple de sensor qui lit une valeur la valeur dans une réponse XML, valeur count1, toutes les 10mn.

sensor:
  - platform : scrape
    name: "mon sensor"
    scan_interval: 600
    resource: 'http://192.168.1.100/status.xml'
    select: "count1"

Un appel à la demande, appelée par un bouton par exemple, se fera avec une restfull command comme le souligne aussi @Clemalex, ce qui générera un service dans HA, mais il n’y a à ma connaissance pas moyen de récupérer la valeur retournée par l’url.

Il nous manque un peu la finalité pour t’aider.
Si les appels REST génèrent des commandes et qu’il te faut un retour de l’état, tu peux utiliser un command line avec les 2 url de command et 1 url status. Tu n’aura qu’un switch avec le bon état.

Exemple :

switch:
  - platform: command_line
    switches:
      mon_switch:   
        command_on: 'curl http://192.168.1.100/on >/dev/null'
        command_off: 'curl http://192.168.1.100/off >/dev/null'
        command_state: 'curl http://http://192.168.1.100/on/status.xml'
        value_template: '{% set status = value | regex_findall_index("<led0>(.*)</led0>") %} {% if status == "1" %} true {%- endif -%}'
        command_timeout: 20

C’est exactement pour ça que je disais qu’il ne faut pas confondre bouton de l’interface et entitiés.
Ce que tu veux se fait surement avec un sensor qui va s’occuper de faire les appels et garder un état qui vient d’une requête.
Ensuite le bouton sur l’interface n’est qu’une représentation visuelle et interactive du sensor et de son état.

Bref @Argonaute t’a donné un bon exemple. :slight_smile:

1 « J'aime »

Exactement ce que je cherchais, tout fonctionne bien, merci a vous !

Marque la réponse la plus pertinente en solution pour indiquer aux autres