ESP32 - Afficheur Tempo

Bonsoir,

voici mon premier projet ESP32 afin de visualiser le journée EDF-TEMPO du jour, HC ou HP, et la journée du lendemain.

Tarifs : Bleu, Blanc, Rouge, donc leds de la couleur sur la partie haute.
1 led HP, 2 leds HC (ici HC Blanc)

En dessous, une ligne pour avertir de la couleur du lendemain:
Bleu, Blanc, Rouge, ce qui me permet de prévoir mes machines, charges VE au cas où…
Orange quand la journée n’est pas encore définie.

  • ESP32: 2€58
  • 10 x Leds (il m’en reste bcp pour d’autres projets): 0€14
  • 3 x Résistances 220 ohms (idem): 0€03
  • Alimention + cable USB : environ 3€00

Total : entre 5€ et 6€

Programmation sur Node-Red

Affichage sur HA
home assistant

Liens :

Je n’utilise que 3 résistances, car chacune d’elles ne voit passer qu’une intensité, car une seule led ne sera allumée dans la série. Si les leds vous paraissent trop ‹ brillantes ›, augmenter l’impédance des résistances.

esp-tempo.yaml

esphome:
  name: esp-tempo
  friendly_name: esp-tempo

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "mRRvO/+ZXyb8+Zz1IfCfvIZC6oWqxO7JmWqaZmHn+Y4="

ota:
  password: "202acb2862e631aa837930903087aa5d"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp-Tempo Fallback Hotspot"
    password: "hocSgP8ZrLuZ"

captive_portal:


# Example configuration entry
light:
  - platform: binary
    name: "BLEU HC"
    output: light_output13

  - platform: binary
    name: "BLEU HP"
    output: light_output12

  - platform: binary
    name: "BLANC HC"
    output: light_output14

  - platform: binary
    name: "BLANC HP"
    output: light_output27
  
  - platform: binary
    name: "ROUGE HC"
    output: light_output26

  - platform: binary
    name: "ROUGE HP"
    output: light_output25

  - platform: binary
    name: "DEMAIN BLEU"
    output: light_output33

  - platform: binary
    name: "DEMAIN BLANC"
    output: light_output32

  - platform: binary
    name: "DEMAIN ROUGE"
    output: light_output15

  - platform: binary
    name: "DEMAIN INCONNU"
    output: light_output02
  
output:
  - id: light_output13
    platform: gpio
    pin: GPIO13

  - id: light_output12
    platform: gpio
    pin: GPIO12

  - id: light_output14
    platform: gpio
    pin: GPIO14

  - id: light_output27
    platform: gpio
    pin: GPIO27

  - id: light_output26
    platform: gpio
    pin: GPIO26

  - id: light_output25
    platform: gpio
    pin: GPIO25

  - id: light_output33
    platform: gpio
    pin: GPIO33

  - id: light_output32
    platform: gpio
    pin: GPIO32

  - id: light_output15
    platform: gpio
    pin: GPIO15

  - id: light_output02
    platform: gpio
    pin: GPIO02esphome:
  name: esp-tempo
  friendly_name: esp-tempo

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "mRRvO/+ZXyb8+Zz1IfCfvIZC6oWqxO7JmWqaZmHn+Y4="

ota:
  password: "202acb2862e631aa837930903087aa5d"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp-Tempo Fallback Hotspot"
    password: "hocSgP8ZrLuZ"

captive_portal:


# Example configuration entry
light:
  - platform: binary
    name: "BLEU HC"
    output: light_output13

  - platform: binary
    name: "BLEU HP"
    output: light_output12

  - platform: binary
    name: "BLANC HC"
    output: light_output14

  - platform: binary
    name: "BLANC HP"
    output: light_output27
  
  - platform: binary
    name: "ROUGE HC"
    output: light_output26

  - platform: binary
    name: "ROUGE HP"
    output: light_output25

  - platform: binary
    name: "DEMAIN BLEU"
    output: light_output33

  - platform: binary
    name: "DEMAIN BLANC"
    output: light_output32

  - platform: binary
    name: "DEMAIN ROUGE"
    output: light_output15

  - platform: binary
    name: "DEMAIN INCONNU"
    output: light_output02
  
