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!
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…
@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.
Exactement ce que je cherchais, tout fonctionne bien, merci a vous !
Marque la réponse la plus pertinente en solution pour indiquer aux autres
Bonjour
je souhaire la même chose: piloter une pompe via un ESP (ESPEASY): pouvoir la mettre on/off et avoir un retour sur son état.
mais ca ne marche pas !
je ne trouve pas cette nouvelle entité « Pompe_Fontaine » pour créer un bouton ?
une idée ?
merci déjà,
voici ce que j’ai ajouté dans mon fichier configuration.yaml:
switch:
- platform: command_line
switches:
Pompe_Fontaine:
command_on: "curl http://192.168.0.61/control?cmd=gpio,15,1 >/dev/null"
command_off: "curl http://192.168.0.61/control?cmd=gpio,15,0 >/dev/null"
command_state: "curl http://192.168.0.61/control?cmd=gpio,15"
command_timeout: 20
value_template: >
{% set json = value | from_json %}
{% if json.state == 1 %}
true
{% else %}
false
{% endif %}
les URL’s marche bien (on/off). le retour mis dans command state est le suivant=
{
"log": "port#15: set to 0",
"plugin": 1,
"pin": 15,
"mode": "output",
"state": 0
}
Bonjour,
la syntaxe des command_line à changer depuis le core 2023.6.0.
Exemple :
# Example configuration.yaml entry
command_line:
- switch:
name: Kitchen Light
command_on: switch_command on kitchen
command_off: switch_command off kitchen
merci bien !!! Je viens de Jeedom et j’adore HA mais alors quelle horreur je passe mon temps a suivre des tutos qui ne fonctionnent plus car périmés …
Oui, ça évolue beaucoup, contrairement à jeedom
Il faut regarder les docs, qui sont à jour.
Merci
Désormais je vois bien ma nouvelle entité qui est créé
command_line: - switch: name: pompe_fontaine command_on: « curl -X GET http://192.168.0.61/control?cmd=gpio,15,1 >/dev/null » command_off: « curl -X GET http://192.168.0.61/control?cmd=gpio,15,0 >/dev/null » command_state: « curl -X GET http://192.168.0.61/control?cmd=gpio,15 » command_timeout: 20 value_template: > {% set json = value | from_json %} {% if json.state == 1 %} true {% else %} false {% endif%}
Mais rien ne se passe quand j active la pompe via le bouton . Comment puis je debugger et voir les messages d erreur ? Je ne trouve rien dans les logs (lesquels d ailleurs ?)
Dans les logs de HA, dans paramètres / systèmes / journaux.
merci, rien n’apparait dans les logs core ou autre
c’est très frustrant
mais j’ai trouvé et j’ai déjà corrigé
voilà le bon code: la commande curl n’était pas bonne pour HA et l’url pour lire le satus de l’espeasy non-plus
ca marche nickel désormais
command_line:
- switch:
name: pompe_fontaine
command_on: "curl http://192.168.0.61/control?cmd=gpio,15,1"
command_off: "curl http://192.168.0.61/control?cmd=gpio,15,0"
command_state: "curl http://192.168.0.61/control?cmd=status,gpio,15"
command_timeout: 20
value_template: >
{% set json = value | from_json %}
{% if json.state == 1 %}
true
{% else %}
false
{% endif %}
et j’ai créé un bouton qui lance comme action