Afficheur déporté Lyligo S3 / esphome / Home assistant

Plus d'informations
24 Nov 2024 18:49 - 01 Déc 2024 16:41 #1 par Paps42
Bonjour,

Après quelques galère sur la version afficheur déporté sous arduino, j'ai copié le type d'affichage de Baroudeur en la passant sur esphome et récupération des données direct dans home assistant.

je partage ainsi ma version si d'autres personnes décident de faire de meme.
cette version intègre la récupération des couleurs tempo RTE du jour et du lendemain.
également les prévisions solaires en J et J+1.

ceci effectivement en fonction de la config HA,
ici récupération des prévisions solaire via Solcast: www.solcast.com/
récupération des couleurs tempo via HACS : RTE TEMPO

il faudra remplacer les passwords par les votre ainsi que mettre a jour suivant vos sensors.

aucune invention, simplement une autre façon d'utiliser un lyligo S3 display via ESPHOME


esphome:
  name: lilygo-s3
  friendly_name: Lilygo_S3
  platformio_options:
    board_build.f_flash: 80000000L
    board_build.partitions: default_16MB.csv
    board_build.arduino.memory_type: qio_opi

external_components:
  - source: github://landonr/lilygo-tdisplays3-esphome
    components: [tdisplays3]

esp32:
  board: esp32-s3-devkitc-1
  variant: esp32s3
  framework:
    type: arduino
  flash_size: 16MB

logger:

api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxx"

ota:
  platform: esphome
  password: "xxxxxxxxxxxxxxxxxxxxxxxxxxx"

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

  ap:
    ssid: "Lilygo-S3 Fallback Hotspot"
    password: "xxxxxxxxxxxxxxxxxxxxxxxxx"

captive_portal:

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO0
      inverted: true
    name: "Button 1"
    on_press:
      then:
        - light.turn_on: backlight
  - platform: gpio
    pin:
      number: GPIO14
      inverted: true
    name: "Button 2"
    on_press:
      then:
        - light.turn_on: backlight

output:
  - platform: ledc
    pin: GPIO38
    id: gpio38
    frequency: 2000

light:
  - platform: monochromatic
    output: gpio38
    id: backlight
    name: "Backlight"
    restore_mode: RESTORE_DEFAULT_ON

interval:
  - interval: 60s
    then:
      - if:
          condition:
            lambda: 'return id(calcul_enpv_instant_positif).state < 10;'
          then:
            - light.turn_off: backlight
      - if:
          condition:
            lambda: 'return id(calcul_enpv_instant_positif).state > 11;'
          then:
            - light.turn_on: backlight

