Mon problème
Bonjour a tous, j’essaye d’integrée les mesures et les commande posible par mon boitier qui controle ma piscine : OKLYN,
Je suis complètement débutant,
J’ai trouvé leur doc pour leur API : API - Aide & Support Oklyn
Apres quelque cherche j’ai compris qu’il fallait editer le fichier configuration.yaml, je me suis servi du Tuto pour commencé par de bonne base :
# Loads default set of integrations. Do not remove.
default_config:
# Text to speech
tts:
- platform: google_translate
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
frontend:
themes: !include_dir_merge_named themes
sensor: !include sensors.yaml
Puis créer donc un fichier sensors.yaml avec les info de l’api et l’aide de RESTful Sensor - Home Assistant
# Mesure Ph Piscine
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/ph
method: GET
name: "Ph Piscine"
scan_interval: 60
headers:
X-API-TOKEN: xxxxx
# Mesure air Piscine
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/air
method: GET
name: "Air Piscine"
scan_interval: 60
headers:
X-API-TOKEN: xxxxx
# Mesure Eau Piscine
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/water
method: GET
name: "Eau Piscine"
scan_interval: 60
headers:
X-API-TOKEN: xxxx
# Mesure redox
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/orp
name: "redox Piscine"
scan_interval: 60
headers:
X-API-TOKEN: xxxx
Apres redemarage j’ai bien les info qui remonte mais brutcomme leur doc en une ligne qui ne permet pas de l’integré par la suite sur le dashboard
Je souhaiterais si une personne a un peu de temps pour m’aider a ne prendre en compte déjà que les info utile a savoir ce qu’il y dans " value "
et dans un deuxième temps utilisé la commande PUT, affin de pilote avec un bouton switch l’auxiliaire en on / OFF, et la pompe en On / auto / Off
Ma configuration
Home Assistant 2022.8.6
Supervisor 2022.08.3
Operating System 8.4
Interface utilisateur : 20220802.0 - latest
Virtualbox
1 « J'aime »
Je m’auto répond pour ma première question pour avoir la " value" :
value_template: '{{ value_json.value }}'
# Mesure Ph Piscine
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/ph
method: GET
name: "Ph Piscine"
scan_interval: 60
value_template: '{{ value_json.value }}'
headers:
X-API-TOKEN: OPgaFqHAsuknOjV/v4fu1hhXnwg=
# Mesure air Piscine
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/air
method: GET
name: "Air Piscine"
scan_interval: 60
value_template: '{{ value_json.value }}'
headers:
X-API-TOKEN: OPgaFqHAsuknOjV/v4fu1hhXnwg=
# Mesure Eau Piscine
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/water
method: GET
name: "Eau Piscine"
scan_interval: 60
value_template: '{{ value_json.value }}'
headers:
X-API-TOKEN: OPgaFqHAsuknOjV/v4fu1hhXnwg=
# Mesure redox
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/orp
name: "redox Piscine"
scan_interval: 60
value_template: '{{ value_json.value }}'
headers:
X-API-TOKEN: OPgaFqHAsuknOjV/v4fu1hhXnwg=
Reste crée les commande PUT , ON / OFF auxiliére et ON/AUTO/OFF pompe
je trouve pas comment faire
Est ce que tu as regardé cette doc ? Ça a l’air de permettre de faire des PUT sur une API Reste comme tu le souhaites.
En cherchant sur le forum je vois que tu n’es pas le premier d’ailleurs a essayer de faire ça…
Bonjour a Tous j’essai de créer un switch pour changer l’état de l’« auxiliaire » de ma filtration de piscine grâce
a l’API de cette dernière (API - Aide & Support Oklyn )
j’arrive a changer l’état, mais pas a récupérer l’état… mon switch revient systématiquement en « inactif »
j’ai créer parallèlement un Sensor qui remonte sans problème l’état de mon "auxiliaire " mais cela ne résout pas le problème de mon switch
voici ma dernière version
- platform: rest
method: put
resource: https://a…
En tout cas je ne connaissais pas Oklyn (quel nom !) donc merci pour la découverte…
1 « J'aime »
merci je test ca, j’etais tombé dessus mais je comprenais pas ou mettre sont bloc maintenant je comprend.
c’est ok pour un switch on / off :
# Switch On / Off auxiliere 1
- platform: rest
method: put
resource: https://api.oklyn.fr/public/v1/device/my/aux
name: "lumiére 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: xxxxx
Reste pour le mode : on / auto / off je suis preneur d’une piste
1 « J'aime »
J’ai pas encore assez d’expérience pour te guider plus mais je vois que d’autres essayent un Input_select et de l’automatisme après.
Si ça peut t’aider…
lio73
Décembre 20, 2022, 4:59
6
Bonjour
Dans quel dossier tu a mis le bloc
Merci
Zigfou
Novembre 4, 2023, 2:26
7
Bonjour, il me reste à intégrer le bouton auxiliaire et ceux de la pompe. Est-il possible d’avoir un exemple yaml et l’emplacement du dossier ?
voici le code pour ajouter le controle de la pompe en mode: on, off et auto. auto sera soit simple ou avancée. Le choix sera celui qui a été fait le dernier à la main depuis l’application.
J’ai inclu aussi les 2 sensors de température air/eau
sensor:
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/air
method: GET
name: "Piscine air"
scan_interval: 60
value_template: '{{ value_json.value }}'
headers:
X-API-TOKEN: lacleAPIsur28caracteres
unit_of_measurement: "C"
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/water
method: GET
name: "Piscine eau"
scan_interval: 60
value_template: '{{ value_json.value }}'
headers:
X-API-TOKEN: lacleAPIsur28caracteres
unit_of_measurement: "C"
rest_command:
set_pump_off:
url: https://api.oklyn.fr/public/v1/device/my/pump
method: PUT
headers:
X-API-TOKEN: "lacleAPIsur28caracteres"
payload: "pump=off"
content_type: "application/x-www-form-urlencoded"
set_pump_on:
url: https://api.oklyn.fr/public/v1/device/my/pump
method: PUT
headers:
X-API-TOKEN: "lacleAPIsur28caracteres"
payload: "pump=on"
content_type: "application/x-www-form-urlencoded"
set_pump_auto:
url: https://api.oklyn.fr/public/v1/device/my/pump
method: PUT
headers:
X-API-TOKEN: "lacleAPIsur28caracteres"
payload: "pump=auto"
content_type: "application/x-www-form-urlencoded"
script:
pump_off:
alias: Set Pump to Off
sequence:
- service: rest_command.set_pump_off
pump_on:
alias: Set Pump to On
sequence:
- service: rest_command.set_pump_on
pump_auto:
alias: Set Pump to Auto
sequence:
- service: rest_command.set_pump_auto
input_select:
pump_mode:
name: Pump Mode
options:
- "off"
- "on"
- "auto"
initial: "off"
icon: mdi:water-pump
automation:
- alias: Set Pump Based on Input Select
trigger:
- platform: state
entity_id: input_select.pump_mode
action:
- choose:
- conditions:
- condition: state
entity_id: input_select.pump_mode
state: "off"
sequence:
- service: script.pump_off
- conditions:
- condition: state
entity_id: input_select.pump_mode
state: "on"
sequence:
- service: script.pump_on
- conditions:
- condition: state
entity_id: input_select.pump_mode
state: "auto"
sequence:
- service: script.pump_auto
Zigfou
Septembre 24, 2024, 6:05
11
Merci pour votre aide à tous, ci-joint une copie du resultat
bonjour Zigfou, tout comme toi je débute avec HA, et j’ai aussi un boitier oklyn
j’ai donc un peu de mal à suivre la démarche dans le post. As tu au final un code complet ? et comme tu as manifestement tâtonné pourrais tu me donner la procédure complète si tu veux bien. Merci beaucoup. David
il faut déjà que tu ajoute toute les entité nécessaire avant de faire un Dashboard comme sur l’image ci dessus :
Moi j’ai fais dans :
Pour le controle de la pompe dans le fichier configuration.xaml ( j’ai pas test la version de leo2v2o qui je pense est mieux que moi )
#oklyn
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: nOnMs9KutZt0FFwx5ab8C1FtPls=
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: ton-token
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: ton-token
et pour tout les autre sonde dans le dossier sensors.xaml
#Oklyn Sensor
#Ph
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/ph
name: "PH Piscine"
unique_id: sensor.ph_piscine
scan_interval: 60
value_template: '{{ value_json.value }}'
headers:
content-type: "application/json"
X-API-TOKEN: ton-token
#orp
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/orp
name: "RedOx Piscine"
unique_id: sensor.orp_piscine
scan_interval: 60
value_template: '{{value_json["value_raw"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: ton-token
#Eau
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/water
name: "Temp Piscine"
unique_id: sensor.eau_piscine
device_class: temperature
unit_of_measurement: "°C"
scan_interval: 60
value_template: '{{value_json["value_raw"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: ton-token
#Air
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/air
name: "Temp air Piscine"
unique_id: sensor.air_piscine
device_class: temperature
unit_of_measurement: "°C"
scan_interval: 60
value_template: '{{value_json["value_raw"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: ton-token
#Mode pompe
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/pump
name: "mode pompe piscine "
unique_id: sensor.mode_pompe_piscine
scan_interval: 60
value_template: '{{value_json["pump"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: ton-token
#Statut Ph
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/ph
name: "statut PH Piscine"
unique_id: sensor.statut_ph_piscine
scan_interval: 60
value_template: '{{value_json["status"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: ton-token
#Statut ORP
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/orp
name: "statut Red Ox Piscine"
unique_id: sensor.statut_orp_piscine
scan_interval: 60
value_template: '{{value_json["status"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: ton-token
#Statut Pompe
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/pump
name: "statut pompe piscine"
unique_id: sensor.statut_pompe_piscine
scan_interval: 60
value_template: '{{value_json["status"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: ton-token
#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: 15
value_template: '{{value_json["aux"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: ton-token
#Statut Aux 2
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/aux2
name: "statut electrolyseur"
unique_id: sensor.statut_aux2_piscine
scan_interval: 15
value_template: '{{value_json["status"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: ton-token
Pense a modifier le " ton-token " par le token que tu retrouvera dans l’application oklyn, une fois fait ca tu aura toute les entité nécessaire dans HA pour faire une page piscine
merci beaucoup de ton retour. Mais comme je suis un total débutant … pas facile. Si j’ai bien compris il faudrait que je charge L’api pour ensuite modifier le code ? J’ai bien vu ma clé d’accès API dans mon application mais je n’arrive pas à trouver et charger l api dans HA.
Zigfou
Avril 27, 2025, 9:52
15
Désolé je viens juste de voir ta demande.
Pour ma part, j’ai créé dans ma configuration YAML ceci.
homeassistant:
packages: !include_dir_named packages
Ensuite, j’ai ajouté ce qui suit dans le fichier config
piscine_oklyn.yaml
pour y copier-coller ce fichier:
################################
### sensor: ###
################################
sensor:
# PH Piscine
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/ph
method: GET
name: "PH Piscine"
unique_id: "binary_sensor.PH Piscine"
scan_interval: 60
value_template: '{{value_json["value_raw"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: !secret oklyn_api
# RedOx Piscine
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/orp
method: GET
name: "RedOx Piscine"
unique_id: "binary_sensor.RedOx Piscine"
scan_interval: 60
value_template: '{{value_json["value_raw"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: !secret oklyn_api
# Température Piscine
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/water
method: GET
name: "Temp Piscine"
unique_id: "binary_sensor.Temp Piscine"
device_class: temperature
scan_interval: 60
unit_of_measurement: "°C"
value_template: '{{value_json["value_raw"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: !secret oklyn_api
# mode pompe piscine
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/pump
method: GET
name: "mode pompe piscine"
unique_id: "binary_sensor.mode pompe piscine"
scan_interval: 10
value_template: '{{value_json["pump"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: !secret oklyn_api
# statut PH Piscine
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/ph
method: GET
name: "statut PH Piscine"
unique_id: "binary_sensor.statut 'PH Piscine"
scan_interval: 60
value_template: '{{value_json["status"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: !secret oklyn_api
# statut RedOx Piscine
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/orp
method: GET
name: "statut RedOx Piscine"
unique_id: "binary_sensor.statut RedOx Piscine"
scan_interval: 60
value_template: '{{value_json["status"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: !secret oklyn_api
# statut pompe piscine
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/pump
method: GET
name: "statut pompe piscine"
unique_id: "binary_sensor.statut pompe piscine"
scan_interval: 10
value_template: '{{value_json["status"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: !secret oklyn_api
# 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: 10
value_template: '{{value_json["aux"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: !secret oklyn_api
# Mesure air Piscine
- platform: rest
resource: https://api.oklyn.fr/public/v1/device/my/data/air
method: GET
name: "Air Piscine"
unique_id: "binary_sensor.air piscine"
scan_interval: 600
value_template: '{{value_json["value_raw"]}}'
headers:
content-type: "application/json"
X-API-TOKEN: !secret oklyn_api
- platform: history_stats
name: "Temps de fonctionnement pompe"
unique_id: "temps_fonctionnement_pompe_piscine"
entity_id: sensor.statut_pompe_piscine
state: "on"
type: time
start: "{{ now().replace(hour=0, minute=0, second=0) }}"
end: "{{ now() }}"
################################
### rest_command: ###
################################
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: !secret oklyn_api
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: !secret oklyn_api
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: !secret oklyn_api
pergola_light1:
url: "http://192.168.0.100/zns.cgi?cmd=l&o=64&p={{ pwm }}"
method: get
pergola_slider:
url: "http://192.168.0.100/zns.cgi?cmd=m&m=1&a={{ pwm }}"
method: get
################################
### #switch: ###
################################
switch:
- platform: rest
method: put
resource: https://api.oklyn.fr/public/v1/device/my/aux
name: "Lumiere piscine"
unique_id: "binary_sensor.Lumiere piscine"
scan_interval: 15
body_on: '{"aux": "on"}'
body_off: '{"aux": "off"}'
is_on_template: >-
{% if value_json.aux == "on" %} True
{% else %} False
{% endif %}
headers:
Content-Type: application/json
X-API-TOKEN: !secret oklyn_api
- platform: template
switches:
pergola_switch_rain:
unique_id: "Pergola: fermeture si pluie"
value_template: "{{ is_state('input_boolean.pergola_rain', 'on') }}"
turn_on:
- action: rest_command.pergola_set_rain_on
- action: input_boolean.turn_on
entity_id: input_boolean.pergola_rain
turn_off:
- action: rest_command.pergola_set_rain_off
- action: input_boolean.turn_off
entity_id: input_boolean.pergola_rain
pergola_switch_suntracking:
unique_id: "Pergola: suivi solaire"
value_template: "{{ is_state('input_boolean.pergola_suntracking', 'on') }}"
turn_on:
- action: rest_command.pergola_set_suntracking_on
- action: input_boolean.turn_on
entity_id: input_boolean.pergola_suntracking
turn_off:
- action: rest_command.pergola_set_suntracking_off
- action: input_boolean.turn_off
entity_id: input_boolean.pergola_suntracking
pergola_switch_shade:
unique_id: "Pergola: ombrage minimum"
value_template: "{{ is_state('input_boolean.pergola_shade', 'on') }}"
turn_on:
- action: rest_command.pergola_set_shade_on
- action: input_boolean.turn_on
entity_id: input_boolean.pergola_shade
turn_off:
- action: rest_command.pergola_set_shade_off
- action: input_boolean.turn_off
entity_id: input_boolean.pergola_shade
pergola_switch_winter:
unique_id: "Pergola: hivernage"
value_template: "{{ is_state('input_boolean.pergola_winter', 'on') }}"
turn_on:
- action: rest_command.pergola_set_winter_on
- action: input_boolean.turn_on
entity_id: input_boolean.pergola_winter
turn_off:
- action: rest_command.pergola_set_winter_off
- action: input_boolean.turn_off
entity_id: input_boolean.pergola_winter
Tu n’as plus qu’à copier mon tableau de bord
title: Piscine
icon: mdi:pool
cards:
- type: vertical-stack
cards:
- type: horizontal-stack
cards:
- show_name: true
show_icon: true
type: button
tap_action:
action: call-service
service: rest_command.pompe_auto
target: {}
show_state: false
icon: mdi:pump
name: " AUTO"
icon_height: 20px
- show_name: true
show_icon: true
type: button
tap_action:
action: call-service
service: rest_command.pompe_on
target: {}
show_state: false
name: " ON"
icon: mdi:pump
icon_height: 20px
- show_name: true
show_icon: true
type: button
tap_action:
action: call-service
service: rest_command.pompe_off
target: {}
icon: mdi:pump-off
name: "OFF"
show_state: false
icon_height: 20px
title: Oklyn Pompe de la Piscine
- type: entities
entities:
- entity: sensor.statut_pompe_piscine
secondary_info: none
- entity: sensor.mode_pompe_piscine
secondary_info: none
state_color: true
- graph: none
type: sensor
entity: sensor.temps_de_fonctionnement_pompe
detail: 1
- type: gauge
needle: false
severity:
green: 50
yellow: 650
red: 1000
max: 1000
entity: sensor.piscine_power
- type: history-graph
entities:
- entity: sensor.statut_pompe_piscine
title: Piscine Historique de la pompe
logarithmic_scale: false
hours_to_show: 24
- type: vertical-stack
cards:
- type: entities
entities:
- entity: script.demarrer_et_arreter_la_pompe_apres_la_duree_definie_2
- type: vertical-stack
cards:
- type: custom:mini-graph-card
entities:
- entity: sensor.air_piscine
name: Exterieur
- entity: sensor.temp_piscine
name: Piscine
show_legend: true
show_points: true
line_width: 2
hours_to_show: 24
- type: vertical-stack
cards:
- type: custom:pool-monitor-card
display:
language: fr
colors:
normal_color: "#00b894"
sensors:
ph:
entity: sensor.ph_piscine_2
orp:
entity: sensor.redox_piscine_2
title: Capteurs de la piscine
- type: vertical-stack
cards:
- type: vertical-stack
cards:
- type: vertical-stack
cards:
- type: entities
entities:
- entity: switch.lumiere_piscine
- entity: sensor.statut_aux_2
- entity: sensor.conso_lumiere_piscine_power
name: "Conso Lumière "
state_color: true
title: Lumière de la pisicne
- type: vertical-stack
cards:
- type: glance
entities:
- entity: sensor.vidange_et_remplissage_des_piscines_restrictions_xxx
title: Restrictions
- type: logbook
title: Activité de la Pompe Piscine
entities:
- sensor.statut_pompe_piscine
- switch.lumiere_piscine
hours_to_show: 24
path: "5"
badges:
- type: entity
show_name: false
show_state: true
show_icon: true
color: ""
entity: sensor.temperature_exterieure_temperature
J’ai oublié, faut remplacer les
X-API-TOKEN: !secret oklyn_api
par ton api ou mettre
oklyn_api:ton api de l’appli oklyn à la place de ce message
dans le fichier secrets.yaml
Bonjour, depuis le 1er juin, mon boîtier Oklyn est HS et malheureusement, je ne serai plus en mesure de vous aider avec celui-ci.
Je suis en train de voir pour m’en faire un moi-même, vu que c’est un ESP12S.
Je vais partir avec une base ESP32 et m’inspirer de ce tuto https://forum.hacf.fr/t/ph-metre-diy-via-esphome/640
ah mince, il est hs a cause de quoi ?
Un petit coup d’orage et hop plus de boîtier. L’alimentation fonctionne le fusible est ok mais rien ne s’allume. Faut que j’essaie de faire démarrer que la puce pour voir