Problème d'état switch RESTful

C’est parfait merci @golfvert ça fonctionne!!
voici la version finale:

- platform: rest
  method: put
  resource: https://api.oklyn.fr/public/v1/device/my/aux
  name: "electrolyse piscine"
  body_on: '{ "aux": "on"}'
  body_off: '{ "aux": "off"}'
  scan_interval: 600
  is_on_template: >-
    {% if value_json.aux == "on" %} True
    {% else %} False
    {% endif %}
  headers:
    content-type: "application/json"
    X-API-TOKEN:xxxx

J’ai mis la variable ‹ is_on_template › car la ‹ value_template › n’est pas valide pour un switch,
Je me suis appuyé sur la valeur de « aux » sinon le décalage de la mise a jour du statut laissait le temps au switch de rebasculer en « inactif »
et j’ai ajouter un Scan si jamais je change le statut a sans passer par home assistant

Bonne nuit et encore merci

Bonjour,

En copiant ta solution ma partie « aux » ne fonctionne pas.
As tu effectué des changement depuis ?

SAlut @Zigfou
Dis m’en un peu plus sur ton problème!
je n’ai pas retouché au code depuis 2ans et tout fonctionne très bien.
on est d’accord qu’il faut changer le X-API-TOKEN par ton token perso !
As tu réussi a configurer le reste de l’api Oklyn ?(filtration, PH, temp air/eau)

Oui bien sur, les sensor sont OK mais la partie auxiliaire ne fonctionne pas.

# Mesure Ph Piscine
  - platform: rest
    resource: https://api.oklyn.fr/public/v1/device/1xx/data/ph
    method: GET
    name: "Ph Piscine"
    unique_id: binary_sensor.ph piscine
    scan_interval: 60
    value_template: '{{ value_json.value }}'
    headers:
      X-API-TOKEN: Xxx
    
# Mesure air Piscine
  - platform: rest
    resource: https://api.oklyn.fr/public/v1/device/1xx/data/air
    method: GET
    name: "Air Piscine"
    unique_id: binary_sensor.air piscine
    scan_interval: 60
    value_template: '{{ value_json.value }}'
    headers:
      X-API-TOKEN: Xxx
    
# Mesure Eau Piscine
  - platform: rest
    resource: https://api.oklyn.fr/public/v1/device/1xx/data/water
    method: GET
    name: "Eau Piscine"
    unique_id: binary_sensor.eau piscine
    scan_interval: 60
    value_template: '{{ value_json.value }}'
    headers:
      X-API-TOKEN: Xxx

# Mesure redox
  - platform: rest
    resource: https://api.oklyn.fr/public/v1/device/1xx/data/orp
    method: GET
    name: "redox Piscine"
    unique_id: binary_sensor.redox piscine
    scan_interval: 60
    value_template: '{{ value_json.value }}'
    headers:
      X-API-TOKEN: Xxx
      

N’étant pas programmeur, j’utlise les infos et les recherches des autres et pour le coup, je suis aussi preneur pour la partie pompe.

@Zigfou

pour l’aux il s’agit de créer un switch, est ce que tu a mis ton code au bon endroit?

pour la pompe voici mon morceau de code qui me permet de changer le mode:

rest_command:
  pompe_on:
    url: "https://api.oklyn.fr/public/v1/device/my/pump"
    method: put
    payload: '{ "pump": "on"}'
    headers:
      content-type: "application/json"
      X-API-TOKEN:  XXX
  pompe_off:
    url: "https://api.oklyn.fr/public/v1/device/my/pump"
    method: put
    payload: '{ "pump": "off"}'
    headers:
      content-type: "application/json"
      X-API-TOKEN:  XXX
  pompe_auto:
    url: "https://api.oklyn.fr/public/v1/device/my/pump"
    method: put
    payload: '{ "pump": "auto"}'
    headers:
      content-type: "application/json"
      X-API-TOKEN:  XXX

j’en profite pour te mette tout les sensors que j’ai crées

- platform: rest
  resource: https://api.oklyn.fr/public/v1/device/my/data/ph
  name: "PH Piscine"
  scan_interval: 600
  value_template: '{{value_json["value_raw"]}}'
  headers:
    content-type: "application/json"
    X-API-TOKEN:  XXX
- platform: rest
  resource: https://api.oklyn.fr/public/v1/device/my/data/orp
  name: "RedOx Piscine"
  scan_interval: 600
  value_template: '{{value_json["value_raw"]}}'
  headers:
    content-type: "application/json"
    X-API-TOKEN:  XXX
- platform: rest
  resource: https://api.oklyn.fr/public/v1/device/my/data/water
  name: "Temp Piscine"
  device_class: temperature
  scan_interval: 600
  value_template: '{{value_json["value_raw"]}}'
  headers:
    content-type: "application/json"
    X-API-TOKEN:  XXX
- platform: rest
  resource: https://api.oklyn.fr/public/v1/device/my/pump
  name: "mode pompe piscine "
  scan_interval: 600
  value_template: '{{value_json["pump"]}}'
  headers:
    content-type: "application/json"
    X-API-TOKEN:  XXX
- platform: rest
  resource: https://api.oklyn.fr/public/v1/device/my/data/ph
  name: "statut PH Piscine"
  scan_interval: 600
  value_template: '{{value_json["status"]}}'
  headers:
    content-type: "application/json"
    X-API-TOKEN:  XXX
- platform: rest
  resource: https://api.oklyn.fr/public/v1/device/my/data/orp
  name: "statut Red Ox Piscine"
  scan_interval: 600
  value_template: '{{value_json["status"]}}'
  headers:
    content-type: "application/json"
    X-API-TOKEN:  XXX