display:
  - platform: tdisplays3
    id: disp
    update_interval: 10s
    rotation: 90
    lambda: |-
      // Dessiner les cadres en blanc pour les données
      it.rectangle(10, 5, 240, 55, Color(255, 255, 255));   // Rectangle 1
      it.rectangle(10, 60, 240, 55, Color(255, 255, 255));  // Rectangle 2
      it.rectangle(10, 115, 240, 55, Color(255, 255, 255)); // Rectangle 3

      // Dessiner le cadre pour l'heure et la date
      it.rectangle(248, 5, 66, 55, Color(255, 255, 255));  // Rectangle pour l'heure et la date combinées

      // Colorier le rond de la température du cumulus selon les conditions
      if (id(temperature_max_cumulus_shelly_12heures).has_state()) {
        if (id(temperature_max_cumulus_shelly_12heures).state < 20) {
          it.circle(40, 88, 23, Color(255, 255, 255)); // Blanc si température inférieure à 20°
        } else if (id(temperature_max_cumulus_shelly_12heures).state >= 20.1 && id(temperature_max_cumulus_shelly_12heures).state <= 44.9) {
          it.circle(40, 88, 23, Color(0, 0, 255)); // Bleu si température entre 20.1° et 44.9°
        } else if (id(temperature_max_cumulus_shelly_12heures).state >= 45 && id(temperature_max_cumulus_shelly_12heures).state <= 65) {
          it.circle(40, 88, 23, Color(0, 255, 0)); // Vert si température entre 45° et 65°
        } else if (id(temperature_max_cumulus_shelly_12heures).state >= 65.1) {
          it.circle(40, 88, 23, Color(255, 0, 0)); // Rouge si température supérieure à 65°
        }
      }

      // Afficher la valeur de la température du cumulus dans le rond
      it.printf(23, 80, id(roboto_smaller), Color(255, 255, 255), "%.1f °", id(shelly_temperature).state);

      // Colorer le rectangle du milieu en fonction du capteur rte_tempo_couleur_actuelle
      if (id(rte_tempo_couleur_actuelle).has_state()) {
        if (id(rte_tempo_couleur_actuelle).state == 1) {
            it.rectangle(248, 60, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
            it.filled_rectangle(250, 62, 62, 51, Color(0, 0, 255));   // Bleu
        } else if (id(rte_tempo_couleur_actuelle).state == 2) {
            it.rectangle(248, 60, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
            it.filled_rectangle(250, 62, 62, 51, Color(255, 255, 255));  // Blanc
        } else if (id(rte_tempo_couleur_actuelle).state == 3) {
            it.rectangle(248, 60, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
            it.filled_rectangle(250, 62, 62, 51, Color(255, 0, 0));  // Rouge
        } else if (id(rte_tempo_couleur_actuelle).state == 4) {
            it.rectangle(248, 60, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
            it.filled_rectangle(250, 62, 62, 51, Color(255, 255, 0));  // Jaune si couleur inconnue
        }
      } else {
        it.rectangle(248, 60, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
        it.filled_rectangle(250, 62, 62, 51, Color(255, 255, 0));  // Jaune si aucune donnée
      }

      // Afficher la valeur de la prévision Solcast jour dans le rectangle du milieu
      it.printf(275, 62, id(roboto_smaller), Color(0, 0, 0), "J");
      it.printf(265, 85, id(roboto_large), Color(0, 0, 0), "%.1f", id(solcast_pv_forecast_previsions_pour_aujourd_hui).state); 

      // Afficher la valeur max de la température du cumulus à droite du rectangle gauche du milieu
      it.printf(200, 78, id(roboto_smaller), Color(255, 255, 255), "Max");
      it.printf(200, 95, id(roboto_smaller), Color(255, 255, 255), "%.1f °", id(temperature_max_cumulus_shelly_12heures).state);

      // Colorer le rectangle du bas en fonction du capteur rte_tempo_prochaine_couleur
      if (id(rte_tempo_prochaine_couleur).has_state()) {
        if (id(rte_tempo_prochaine_couleur).state == 1) {
            it.rectangle(248, 115, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
            it.filled_rectangle(250, 117, 62, 51, Color(0, 0, 255));   // Bleu
        } else if (id(rte_tempo_prochaine_couleur).state == 2) {
            it.rectangle(248, 115, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
            it.filled_rectangle(250, 117, 62, 51, Color(255, 255, 255));  // Blanc
        } else if (id(rte_tempo_prochaine_couleur).state == 3) {
            it.rectangle(248, 115, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
            it.filled_rectangle(250, 117, 62, 51, Color(255, 0, 0));  // Rouge
        } else if (id(rte_tempo_prochaine_couleur).state == 4) {
            it.rectangle(248, 115, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
            it.filled_rectangle(250, 117, 62, 51, Color(255, 255, 0));  // Jaune si couleur inconnue
        }
      } else {
        it.rectangle(248, 115, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
        it.filled_rectangle(250, 117, 62, 51, Color(255, 255, 0));  // Jaune si aucune donnée
      }

      // Afficher la valeur de la prévision Solcast demain dans le rectangle du bas
      it.printf(270, 120, id(roboto_smaller), Color(0, 0, 0), "J+1");
      it.printf(265, 140, id(roboto_large), Color(0, 0, 0), "%.1f", id(solcast_pv_forecast_previsions_pour_demain).state);

      // Centrer les titres et les valeurs
      // Afficher les Panneaux PV
      it.printf(85, 10, id(roboto_smaller), Color(0, 255, 0), "PANNEAUX PV:");
      it.printf(110, 28, id(roboto_large), Color(0, 255, 0), "%.1f W", id(calcul_enpv_instant_positif).state);

      // Afficher le Cumulus
      it.printf(105, 65, id(roboto_smaller), Color(255, 165, 0), "CUMULUS:");
      it.printf(110, 83, id(roboto_large), Color(255, 165, 0), "%.1f W", id(msunpv_outbal).state);

      // Centrer le titre et la valeur pour la Consommation EDF
      it.printf(55, 120, id(roboto_smaller), Color(128, 128, 128), "CONSOMMATION EDF:");
      it.printf(95, 138, id(roboto_large), Color(128, 128, 128), "%.1f W", id(msunpv_powreso).state);

      // Afficher l'heure et la date dans le même rectangle en blanc
      it.strftime(252, 8, id(roboto_medium), Color(255, 255, 255), "%H:%M", id(ha_time).now());
      it.strftime(258, 40, id(roboto_smaller), Color(255, 255, 255), "%d %b", id(ha_time).now());

font:
  - file: "gfonts://Roboto"
    id: roboto
    size: 30
  - file: "gfonts://Roboto"
    id: roboto_small
    size: 20
  - file: "gfonts://Roboto"
    id: roboto_smaller
    size: 15
  - file: "gfonts://Roboto"
    id: roboto_medium
    size: 23
  - file: "gfonts://Roboto"
    id: roboto_large
    size: 25

time:
  - platform: homeassistant
    id: ha_time

sensor:
  - platform: homeassistant
    entity_id: sensor.calcul_enpv_instant_positif
    id: calcul_enpv_instant_positif
  - platform: homeassistant
    entity_id: sensor.msunpv_outbal
    id: msunpv_outbal
  - platform: homeassistant
    entity_id: sensor.msunpv_powreso
    id: msunpv_powreso
  - platform: homeassistant
    entity_id: sensor.shelly_1_temperature
    id: shelly_temperature
  - platform: homeassistant
    entity_id: sensor.tempo_couleur_numerique_jour
    id: rte_tempo_couleur_actuelle
  - platform: homeassistant
    entity_id: sensor.solcast_pv_forecast_previsions_pour_aujourd_hui
    id: solcast_pv_forecast_previsions_pour_aujourd_hui
  - platform: homeassistant
    entity_id: sensor.tempo_couleur_numerique_demain
    id: rte_tempo_prochaine_couleur
  - platform: homeassistant
    entity_id: sensor.solcast_pv_forecast_previsions_pour_demain
    id: solcast_pv_forecast_previsions_pour_demain
  - platform: homeassistant
    entity_id: sensor.temperature_max_cumulus_shelly_12heures
    id: temperature_max_cumulus_shelly_12heures
Pièces jointes :
Dernière édition: 01 Déc 2024 16:41 par Paps42.
Les utilisateur(s) suivant ont remercié: patmtp35, Tochy, DarkGamelle, jpferreira1973

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
26 Nov 2024 18:05 #2 par jpferreira1973
Réponse de jpferreira1973 sur le sujet Afficheur déporté Lyligo S3 / esphome / Home assistant
Bonsoir et merci,

Je vais mettre à jour mon afficheur afin de retrouver les couleurs TEMPO.

Cdt

José
Les utilisateur(s) suivant ont remercié: Paps42

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
26 Nov 2024 19:47 #3 par Paps42
Salut,

L’afficheur est peut être un peu moins « joli » que sous Arduino avec la version de Baroudeur.

Par contre pour ma part c’est plus facile de l’intégrer dans home assistant.

Avec les prévisions solaires et Tempo ma femme est contente.

Bonne intégration

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
27 Nov 2024 10:48 #4 par patmtp35
c'est clair avec ha on peu faire de super affichage :) github.com/patmtp35/Esphome_Fridge_display

je suis en train d en préparer un second pr le garage juste dédier au solaire et batteries .

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
27 Nov 2024 12:03 - 27 Nov 2024 12:03 #5 par Paps42
C'est Clair,

c'est toi Patmtp35 qui m'a décidé a basculer mon écran de Arduino sous ESP home.

j'ai voulu réutiliser l'esp32 S3 display (lyligo) que j'avais sans racheter un WT32 et je suis très satisfait du résultat.

Merci pour ton partage

ps: je regardais ton github sur le compteur d'eau, j'ai un Itron ou j'avais réussi à remonter les données avec un esp8266 + CC1101.
Cela tournait encore sous Arduino (je suis pas fan, je préfère du full HA) sauf que la compagnie des eaux a détecté que le compteur avait trop d'incrémentation d'envoie de données et m'a changé la tête émettrice.
du coup j'ai stoppé cette remontée d'info.
J'ai n'ai pas encore trouvé comment le faire directement depuis ESP Home.
Dernière édition: 27 Nov 2024 12:03 par Paps42.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
27 Nov 2024 12:08 #6 par samourai47
Réponse de samourai47 sur le sujet Afficheur déporté Lyligo S3 / esphome / Home assistant
Hello
Ça a l air super sympa
Tu as un lien sur le matériel nécessaire et comment le câbler?
Merci

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
27 Nov 2024 12:28 #7 par Paps42
Salut,

si tu parle du Lyligo S3 c'est ce matériel :
lilygo.cc/products/t-display-s3?variant=42585826590901

j'ai pris perso le modèle K204 qui a le boitier origine LYLIGO

niveau câblage c'est simplement un cordon USB C qu'il te faut pour l'alimenter via un adaptateur USB type téléphone.

ensuite tu intègre la carte dans ESP home sous HA. tu recopie ou t'inspire du code posté plus haut (en mettant a jour tes passwords et le nom des sensors)
Tu peux aussi supprimer les affichages que tu ne souhaite pas suivant tes capteurs HA.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
27 Nov 2024 13:14 #8 par patmtp35
c est ce qui est bon avec ces forum et le partage , on se lance sur de nouveaux defi.
pour le compteur j ai pas mal echangé avec le gars de ce git github.com/zibous/ha-watermeter/issues/46
je ne connais pas ton compteur le notre envoie les infos ttes les N seconde les gars passent devant et les recoltent. du coup c'est plu simple

tu as ca que tu as deja vu sans doute :
haade.fr/fr/blog/domotiser-compteur-eau-itron-everblu-cyble

si tuas besoin pour pas poluer ce fil mp :)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
27 Nov 2024 15:48 - 27 Nov 2024 15:48 #9 par samourai47
Réponse de samourai47 sur le sujet Afficheur déporté Lyligo S3 / esphome / Home assistant
Bon je vais commander celui ci. Il a l'air identique?
Aliexpp

Merci
Dernière édition: 27 Nov 2024 15:48 par samourai47.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
27 Nov 2024 18:52 #10 par samourai47
Réponse de samourai47 sur le sujet Afficheur déporté Lyligo S3 / esphome / Home assistant
Je vais potasser, mais d'ici la reception un petit tuto rapide sur comment installer et configurer tout ca.... serait sympa

J'ai installé une fois un Human sensor, mais je serai bien incapable de refaire
J'ai esphome installe dans HA en en module complementaire

Merci d'avance

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
28 Nov 2024 12:13 #11 par Paps42
pour utiliser cet afficheur dans ESP home avec le code donné plus haut, il faut respecter quelques étapes :

1 / intégrer ton esp32 display s3 (Lyligo) dans esphome (une fois fait et connecté normalement l'écran n'affiche rien mais la carte est indiqué Online)
il y a des tonnes de tuto sur ca et maintenant avec les mises a jour c'est plutot intuitif.

2/ Editer le code de ton ESP et recopier le code donné en début de post en faisant attention de conserver :
esphome:
  name: lilygo-s3
  friendly_name: Lilygo_S3
+
esp32:
  board: esp32-s3-devkitc-1
  variant: esp32s3
  framework:
    type: arduino
  flash_size: 16MB

logger:

api:
  encryption:
    key: "gcJyhpMWcWhK5am0SqVwad6DFn2nkE2ELD6ukcWBAC0="

ota:
  platform: esphome
  password: "xxxxxxxxxxxxxxxxxxxx"

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

  ap:
    ssid: "Lilygo-S3 Fallback Hotspot"
    password: "xxxxxxxxxxxxxxxxxxxxxx"

ensuite tout est dans la suite du code pour le paramétrage selon vos données HA.
il y a des commentaires sur chaque lignes donc c'est assez facile de s'y retrouver et de savoir ce a quoi les codes servent.
si tu n'as pas besoin de la fonction, il suffit de mettre # devant la ligne et elle ne sera pas lu.

il faudra aussi mettre a jour la partie sensor en fonction des sensors de ton HA.
modifie que la partie ID comme ca les liens dans les lignes supérieurs ne seront pas cassé, sinon il faudra faire le lien.

exemple si ton sensor température chauffe eau dans HA s'appelle sensor.toto
tu remplace dans entity_id: sensor.shelly_1_temperature par entity_id: sensor.toto

et idem pour les autres
sensor:
  - platform: homeassistant
    entity_id: sensor.calcul_enpv_instant_positif
    id: calcul_enpv_instant_positif
  - platform: homeassistant
    entity_id: sensor.msunpv_outbal
    id: msunpv_outbal
  - platform: homeassistant
    entity_id: sensor.msunpv_powreso
    id: msunpv_powreso
  - platform: homeassistant
    entity_id: sensor.shelly_1_temperature
    id: shelly_temperature
  - platform: homeassistant
    entity_id: sensor.tempo_couleur_numerique_jour
    id: rte_tempo_couleur_actuelle
  - platform: homeassistant
    entity_id: sensor.solcast_pv_forecast_previsions_pour_aujourd_hui
    id: solcast_pv_forecast_previsions_pour_aujourd_hui
  - platform: homeassistant
    entity_id: sensor.tempo_couleur_numerique_demain
    id: rte_tempo_prochaine_couleur
  - platform: homeassistant
    entity_id: sensor.solcast_pv_forecast_previsions_pour_demain
    id: solcast_pv_forecast_previsions_pour_demain
  - platform: homeassistant
    entity_id: sensor.temperature_max_cumulus_shelly_12heures
    id: temperature_max_cumulus_shelly_12heures

espérant t'avoir aider a comprendre le principe.

bonne intégration

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
01 Déc 2024 13:35 #12 par M@tt
Hello, j'ai bien repris ton code en l'adaptant à mes sensors. Je ne pige pas ce que j'ai loupé. On dirait que le Lilygo ne communique pas avec mon home assistant puisque même l'heure n'est pas récupérée.... Une piste?
Pièces jointes :

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
01 Déc 2024 13:43 #13 par Paps42
Salut,

Tu peux mettre ton code en pj pour voir stp

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
01 Déc 2024 13:51 #14 par M@tt
Voilà mon code
esphome:
  name: lilygo-s3
  friendly_name: Lilygo_S3
  platformio_options:
    board_build.f_flash: 80000000L
    board_build.partitions: default_16MB.csv
    board_build.arduino.memory_type: qio_opi

external_components:
  - source: github://landonr/lilygo-tdisplays3-esphome
    components: [tdisplays3]

esp32:
  board: esp32-s3-devkitc-1
  variant: esp32s3
  framework:
    type: arduino
  flash_size: 16MB

# Enable logging
logger:

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

ota:
  - platform: esphome
    password: ***********************

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Lilygo-S3 Fallback Hotspot"
    password: ****************

captive_portal:

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO0
      inverted: true
    name: "Button 1"
    on_press:
      then:
        - light.turn_on: backlight
  - platform: gpio
    pin:
      number: GPIO14
      inverted: true
    name: "Button 2"
    on_press:
      then:
        - light.turn_on: backlight

output:
  - platform: ledc
    pin: GPIO38
    id: gpio38
    frequency: 2000

light:
  - platform: monochromatic
    output: gpio38
    id: backlight
    name: "Backlight"
    restore_mode: RESTORE_DEFAULT_ON

interval:
  - interval: 60s
    then:
      - if:
          condition:
            lambda: 'return id(calcul_enpv_instant_positif).state < 10;'
          then:
            - light.turn_off: backlight
      - if:
          condition:
            lambda: 'return id(calcul_enpv_instant_positif).state > 11;'
          then:
            - light.turn_on: backlight

display:
  - platform: tdisplays3
    id: disp
    update_interval: 10s
    rotation: 90
    lambda: |-
      // Dessiner les cadres en blanc pour les données
      it.rectangle(10, 5, 240, 55, Color(255, 255, 255));   // Rectangle 1
      it.rectangle(10, 60, 240, 55, Color(255, 255, 255));  // Rectangle 2
      it.rectangle(10, 115, 240, 55, Color(255, 255, 255)); // Rectangle 3

      // Dessiner le cadre pour l'heure et la date
      it.rectangle(248, 5, 66, 55, Color(255, 255, 255));  // Rectangle pour l'heure et la date combinées

      // Colorier le rond de la température du cumulus selon les conditions
      if (id(shelly_temperature).has_state()) {
        if (id(shelly_temperature).state < 20) {
          it.circle(40, 88, 23, Color(255, 255, 255)); // Blanc si température inférieure à 20°
        } else if (id(shelly_temperature).state >= 20.1 && id(shelly_temperature).state <= 44.9) {
          it.circle(40, 88, 23, Color(0, 0, 255)); // Bleu si température entre 20.1° et 44.9°
        } else if (id(shelly_temperature).state >= 45 && id(shelly_temperature).state <= 65) {
          it.circle(40, 88, 23, Color(0, 255, 0)); // Vert si température entre 45° et 65°
        } else if (id(shelly_temperature).state >= 65.1) {
          it.circle(40, 88, 23, Color(255, 0, 0)); // Rouge si température supérieure à 65°
        }
      }

      // Afficher la valeur de la température du cumulus dans le rond
      it.printf(23, 80, id(roboto_smaller), Color(255, 255, 255), "%.1f °", id(shelly_temperature).state);

      // Colorer le rectangle du milieu en fonction du capteur rte_tempo_couleur_actuelle
      if (id(rte_tempo_couleur_actuelle).has_state()) {
        if (id(rte_tempo_couleur_actuelle).state == 1) {
            it.rectangle(248, 60, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
            it.filled_rectangle(250, 62, 62, 51, Color(0, 0, 255));   // Bleu
        } else if (id(rte_tempo_couleur_actuelle).state == 2) {
            it.rectangle(248, 60, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
            it.filled_rectangle(250, 62, 62, 51, Color(255, 255, 255));  // Blanc
        } else if (id(rte_tempo_couleur_actuelle).state == 3) {
            it.rectangle(248, 60, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
            it.filled_rectangle(250, 62, 62, 51, Color(255, 0, 0));  // Rouge
        } else if (id(rte_tempo_couleur_actuelle).state == 4) {
            it.rectangle(248, 60, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
            it.filled_rectangle(250, 62, 62, 51, Color(255, 255, 0));  // Jaune si couleur inconnue
        }
      } else {
        it.rectangle(248, 60, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
        it.filled_rectangle(250, 62, 62, 51, Color(255, 255, 0));  // Jaune si aucune donnée
      }

      // Afficher la valeur de la prévision Solcast jour dans le rectangle du milieu
      it.printf(275, 62, id(roboto_smaller), Color(255, 255, 255), "J");
      it.printf(265, 85, id(roboto_large), Color(255, 255, 255), "%.1f", id(solcast_pv_forecast_previsions_pour_aujourd_hui).state); 

      // Colorer le rectangle du bas en fonction du capteur rte_tempo_prochaine_couleur
      if (id(rte_tempo_prochaine_couleur).has_state()) {
        if (id(rte_tempo_prochaine_couleur).state == 1) {
            it.rectangle(248, 115, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
            it.filled_rectangle(250, 117, 62, 51, Color(0, 0, 255));   // Bleu
        } else if (id(rte_tempo_prochaine_couleur).state == 2) {
            it.rectangle(248, 115, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
            it.filled_rectangle(250, 117, 62, 51, Color(255, 255, 255));  // Blanc
        } else if (id(rte_tempo_prochaine_couleur).state == 3) {
            it.rectangle(248, 115, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
            it.filled_rectangle(250, 117, 62, 51, Color(255, 0, 0));  // Rouge
        } else if (id(rte_tempo_prochaine_couleur).state == 4) {
            it.rectangle(248, 115, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
            it.filled_rectangle(250, 117, 62, 51, Color(255, 255, 0));  // Jaune si couleur inconnue
        }
      } else {
        it.rectangle(248, 115, 66, 55, Color(255, 255, 255)); // Ajouter un cadre blanc
        it.filled_rectangle(250, 117, 62, 51, Color(255, 255, 0));  // Jaune si aucune donnée
      }

      // Afficher la valeur de la prévision Solcast demain dans le rectangle du bas
      it.printf(270, 120, id(roboto_smaller), Color(255, 255, 255), "J+1");
      it.printf(265, 140, id(roboto_large), Color(255, 255, 255), "%.1f", id(solcast_pv_forecast_previsions_pour_demain).state);

      // Centrer les titres et les valeurs
      // Afficher les Panneaux PV
      it.printf(85, 10, id(roboto_smaller), Color(0, 255, 0), "PANNEAUX PV:");
      it.printf(110, 28, id(roboto_large), Color(0, 255, 0), "%.1f W", id(calcul_enpv_instant_positif).state);

      // Afficher le Cumulus
      it.printf(105, 65, id(roboto_smaller), Color(255, 165, 0), "CUMULUS:");
      it.printf(110, 83, id(roboto_large), Color(255, 165, 0), "%.1f W", id(msunpv_outbal).state);

      // Centrer le titre et la valeur pour la Consommation EDF
      it.printf(55, 120, id(roboto_smaller), Color(128, 128, 128), "CONSOMMATION EDF:");
      it.printf(95, 138, id(roboto_large), Color(128, 128, 128), "%.1f W", id(msunpv_powreso).state);

      // Afficher l'heure et la date dans le même rectangle en blanc
      it.strftime(252, 8, id(roboto_medium), Color(255, 255, 255), "%H:%M", id(ha_time).now());
      it.strftime(258, 40, id(roboto_smaller), Color(255, 255, 255), "%d %b", id(ha_time).now());

font:
  - file: "gfonts://Roboto"
    id: roboto
    size: 30
  - file: "gfonts://Roboto"
    id: roboto_small
    size: 20
  - file: "gfonts://Roboto"
    id: roboto_smaller
    size: 15
  - file: "gfonts://Roboto"
    id: roboto_medium
    size: 23
  - file: "gfonts://Roboto"
    id: roboto_large
    size: 25

time:
  - platform: homeassistant
    id: ha_time

sensor:
  - platform: homeassistant
    entity_id: sensor.msunpv_powpv
    id: calcul_enpv_instant_positif
  - platform: homeassistant
    entity_id: sensor.msunpv_powbal
    id: msunpv_outbal
  - platform: homeassistant
    entity_id: sensor.msunpv_powreso
    id: msunpv_powreso
  - platform: homeassistant
    entity_id: sensor.msunpv_t_sdb
    id: shelly_temperature
  - platform: homeassistant
    entity_id: sensor.rte_tempo_couleur_actuelle
    id: rte_tempo_couleur_actuelle
  - platform: homeassistant
    entity_id: sensor.solcast_pv_forecast_forecast_today
    id: solcast_pv_forecast_previsions_pour_aujourd_hui
  - platform: homeassistant
    entity_id: sensor.rte_tempo_prochaine_couleur
    id: rte_tempo_prochaine_couleur
  - platform: homeassistant
    entity_id: sensor.solcast_pv_forecast_forecast_tomorrow
    id: solcast_pv_forecast_previsions_pour_demain

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
01 Déc 2024 14:33 #15 par Paps42
a la place des **** tu as bien tes données propres a ton esp et reseau ...

tu as attendu un peux de temps car au début il faut que l'ecran capte les informations donc c'est normal l'affichage comme tu as.
si dans les 5 minutes tu n'as rien effectivement c'est que cela ne fonctionne pas.

tu es bien dans la portée de ton wifi ?

Connexion ou Créer un compte pour participer à la conversation.

Propulsé par Kunena