Script ESPHOME module Volet roulant ESP8266

Bonjour,

J’ai retrouvé dans mes tiroirs un module éléctrodragon que je me servais pour mes VR sous jeedom avec un script arduino perso.
Je me suis amusé ce matin a crée un script sous ESPHome.
Mes besoins sont:

  • Pilotable via HA (Up/Dwn/Stp/position)
  • Pilotable via l’interrupteur mural céliane
  • Gestion des temps de montée et descente différent
  • Sécurité moteur, les 2 relais ne peuvent pas être activés en même temps

Je n’ai pas testé en vrai mais sur mon bureau ça à l’air de plutôt bien fonctionner

Je vous met le script si jamais vous voulez tester ou apporter des modifications.

Bonne journée.

substitutions:
  device_name: volet_test
  friendly_name: Volet test
  time_open : 5s
  time_close: 2s

esphome:
  name: ${device_name}
  friendly_name: ${friendly_name}

esp8266:
  board: esp01_1m

web_server:
  port: 80
  
# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: ""

ota:
  password: ""

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "${device_name} Fallback Hotspot"
    password: ""

captive_portal:

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO5
      mode: INPUT_PULLUP
      inverted: True
    name: "Bouton ouverture"
    on_press:
      then:
        - cover.open: cover_1
    on_release:
      then:
        - cover.stop: cover_1

  - platform: gpio
    pin:
      number: GPIO4
      mode: INPUT_PULLUP
      inverted: True
    name: "Bouton fermeture"
    on_press:
      then:
        - cover.close: cover_1
    on_release:
      then:
        - cover.stop: cover_1

  - platform: status
    name: "Status"

switch:
  - platform: restart
    name: "Redémarrage"

  - platform: gpio
    name: "Relay 1"
    pin: GPIO13
    id: 'relay_1'
    interlock: [relay_2]
    restore_mode: ALWAYS_OFF

  - platform: gpio
    name: "Relay 2"
    pin: GPIO12
    id: 'relay_2'
    interlock: [relay_1]
    restore_mode: ALWAYS_OFF
    
text_sensor:
  - platform: wifi_info
    ip_address:
      name: IP 
  - platform: template
    name: "Temps d'ouverture"
    lambda: |-
      return {"${time_open}"};   
  - platform: template
    name: "Temps de fermeture"
    lambda: |-
      return {"${time_close}"};

cover:
  - platform: feedback
    name: "Volet"
    device_class: shutter
    id: cover_1
    assumed_state: True
    open_action:
      - switch.turn_on: relay_1
    open_duration: ${time_open}
    close_action:
      - switch.turn_on: relay_2
    close_duration: ${time_close}
    stop_action:
      - switch.turn_off: relay_1
      - switch.turn_off: relay_2