output:
  - id: light_output13
    platform: gpio
    pin: GPIO13

  - id: light_output12
    platform: gpio
    pin: GPIO12

  - id: light_output14
    platform: gpio
    pin: GPIO14

  - id: light_output27
    platform: gpio
    pin: GPIO27

  - id: light_output26
    platform: gpio
    pin: GPIO26

  - id: light_output25
    platform: gpio
    pin: GPIO25

  - id: light_output33
    platform: gpio
    pin: GPIO33

  - id: light_output32
    platform: gpio
    pin: GPIO32

  - id: light_output15
    platform: gpio
    pin: GPIO15

  - id: light_output02
    platform: gpio
    pin: GPIO02
esp-tempo.yaml
esphome:
  name: esp-tempo
  friendly_name: esp-tempo

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "mRRvO/+ZXyb8+Zz1IfCfvIZC6oWqxO7JmWqaZmHn+Y4="

ota:
  password: "202acb2862e631aa837930903087aa5d"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp-Tempo Fallback Hotspot"
    password: "hocSgP8ZrLuZ"

captive_portal:


# Example configuration entry
light:
  - platform: binary
    name: "BLEU HC"
    output: light_output13

  - platform: binary
    name: "BLEU HP"
    output: light_output12

  - platform: binary
    name: "BLANC HC"
    output: light_output14

  - platform: binary
    name: "BLANC HP"
    output: light_output27
  
  - platform: binary
    name: "ROUGE HC"
    output: light_output26

  - platform: binary
    name: "ROUGE HP"
    output: light_output25

  - platform: binary
    name: "DEMAIN BLEU"
    output: light_output33

  - platform: binary
    name: "DEMAIN BLANC"
    output: light_output32

  - platform: binary
    name: "DEMAIN ROUGE"
    output: light_output15

  - platform: binary
    name: "DEMAIN INCONNU"
    output: light_output02
  
output:
  - id: light_output13
    platform: gpio
    pin: GPIO13

  - id: light_output12
    platform: gpio
    pin: GPIO12

  - id: light_output14
    platform: gpio
    pin: GPIO14

  - id: light_output27
    platform: gpio
    pin: GPIO27

  - id: light_output26
    platform: gpio
    pin: GPIO26

  - id: light_output25
    platform: gpio
    pin: GPIO25

  - id: light_output33
    platform: gpio
    pin: GPIO33

  - id: light_output32
    platform: gpio
    pin: GPIO32

  - id: light_output15
    platform: gpio
    pin: GPIO15

  - id: light_output02
    platform: gpio
    pin: GPIO02esphome:
  name: esp-tempo
  friendly_name: esp-tempo

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "mRRvO/+ZXyb8+Zz1IfCfvIZC6oWqxO7JmWqaZmHn+Y4="

ota:
  password: "202acb2862e631aa837930903087aa5d"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp-Tempo Fallback Hotspot"
    password: "hocSgP8ZrLuZ"

captive_portal:


# Example configuration entry
light:
  - platform: binary
    name: "BLEU HC"
    output: light_output13

  - platform: binary
    name: "BLEU HP"
    output: light_output12

  - platform: binary
    name: "BLANC HC"
    output: light_output14

  - platform: binary
    name: "BLANC HP"
    output: light_output27
  
  - platform: binary
    name: "ROUGE HC"
    output: light_output26

  - platform: binary
    name: "ROUGE HP"
    output: light_output25

  - platform: binary
    name: "DEMAIN BLEU"
    output: light_output33

  - platform: binary
    name: "DEMAIN BLANC"
    output: light_output32

  - platform: binary
    name: "DEMAIN ROUGE"
    output: light_output15

  - platform: binary
    name: "DEMAIN INCONNU"
    output: light_output02
  