- platform: rest
  resource: https://api.oklyn.fr/public/v1/device/my/pump
  name: "statut pompe piscine"
  scan_interval: 600
  value_template: '{{value_json["status"]}}'
  headers:
    content-type: "application/json"
    X-API-TOKEN:  XXX
- platform: rest
  resource: https://api.oklyn.fr/public/v1/device/my/aux
  name: "statut aux"
  scan_interval: 600
  value_template: '{{value_json["aux"]}}'
  headers:
    content-type: "application/json"
    X-API-TOKEN:  XXX

en esperant que ça t’aide

1 « J'aime »

Un GRAND merci pour ton aide, et également pour tes sensors.J’ai rajouter des id uniques et tout est nickel.
Pour la pompe, j’arrive à créer mes bouton on, off et auto.Mais visiblement je ne sais pas ou placer la commande pour l’auxiliaire.J’ai toujours ce problème de configuration yaml qui ne fonctionne pas.
J’ai essayé dans, le fichier conf yaml et dans celui que j’ai crée command_line_yaml

Voilà la commande qui fonctionne chez moi pour allumer la prise auxiliaire, qui chez moi est l’éclairage de la piscine.

switch:
  - platform: rest
    method: put
    resource: https://api.oklyn.fr/public/v1/device/my/aux
    name: "Lumiere piscine"
    unique_id: binary_sensor.Lumiere piscine
    body_on: '{"aux": "on"}'
    body_off: '{"aux": "off"}'
    is_on_template: "{{ value_json.is_active }}"
    headers:
      Content-Type: application/json
      X-API-TOKEN:  
      X-Custom-Header: '{{ states("input_text.the_custom_header") }}'
    verify_ssl: true
1 « J'aime »

Top donc c’est bon tout fonctionne!?

Oui, tout fonctionne, je te remercie énormément pour ton aide.

Salut a tous , je suis de retours sur HA :slight_smile:

j’avais suivi ta premiere integration pour la commande aux, qui marché a l’epoque mais plus maintenant,

si je reprend ton dernier code :

switch:
  - platform: rest
    method: put
    resource: https://api.oklyn.fr/public/v1/device/my/aux
    name: "Lumiere piscine"
    unique_id: binary_sensor.Lumiere piscine
    body_on: '{"aux": "on"}'
    body_off: '{"aux": "off"}'
    is_on_template: "{{ value_json.is_active }}"
    headers:
      Content-Type: application/json
      X-API-TOKEN:  
      X-Custom-Header: '{{ states("input_text.the_custom_header") }}'
    verify_ssl: true

Ca fonctionne mais je n’ai pas le retour d’état comme quoi la lumière est bien allumé , contrairement a avant, chez vous aussi ?

Si je commence a comprendre le probleme bient du Is-on-template qui ne pointe pas au bonne endroit, j’ai cette erreur dans les logs

Template variable warning: 'dict object' has no attribute 'is_active' when rendering '{{ value_json.is_active }}'

Bonjour,

le retour d’état fonctionne mais il est un peu long.

finalement non ça ne fonctionne plus, va falloir faire une recherche.
Avec le temps qui fait chez moi, je ne l’ai pas utiliser depuis la mise en route de cette commande

Moi j’utilise l’aux pour l’électrolyse donc je me fiche un peu du délais, mais pour une lumière ça doit être casse pied!
De souvenir dans mes automatisations, quelques secondes après avoir fait un « put » je fais un Scan des sensors pour mettre à jour l’état

1 « J'aime »

En fait j’utilise des scripts

J’édite mon message j’ai trouvé la solutionswitch template, les is_on_template ne sont pas bon dans vos modèle

Comme on a des sensor pour le statut de " aux " il faut indiquer ceci par exemple pour le retours d’état de Aux

  • sensor:
#Statut Aux 
- platform: rest
  resource: https://api.oklyn.fr/public/v1/device/my/aux
  name: "statut aux"
  unique_id: sensor.statut_aux_piscine
  scan_interval: 60
  value_template: '{{value_json["aux"]}}'
  headers:
    content-type: "application/json"
    X-API-TOKEN:  xxxxxxxxxxxxxxxxxxxxxx
  • switch
# Lumiere piscine 
  - platform: rest
    method: put
    resource: https://api.oklyn.fr/public/v1/device/my/aux
    name: "Lumiere piscine"
    unique_id: binary_sensor.Lumiere_piscine
    body_on: '{"aux": "on"}'
    body_off: '{"aux": "off"}'
    is_on_template: "{{ is_state('sensor.statut_aux', 'on') }}"
    headers:
      Content-Type: application/json
      X-API-TOKEN:  nxxxxxxxxxxxxxxxx
      X-Custom-Header: '{{ states("input_text.the_custom_header") }}'
    verify_ssl: true

Ce qui permet, après les 60sec de rafraichissement du : sensor.statut_aux_piscine le basculement du retours d’etat du switch. Meme si il est actionné depuis l’application oklyn,

Pour un retours d’etat plus rapide, il suffit de modifier le scan_interval: du sensor.statut_aux_piscine

1 « J'aime »

Bonjour,

Je viens de tester rapidement avant de partir au travail. Le retour d’état est super rapide mais par contre le comportement du switch dans ha est bizarre (normal dans l’appli oklyn)

c’est a dire le comportement bizarre ?

Lorsque je clique dessus, Il s’éteint et se rallume 1 min après dans ha, mais il est allumé dans l’appli oklyn

Je viens de me pencher sur mon problème.
Lors de la création d’entité j’avais choisi commutateur au lieu de Lumière.

1 « J'aime »