ESP Home, utiliser un input_number

Bonjour,
J’ai un peu de mal avec la syntaxe YAML…
Sous ESP-Home je souhaite réaliser un programmateur d’arrosage. Après m’être inspiré de ce qui existait déjà j’ai réussi a avoir quelque chose de fonctionnel :

esphome:
  name: progpotager
  friendly_name: progPotager

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

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

ota:
  password: "XXXXX"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: 192.168.0.43
    gateway: 192.168.0.1
    subnet: 255.255.255.0
    dns1: 192.168.0.1
  fast_connect: true

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "ProgPotager Hotspot"
    password: "XXXXX"

captive_portal:

web_server:
  port: 80
  ota: false

# WIFI / Systeme
time:

  - platform: sntp
    id: sntp_time
    timezone: Europe/Paris
    servers: 
      - ntp.laas.fr
      - ntp1.onecert.fr
      - ntp.univ-rennes2.fr

on_time:
      - seconds: 0
        minutes: 20
        hours: 6
        days_of_week: 1-7
        then:
          - sprinkler.start_full_cycle: sprinkler_ctrlr

text_sensor:
  - platform: template
    name: "Current time"
    lambda: |-
      char str[17];
      time_t currTime = id(sntp_time).now().timestamp;
      strftime(str, sizeof(str), "%Y-%m-%d %H:%M", localtime(&currTime));
      return  { str };
    update_interval: 60s

binary_sensor:
  - platform: status
    name: "ProgJardin Status"

number:
  - platform: template
    name: "Heure"
    optimistic: true
    min_value: 0
    max_value: 23
    step: 1
    id: heure_prog

  - platform: template
    name: "Minutes"
    optimistic: true
    min_value: 0
    max_value: 59
    step: 1
    id: minute_prog

  - platform: template
    name: "Durée circuit 1"
    optimistic: true
    min_value: 0
    max_value: 59
    step: 1
    id: duree_circuit_1

  - platform: template
    name: "Durée circuit 2"
    optimistic: true
    min_value: 0
    max_value: 59
    step: 1
    id: duree_circuit_2

  - platform: template
    name: "Durée circuit 3"
    optimistic: true
    min_value: 0
    max_value: 59
    step: 1
    id: duree_circuit_3

  - platform: template
    name: "Durée circuit 4"
    optimistic: true
    min_value: 0
    max_value: 59
    step: 1
    id: duree_circuit_4

  - platform: template
    name: "Durée circuit 5"
    optimistic: true
    min_value: 0
    max_value: 59
    step: 1
    id: duree_circuit_5

sensor:
# Qualité du signal
  - platform: wifi_signal
    name: "Signal Wifi"
    update_interval: 60s

# Temps de fonctionnement
  - platform: uptime
    name: "Allumé depuis (s)"
    id: uptime_sec

  - platform: adc
    pin: GPIO36
    name: "Tension Panneau"
    filters:
      - multiply: 3.5
    update_interval: 60s

  - platform: adc
    pin: GPIO39
    name: "Tension Batterie"
    filters:
      - multiply: 3
    update_interval: 60s        

switch:
# Bouton de redémarrage
  - platform: restart
    name: "Redémarrage"

# GPIO vers Relais : switches
  - platform: gpio
    name: "ProgJardin Relay 1"
    pin: GPIO15
    inverted: True
    internal: True
    id: switch_r1

  - platform: gpio
    name: "ProgJardin Relay 2"
    pin: GPIO2
    inverted: True
    internal: True
    id: switch_r2

  - platform: gpio
    name: "ProgJardin Relay 3"
    pin: GPIO4
    inverted: True
    internal: True
    id: switch_r3

  - platform: gpio
    name: "ProgJardin Relay 4"
    pin: GPIO16
    inverted: True
    internal: True
    id: switch_r4

  - platform: gpio
    name: "ProgJardin Relay 5"
    pin: GPIO17
    inverted: True
    internal: True
    id: switch_r5

  - platform: gpio
    name: "ProgJardin Relay 6"
    pin: GPIO5
    inverted: True
    internal: True
    id: switch_r6

  - platform: gpio
    name: "ProgJardin Relay 7"
    pin: GPIO18
    inverted: True
    internal: True
    id: switch_r7

  - platform: gpio
    name: "ProgJardin Relay 8"
    pin: GPIO19
    inverted: True
    internal: True
    id: switch_r8

# Programateur
sprinkler:
  - id: sprinkler_ctrlr
    main_switch: "Sprinklers"
    auto_advance_switch: "Sprinklers Auto Advance"
    standby_switch: "StandBy"
    valve_overlap: 1s
    valves:
      - valve_switch: "Circuit gauche"
        enable_switch: "Active circuit Gauche"
        run_duration: 10s
        valve_switch_id: switch_r1

      - valve_switch: "Circuit droit"
        enable_switch: "Active circuit Droit"
        run_duration: 10s
        valve_switch_id: switch_r2
        
      - valve_switch: "Circuit Courges"
        enable_switch: "Active circuit Courges"
        run_duration: 10s
        valve_switch_id: switch_r3
        
      - valve_switch: "Circuit Pergola"
        enable_switch: "Active circuit Pergola"
        run_duration: 10s
        valve_switch_id: switch_r4
        
      - valve_switch: "Circuit Patates"
        enable_switch: "Active circuit Patates"
        run_duration: 10s
        valve_switch_id: switch_r5  

Pour résumer le fonctionnement, j’ai 5 circuits d’arrosage (jusqu’a 8 possibles). Une fois l’heure de début d’arrosage atteinte les 5 circuits s’activent les uns aprés les autres.

Par contre maintenant j’aimerais pouvoir régler l’heure de début d’arrosage dans l’interface ainsi que la durée de chaque circuit.
Par exemple avec 2 input_number (1 pour l’heure l’autre pour les minutes) et 1 input_number par circuit.
Mais je n’ai aucune idée de comment « lier » les inputs_numbers avec les variables minute,hour ou run_duration.

François

Salut,

Perso, je récupère des input number déjà créés sur HA de cette façon :

sensor:
  - platform: homeassistant
    id: brightness_pump
    entity_id: light.variateur_piscine
    attribute: brightness
    
  - platform: homeassistant
    id: ph_duree_inject_mn
    entity_id: input_number.ph_duree_inject_mn
    
  - platform: homeassistant
    id: ph_duree_inject_s
    entity_id: input_number.ph_duree_inject_s

et je les exploite comme ça :


switch:

  - platform: gpio
    restore_mode: ALWAYS_OFF
    pin:
      number: GPIO27
      inverted: true
    id: ph_moins
    name: "${friendlyname} pH"
    on_turn_on:
    - switch.turn_off: chloration
    - delay: !lambda 'return  ((id(ph_duree_inject_s).state) + (id(ph_duree_inject_mn).state * 60))*1000;'
    - switch.turn_off: ph_moins
    - delay: 2s
    - switch.turn_on: chloration