output:
  - id: light_output13
    platform: gpio
    pin: GPIO13

  - id: light_output12
    platform: gpio
    pin: GPIO12

  - id: light_output14
    platform: gpio
    pin: GPIO14

  - id: light_output27
    platform: gpio
    pin: GPIO27

  - id: light_output26
    platform: gpio
    pin: GPIO26

  - id: light_output25
    platform: gpio
    pin: GPIO25

  - id: light_output33
    platform: gpio
    pin: GPIO33

  - id: light_output32
    platform: gpio
    pin: GPIO32

  - id: light_output15
    platform: gpio
    pin: GPIO15

  - id: light_output02
    platform: gpio
    pin: GPIO02

Je récupère sur NOD RED les binary light

Je récupère sur NODE RED les binary light
  • BLEU HC ou HP
  • BLANC HC ou HP
  • ROUGE HC ou HP
  • DEMAIN BLEU / BLANC / ROUGE / INCONNU
    • BLEU HC ou HP
  • BLANC HC ou HP
  • ROUGE HC ou HP
  • DEMAIN BLEU / BLANC / ROUGE / INCONNU
3 « J'aime »

Merci pour le partage.

1 « J'aime »

Bonjour, pas bête histoire de bien visualiser ;).
Tu pourrais partager ton schéma de câblage et le code esp, s’il te plait ?

Merci.

Salut,

En récupérant test sensors aujourd’hui et demain de HA, tu peux tout faire dans EspHome sans avoir à passer par NodeRed. Ca te ferait une couche en moins.

Merci pour l’information, étant débuttant sur HA, je suis auto didacte et j’apprends petit à petit.
Si vous avez une piste afin que je me forme à cela ?

C’est un bon petit projet pour se faire la main :slight_smile:

Par rapport à ce dont je parlais, je suppose que dans HA vous avez à disposition 2 entitiés de devraient être équivalent à ceci:

  • sensor.tempo_aujourd_hui
  • sensor.tempo_demain

Chacun ayant pour état un texte qui donne la couleur « BLANC », « TEMPO_BLANC », « HCJW » ou similaire peu importe…

EspHome à la possibilité de récupérer des entités HA et leur valeur, ce qui permet de gérer de la logique quand celle-ci change.

Dans le cas présent comme l’état de nos sensors est un test on peut utiliser le composant « Home Assistant Text Sensor ».

text_sensor:
  - platform: homeassistant
    name: "Tempo Demain"
    id: t_demain
    entity_id: sensor.tempo_demain

Juste avec les lignes ci-dessus on peu accéder depuis EspHome à la couleur correspondante, ce qui est un bon début.

Mais en utilisant les automatisations de EspHome on peu lancer le changement de la led allumée directement avec le trigger « on_value ».

Ca pourrait faire chose comme ça:
(je n’ai pas testé mais c’est l’idée de base, il faut adapter un peu :wink: )

text_sensor:
  - platform: homeassistant
    name: "Tempo Demain"
    id: t_demain
    entity_id: sensor.tempo_demain
    on_value:
      - if:
          condition:
            text_sensor.state:
              id: t_demain
              state: 'BLEU'
          then:
            - light.turn_on: id_ma_led_bleue
      - if:
          condition:
            text_sensor.state:
              id: t_demain
              state: 'BLANC'
          then:
            - light.turn_on: id_ma_led_blanche
      - if:
          condition:
            text_sensor.state:
              id: t_demain
              state: 'ROUGE'
          then:
            - light.turn_on: id_ma_led_rouge

1 « J'aime »

Au top c est exactement ce que je cherchais:

mais effectivement les LEDs ont l’air très brillantes.

Une petite idée pour la valeur que je pourrais prendre pour ne pas avoir de lumière trop forte, svp?

Merci pour le partage en tous cas, je vais commander ça.

1 « J'aime »

Effectivement, j’avoue la luminosité est importante, cela éclaire le salon dans la nuit…
De plus j’avais pris de leds très lumineuses.

Je pense qu’en mettant 1.5x l’impédance voir 2x, cela pourrait être mieux, mais je n’ai pas fait d’essais.

Mon fils étant dans l’électronique m’avait conseillé plus de 300 ohms

Utilise le pwm pour les led comme ça tu peux choisir la luminosité.
https://esphome.io/components/output/ledc.html