Bonjour,
À l’intention des nouveaux utilisateurs de Home Assistant, ainsi que de ceux qui effectuent la transition de Jeedom à Home Assistant et pour tous les autres…
Je vais faire une copie de mon fichiers yaml sur ce topic.
Tout d’abord, je tiens à préciser que je ne suis pas programmeur, mais plutôt un bricoleur. J’ai puisé de nombreuses informations sur ce forum, ainsi que sur celui de Jeedom et le forum Construire. Il convient également de noter que Zenisun n’existe plus en raison d’une décision judiciaire ayant entraîné sa liquidation.
Il est nécessaire d’attribuer une adresse IP fixe depuis la box, ce qui dépend de la box ainsi que du fournisseur.
Merci à:MikeBZH44,bart40140,CrottyFr,golfvert,Chris73 et d’un autre forum à Aior et WInd06
Si vous avez un problème de maintenance avec votre pergola, vous pourrez glaner des informations pour la réparer vous même sur le site forum construire https://www.forumconstruire.com/groupes/468913_zenisun.php ou https://www.forumconstruire.com/construire/topic-425853-pergola-bioclimatique-domotique.php ou https://www.forumconstruire.com/recits/recit-40583.php
Ma pergola fonctionne avec une automatition qui vérifie la position du soleil par rapport à ma résidence ainsi que les données de ma station météorologique Netatmo concernant la température et les précipitations. Si vous souhaitez recevoir ce fichier au format YAML, n’hésitez pas à me le faire savoir.
Tout d’abord, avant de me rendre au travail, je vous prie de trouver ci-joint mon fichier YAML. Il est impératif que vous remplaciez, à côté de chaque ligne, l’adresse IP par la vôtre, en veillant à modifier uniquement la partie 192.168.0.100 ; le reste doit demeurer inchangé.
Exemple "http://192.168.0.100/zns.cgi?cmd=d&p=os"
par "http://192.168.1.25/zns.cgi?cmd=d&p=os"
Quelques coquilles se cachent dans mes codes des slider. Impossible pour le moment d’éteindre correctement les lumières ou de fermer complètement le lames. La seule solution est d’utiliser un bouton off à part.
Pour aller plus vite, je vous propose d’inclure un fichier packages dans votre configuration.yaml.
Prérequis, matériels nécessaires & utilisés :
- Studio Code Server (via HACS) ou File Editor d’installé.
homeassistant:
packages: !include_dir_named packages
Vous avez un super tuto de McFly ici → tuto Organisation du fichier configuration.yaml
Ensuite, dans config, vous devez créer le fichier pergola.yaml et y copier-coller le fichier ci-dessous, sans oublier de mettre votre adresse IP à la place de la mienne.
################################
### sensor: ###
################################
sensor:
- platform: rest
name: "Pergola"
scan_interval: 15
resource: http://192.168.0.100/pergola/zns.cgi?cmd=d&p=os
json_attributes_path: "$.root"
value_template: "OK"
json_attributes:
- "gpo6" # white dimmer
- "s_elev" # Elevation
- "s_azi" # Azimut
- "s_prj" # Projection
- "user" # mode (pluie, hiver, suivi,
- "Mot0" # Moteur
- "date" # Moteur
- "sun_delay" # Actualisation
- "VDC2" # Voltage VDC2
- platform: rest
name: "Pergola Core"
scan_interval: 15
resource: http://192.168.0.100/pergola/zns.cgi?cmd=c
json_attributes_path: "$.root"
value_template: "OK"
json_attributes:
- "orient" # orientation
- "lon" # Longitude
- "lat" # Latitude
- platform: rest
resource: "http://192.168.0.100/zns.cgi?cmd=d&p=os"
name: "light_sensor_pergola_white"
unique_id: "binary_sensor.light_pergola_white"
scan_interval: 5
value_template: "{{ value_json['root']['gpo6'].split(';')[0] }}"
- platform: rest
resource: "http://192.168.0.100/zns.cgi?cmd=d&p=os"
name: "sensor_pergola_position des lames_mot0"
unique_id: "binary_sensor.sensor_pergola_position des lames_mot0"
scan_interval: 5
value_template: "{{ value_json['root']['Mot0'].split(';')[0] }}"
- platform: rest
resource: "http://192.168.0.100/zns.cgi?cmd=d&p=ios"
name: "sensor_pergola_temp inter"
unique_id: "binary_sensor.sensor_pergola_temp inter"
scan_interval: 600
value_template: "{{ value_json['root']['Temp'].split(';')[0] }}"
- platform: rest
resource: "http://192.168.0.100/zns.cgi?cmd=d&p=ios"
name: "sensor_pergola_mode"
unique_id: "binary_sensor.sensor_pergola_mode"
scan_interval: 10
value_template: "{{ value_json['root']['user'].split(';')[0] }}"
- platform: rest
resource: "http://192.168.0.100/zns.cgi?cmd=d&p=ios"
name: "sensor_pergola_conso"
unique_id: "binary_sensor.sensor_pergola_conso"
scan_interval: 600
value_template: "{{ value_json['root']['VDC2'].split(';')[0] }}"
- platform: template
sensors:
temperature_modifiee:
friendly_name: "Température interieur Corrigée pergola"
unique_id: "unique_temperature_modifiee_pergola"
unit_of_measurement: "°C"
value_template: >
{% set temperature = states('sensor.sensor_pergola_temp_inter') | float %}
{{ (temperature / 10) | round(1) }}
- platform: template
sensors:
consommation_formatee_pergola:
unique_id: "consommation_Corrigée_pergola"
friendly_name: "Consommation Pergola Formattée"
value_template: "{{ (states('sensor.sensor_pergola_conso') | float / 1000) | round(2) }}"
unit_of_measurement: "V"
device_class: energy # Classe d'entité pour l'énergie
- platform: template
sensors:
pergola_mode_display:
unique_id: "pergola_mode_display" # Identifiant unique pour ce capteur
friendly_name: "Affichage Mode Pergola"
value_template: >-
{% set mode = states('sensor.sensor_pergola_mode') | int %}
{% if mode == 4 %}
Ombrage Mini (4)
{% elif mode == 8 %}
Mode Hivernage (8)
{% elif mode == 1 %}
Fermeture si Pluie (1)
{% elif mode == 2 %}
Suivi Solaire (2)
{% else %}
Mode inconnu
{% endif %}
- platform: template
sensors:
pergola_watt:
value_template: "{{ (((states.sensor.pergola.attributes['gpo6'].split(';')[1] | float(0) ) * (states.sensor.pergola.attributes['VDC2'] | float(0) / 1000)) / 1000) | round(2, default=0) }}"
device_class: power
unit_of_measurement: 'W'
friendly_name: "Pergola lumière Watt"
pergola_dimmer:
value_template: "{{ (((states.sensor.pergola.attributes['gpo6'].split(';')[0]| float(0) ) * 100)/255) | round(0, default=0) }}"
device_class: power_factor
unit_of_measurement: '%'
friendly_name: "Pergola lumière pourcentage"
pergola_motor:
value_template: "{{ (((states.sensor.pergola.attributes['Mot0'].split(';')[0]| float(0) ) * 100)/(states.sensor.pergola.attributes['Mot0'].split(';')[1]| float(0) )) | float(0) }}"
device_class: power_factor
unit_of_measurement: '%'
friendly_name: "Pergola lames"
pergola_sundelay:
value_template: "{{ (states.sensor.pergola.attributes['sun_delay']| float(0) ) }}"
friendly_name: "Pergola actualisation"
################################
### switch: ###
################################
switch:
- 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
################################
### command_line: ###
################################
command_line:
- switch:
name: "button Lumière de la Pergola 100 %"
unique_id: "binary_sensor.Lumière de la Pergola 100 %"
command_on: >
curl -X GET -d '{"on":true}' "http://192.168.0.100/zns.cgi?cmd=l&o=64&p=255"
command_state: curl http://192.168.0.100/zns.cgi?cmd=d&p=os
value_template: "{{ value_json['status']}}"
- switch:
name: "button Lumière de la Pergola 50 %"
unique_id: "binary_sensor.Lumière de la Pergola 50 %"
command_on: >
curl -X GET -d '{"on":true}' "http://192.168.0.100/zns.cgi?cmd=l&o=64&p=130"
command_state: curl http://192.168.0.100/zns.cgi?cmd=d&p=os
value_template: "{{ value_json['status']}}"
- switch:
name: "button Lumière de la Pergola OFF"
unique_id: "binary_sensor.Lumière de la Pergola OFF"
command_on: >
curl -X GET -d '{"off":false}' "http://192.168.0.100/zns.cgi?cmd=l&o=64&p=0"
command_state: curl http://192.168.0.100/zns.cgi?cmd=d&p=os
value_template: "{{ value_json['status']}}"
- switch:
name: "Switch Lumière de la Pergola 25 %"
unique_id: "binary_sensor.Lumière de la Pergola 25 %"
command_on: >
curl -X GET -d '{"on":true}' "http://192.168.0.100/zns.cgi?cmd=l&o=64&p=75"
command_state: curl http://192.168.0.100/zns.cgi?cmd=d&p=os
value_template: "{{ value_json['status']}}"
- switch:
name: "Switch Lumière de la Pergola 75 %"
unique_id: "binary_sensor.Lumière de la Pergola 75 %"
command_on: >
curl -X GET -d '{"on":true}' "http://192.168.0.100/zns.cgi?cmd=l&o=64&p=190"
command_state: curl http://192.168.0.100/zns.cgi?cmd=d&p=os
value_template: "{{ value_json['status']}}"
- switch:
name: "slider lames de la Pergola 0"
unique_id: "binary_sensor.slider lames de la Pergola 0"
command_on: >
curl -X GET -d '{"on":true}' "http://192.168.0.100/zns.cgi?cmd=m&m=1&p=0"
command_state: curl http://192.168.0.100/zns.cgi?cmd=d&p=os
value_template: "{{ value_json['status']}}"
- switch:
name: "slider lames de la Pergola 30"
unique_id: "binary_sensor.slider lames de la Pergola 30"
command_on: >
curl -X GET -d '{"on":true}' "http://192.168.0.100/zns.cgi?cmd=m&m=1&p=190"
command_state: curl http://192.168.0.100/zns.cgi?cmd=d&p=os
value_template: "{{ value_json['status']}}"
- switch:
name: "slider lames de la Pergola 50"
unique_id: "binary_sensor.slider lames de la Pergola 50"
command_on: >
curl -X GET -d '{"on":true}' "http://192.168.0.100/zns.cgi?cmd=m&m=1&p=300"
command_state: curl http://192.168.0.100/zns.cgi?cmd=d&p=os
value_template: "{{ value_json['status']}}"
- switch:
name: "slider lames de la Pergola 75"
unique_id: "binary_sensor.slider lames de la Pergola 75"
command_on: >
curl -X GET -d '{"on":true}' "http://192.168.0.100/zns.cgi?cmd=m&m=1&p=400"
command_state: curl http://192.168.0.100/zns.cgi?cmd=d&p=os
value_template: "{{ value_json['status']}}"
- switch:
name: "slider lames de la Pergola 100"
unique_id: "binary_sensor.slider lames de la Pergola 100"
command_on: >
curl -X GET -d '{"on":true}' "http://192.168.0.100/zns.cgi?cmd=m&m=1&p=500"
command_state: curl http://192.168.0.100/zns.cgi?cmd=d&p=os
value_template: "{{ value_json['status']}}"
################################
### binary_sensor: ###
################################
binary_sensor:
- platform: template
sensors:
pergola_rain:
value_template: "{{ ('{:04b}'.format(states.sensor.pergola.attributes['user'] | int))[3:4] }}"
unique_id: "pergola_rain2"
pergola_suntracking:
value_template: "{{ ('{:04b}'.format(states.sensor.pergola.attributes['user'] | int))[2:3] }}"
unique_id: "pergola_suntracking2"
pergola_shade:
value_template: "{{ ('{:04b}'.format(states.sensor.pergola.attributes['user'] | int))[1:2] }}"
unique_id: "pergola_shade2"
pergola_winter:
value_template: "{{ ('{:04b}'.format(states.sensor.pergola.attributes['user'] | int))[0:1] }}"
unique_id: "pergola_winter2"
pergola_status:
device_class: connectivity
value_template: "{{ states.binary_sensor.pergolahttp.state }}"
unique_id: "pergola_status2"
################################
### group: ###
################################
group:
pergola_modes:
name: "Modes Pergola"
entities:
- switch.pergola_switch_rain
- switch.pergola_switch_suntracking
- switch.pergola_switch_shade
- switch.pergola_switch_winter
################################
### cover: ###
################################
cover:
- platform: template
covers:
pergola_motor:
friendly_name: "Pergola: lames"
#value_template: "{{ states.sensor.pergola_motor.state|int > 0 }}"
position_template: "{{ states.sensor.pergola_motor.state|int }}"
open_cover:
action: rest_command.pergola_set_motorlevel_open
close_cover:
action: rest_command.pergola_set_motorlevel_close
set_cover_position:
action: rest_command.pergola_set_motorlevel
data:
position: "{{position}}"
device_class: shutter
icon_template: >-
{% if states('sensor.pergola_motor')|float > 0 %}
hass:electric-switch
{% else %}
mdi:electric-switch-closed
{% endif %}
################################
### rest_command: ###
################################
rest_command:
pergola_set_brightnesslevel:
url: http://192.168.0.100/zns.cgi?cmd=l&o=64&p={{ brightness }}
method: GET
pergola_set_light_off:
url: http://192.168.0.100/zns.cgi?cmd=l&o=64&p=0
method: GET
pergola_set_light_on:
url: http://192.168.0.100/zns.cgi?cmd=l&o=64&p=25
method: GET
pergola_set_time:
url: http://192.168.0.100/zns.cgi?cmd=u&p=0&v={{ utcnow().strftime("%s") | timestamp_utc() }}
method: GET
pergola_set_latitude:
url: http://192.168.0.100/zns.cgi?cmd=f&p=41&v=7.480043
method: GET
pergola_set_longitude:
url: http://192.168.1.40/zns.cgi?cmd=f&p=42&v=48.123057
method: GET
pergola_set_orientation:
url: http://192.168.0.100/zns.cgi?cmd=u&p=10&v=235
method: GET
pergola_set_rain_off:
url: http://192.168.0.100/zns.cgi?cmd=u&p=3&v={{ (0 | int *1) + (is_state('binary_sensor.pergola_suntracking','on') | int *2) + (is_state('binary_sensor.pergola_shade','on') | int *4) + (is_state('binary_sensor.pergola_winter','on') | int *8) }}
method: GET
pergola_set_rain_on:
url: http://192.168.0.100/zns.cgi?cmd=u&p=3&v={{ (1 | int *1) + (is_state('binary_sensor.pergola_suntracking','on') | int *2) + (is_state('binary_sensor.pergola_shade','on') | int *4) + (is_state('binary_sensor.pergola_winter','on') | int *8) }}
method: GET
pergola_set_suntracking_off:
url: http://192.168.0.100/zns.cgi?cmd=u&p=3&v={{ (is_state('binary_sensor.pergola_rain','on') | int *1) + (0 | int *2) + (is_state('binary_sensor.pergola_shade','on') | int *4) + (is_state('binary_sensor.pergola_winter','on') | int *8) }}
method: GET
pergola_set_suntracking_on:
url: http://192.168.0.100/zns.cgi?cmd=u&p=3&v={{ (is_state('binary_sensor.pergola_rain','on') | int *1) + (1 | int *2) + (is_state('binary_sensor.pergola_shade','on') | int *4) + (is_state('binary_sensor.pergola_winter','on') | int *8) }}
method: GET
pergola_set_shade_off:
url: http://192.168.0.100/zns.cgi?cmd=u&p=3&v={{ (is_state('binary_sensor.pergola_rain','on') | int *1) + (is_state('binary_sensor.pergola_suntracking','on') | int *2) + (0 | int *4) + (is_state('binary_sensor.pergola_winter','on') | int *8) }}
method: GET
pergola_set_shade_on:
url: http://192.168.0.100/zns.cgi?cmd=u&p=3&v={{ (is_state('binary_sensor.pergola_rain','on') | int *1) + (is_state('binary_sensor.pergola_suntracking','on') | int *2) + (1 | int *4) + (is_state('binary_sensor.pergola_winter','on') | int *8) }}
method: GET
pergola_set_winter_off:
url: http://192.168.0.100/zns.cgi?cmd=u&p=3&v={{ (is_state('binary_sensor.pergola_rain','on') | int *1) + (is_state('binary_sensor.pergola_suntracking','on') | int *2) + (is_state('binary_sensor.pergola_shade','on') | int *4) + (0 | int *8) }}
method: GET
pergola_set_winter_on:
url: http://192.168.0.100/zns.cgi?cmd=u&p=3&v={{ (is_state('binary_sensor.pergola_rain','on') | int *1) + (is_state('binary_sensor.pergola_suntracking','on') | int *2) + (is_state('binary_sensor.pergola_shade','on') | int *4) + (1 | int *8) }}
method: GET
pergola_set_motorlevel:
url: http://192.168.0.100/zns.cgi?cmd=m&m=1&p={{ (((position * states.sensor.pergola.attributes['Mot0'].split(';')[2]|int) * states.sensor.pergola.attributes['Mot0'].split(';')[1]|int)/100) | round(0) }}
method: GET
pergola_set_motorlevel_close:
url: http://192.168.0.100/zns.cgi?cmd=m&m=1&p={{ states.sensor.pergola.attributes['Mot0'].split(';')[1]| int }}
method: GET
pergola_set_motorlevel_open:
url: http://192.168.0.100/zns.cgi?cmd=m&m=1&p=0
method: GET
pergola_set_sundelay:
url: http://192.168.0.100/zns.cgi?cmd=u&p=4&v={{ urlInput | round(0) }}
method: GET
Toujours à corriger (27_04_2025) :
*Dans la partie switch pergola off (modification de la commande) remplace d’une lettre « a » par « p »: merci Chris73 pour la correction.
*scanner le wifi également avec cette commande
http://192.168.xxx.xxx/zns.cgi?cmd=s&p=s
Et on récupère la liste des réseaux avec cette commande
http://zenisun.local/zns.cgi?cmd=s&p=g
- Les sliders lumières et les volets qui ne s’éteignent pas et qui ne fonctionnent pas correctement.
Voici un exemple de ce que vous avez après avoir complété votre fichier yaml
A vous de l’améliorer, moi par exemple il est comme ceci