Heure d'ouverture boite aux lettres

Merci :slight_smile:

Ta solution m’a beaucoup aidée. J’ai modifié comme ceci.

- platform: template
    sensors:      
      boite_aux_lettres:
        value_template: "{{ as_local(states.binary_sensor.lumi_lumi_vibration_aq1_ias_zone.last_updated).timestamp() | timestamp_custom('%d/%m/%Y %H:%M') }}"
        icon_template: mdi:calendar-clock

Voici le résultat : 07/04/2021 12:12

Merci beaucoup. Je vais tenter maintenant d’ajouter tout ceci dans mon écran epaper.

Merci également.

Nous avons donc plusieurs solutions.

Aucun souci pour le code pour l’écran epaper.
Je te le partage tout à l’heure (après le repas).

Juste pour dire que la documentation est bien fournie :

Et si ça ne suffit pas, regardez par ici : The EPIC Time Conversion and Manipulation Thread! - Configuration - Home Assistant Community

1 « J'aime »

Voici le code de l’esp (epaper-display.yaml).
Je l’ai eu récemment, c’est donc encore en « construction ». Certainement du nettoyage à faire…
Surtout que j’ai peu connaissance en code :hot_face:

esphome:
  name: epaper-display
  platform: ESP8266
  board: esp01_1m
  on_boot:
    priority: -10
    then:
      - delay: 10s
      - component.update: epaperdisplay

wifi:
  ssid: xx
  password: xxx

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Epaper-Display Fallback Hotspot"
    password: xx

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api: 

ota:
  password: "xx"


font:

  - file: 'fonts/materialdesignicons-webfont.ttf'
    id: icon_font_30
    size: 30
    glyphs:
      - "\U000F050F" # Temp
      - "\U000F029A" # Pressure
      - "\U000F15FA" # Wind
      - "\U000F058C" # Rain
      - "\U000F0597" # Chance pluie 0F0597
      - "\U000F04B9" # Dedans canapé
      - "\U000F09F1" # Dehors tulipe 0F09F1
      - "\U000F0F2F" # Alerte meteo

  - file: 'fonts/Roboto-Medium.ttf'
    id: roboto_med_30
    size: 30
  - file: 'fonts/Roboto-Regular.ttf'
    id: footer_font
    size: 15
    glyphs:
      ['&', '@', '!', ',', '.', '"', '%', '(', ')', '+', '-', '_', ':', '°', '0',
       '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E',
       'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
       'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
       'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
       'u', 'v', 'w', 'x', 'y', 'z','å', 'ä', 'ö', '/','º','µ','³']

  - file: 'fonts/Roboto-Regular.ttf'
    id: main_sensor_unit
    size: 20
    glyphs:
      ['&', '@', '!', ',', '.', '"', '%', '(', ')', '+', '-', '_', ':', '°', '0',
       '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E',
       'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
       'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
       'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
       'u', 'v', 'w', 'x', 'y', 'z','å', 'ä', 'ö', '/','º','µ','³']
       
  - file: 'fonts/Roboto-Medium.ttf'
    id: sub_sensor_font
    size: 25
    glyphs:
      ['&', '@', '!', ',', '.', '"', '%', '(', ')', '+', '-', '_', ':', '°', '0',
       '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E',
       'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
       'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
       'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
       'u', 'v', 'w', 'x', 'y', 'z','å', 'ä', 'ö', '/','º','µ','³']
  
  - file: 'fonts/Roboto-Bold.ttf'
    id: main_sensor_font
    size: 70
  
  - file: 'fonts/materialdesignicons-webfont.ttf'
    id:  mdi_small
    size: 31
    glyphs: [
       # Wifi
      '󰤫', # mdi-wifi-strength-alert-outline
      '󰤟', # mdi-wifi-strength-1
      '󰤢', # mdi-wifi-strength-2
      '󰤥', # mdi-wifi-strength-3
      '󰤨', # mdi-wifi-strength-4
      '󰖎', # mdi-water-percent
      '󰔏'  # mdi-weather-windy          
      ]

  - file: 'fonts/materialdesignicons-webfont.ttf'
    id:  mdi_wifi
    size: 20
    glyphs: [
      # Wifi
      '󰤫', # mdi-wifi-strength-alert-outline
      '󰤟', # mdi-wifi-strength-1
      '󰤢', # mdi-wifi-strength-2
      '󰤥', # mdi-wifi-strength-3
      '󰤨', # mdi-wifi-strength-4
      '󰔏'  # mdi-weather-windy 

      ]

  - file: 'fonts/materialdesignicons-webfont.ttf'
    id:  mdi_med
    size: 33
    glyphs: [
      # Wifi
      '󰤫', # mdi-wifi-strength-alert-outline
      '󰤟', # mdi-wifi-strength-1
      '󰤢', # mdi-wifi-strength-2
      '󰤥', # mdi-wifi-strength-3
      '󰤨', # mdi-wifi-strength-4
      '󰀦', # mdi-alert
      '󰔏'  # mdi-weather-windy 
      ]

time:
  - platform: homeassistant
    id: homeassistant_time

#Please edit your homeassistant sensors enitity id to match yours
sensor:
  - platform: homeassistant
    entity_id: sensor.tz2000_a476raq2_ts0201_temperature
    id: temp_interieur
    internal: true
  
  - platform: homeassistant
    entity_id: sensor.tz2000_a476raq2_ts0201_humidity
    id: humid_indoor

  - platform: homeassistant
    entity_id: sensor.chalon_sur_saone_rain_chance
    id: chance_rain
    icon: "mdi:weather-rainy"

  - platform: homeassistant
    entity_id: sensor.lumi_lumi_weather_temperature
    id: temp_exterieur
    internal: true

  - platform: homeassistant
    entity_id: sensor.lumi_lumi_weather_humidity
    id: humid_outdoor

  - platform: homeassistant
    entity_id: sensor.chalon_sur_saone_wind_speed
    id: wind_outdoor
    icon: "mdi:weather-windy"
    

  - platform: wifi_signal
    name: "WiFi Signal Sensor"
    id: wifisignal
    update_interval: 60s

  - platform: homeassistant
    entity_id: sensor.ext_temp_max
    id: temp_exterieur_max
    internal: true

  - platform: homeassistant
    entity_id: sensor.ext_temp_min
    id: temp_exterieur_min
    internal: true

text_sensor:

  - platform: homeassistant
    name: "weather_alert"
    entity_id: sensor.71_weather_alert
    id: weather_alert

spi:
  clk_pin: 14
  mosi_pin: 13  #DIN
  
display:
  - platform: waveshare_epaper
    id: epaperdisplay
    cs_pin: 15
    dc_pin: 12
    update_interval: 60s
    busy_pin: 16
    reset_pin: 4
    model: 4.20in
    lambda: |-    
      
      int indoor_humid = int(id(humid_indoor).state);
      float indoor_temp = int(id(temp_interieur).state);
      int outdoor_humid = int(id(humid_outdoor).state);
      float outdoor_temp = int(id(temp_exterieur).state);
      int dehors_vent = int(id(wind_outdoor).state);
      int chance_pluie = int(id(chance_rain).state);

      float temp_min = int(id(temp_exterieur_min).state); /* température min */
      float temp_max = int(id(temp_exterieur_max).state); /* température maxi */

      std::string val = to_string(id(weather_alert).state); /* affichage sensor de type texte */

      
      

      /* DEHORS */
      
      
      it.print(5, 5, id(icon_font_30), "\U000F09F1"); /* icone dehors */
      it.filled_rectangle(47, 21, 375, 3);      
      it.print(375, 100, id(mdi_small), TextAlign::BASELINE_CENTER, "󰖎"); //water-percent
      /* it.print(0, 114,  id(mdi_small), TextAlign::BASELINE_LEFT, "󰔏"); //thermoter */
      it.print(365, 25, id(icon_font_30), "\U000F15FA"); /* icone vent */
      it.printf(357, 50, id(main_sensor_unit), TextAlign::BASELINE_RIGHT , "%3dkm/h", dehors_vent);
      it.printf(225, 114, id(main_sensor_font), TextAlign::BASELINE_RIGHT , "%.1f°", id(temp_exterieur).state); 
      it.printf(357, 145, id(main_sensor_unit), TextAlign::BASELINE_RIGHT , "%3d%%", chance_pluie);
      it.print(360, 125, id(icon_font_30), "\U000F0597"); /* icone chance pluie */

      it.print(47,30, id(main_sensor_unit), "min:");
      it.printf(87, 30, id(main_sensor_unit), "%.1f°", id(temp_exterieur_min).state);

      it.print(147,30, id(main_sensor_unit), "max:");
      it.printf(190, 30, id(main_sensor_unit), "%.1f°", id(temp_exterieur_max).state);

      it.printf(125,125, id(main_sensor_unit), "%s",id(weather_alert).state.c_str()); /* affichage alerte meteo texte verte jaune rouge */
      it.print(85, 122, id(icon_font_30), "\U000F0F2F"); /* icone alerte meteo */


      if(indoor_humid >=0 && indoor_humid <= 100){
        it.printf(357, 95, id(main_sensor_unit), TextAlign::BASELINE_RIGHT , "%3d%%", outdoor_humid);
      }else{
        it.print(357, 95, id(main_sensor_unit), TextAlign::BASELINE_RIGHT , " -  %");
      }
      
      


      /* DEDANS */

      
      int offsetY = 137;
      
      it.print(5, 5 + offsetY, id(icon_font_30), "\U000F04B9"); /* icone dedans */

      it.filled_rectangle(47, 21 + offsetY, 375, 3);
      it.print(375, 75 + offsetY,  id(mdi_small), TextAlign::BASELINE_CENTER, "󰔏"); //thermometer
      /* it.print(0, 114 + offsetY,  id(mdi_small), TextAlign::BASELINE_LEFT, "󰔏"); //thermoter */

      it.print(375, 115 + offsetY, id(mdi_small), TextAlign::BASELINE_CENTER, "󰖎"); //water-percent
      it.printf(225, 114 +offsetY, id(main_sensor_font), TextAlign::BASELINE_RIGHT , "%.1f°", id(temp_interieur).state);

      if(indoor_temp > -100 && indoor_temp < 100){
        it.printf(357, 75 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT , "%.1fº", id(temp_interieur).state);
      }else{
        it.print(357, 75 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT , " - º");
      }

      if(indoor_humid >=0 && indoor_humid <= 100){
        it.printf(357, 115 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT , "%3d%%", indoor_humid);
      }else{
        it.print(357, 115 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT , " -  %");
      }
      
      
      
      
      /* PIED DE PAGE */
      it.strftime(355, 295 , id(footer_font), TextAlign::BASELINE_RIGHT , "Mise a jour %H:%M", id(homeassistant_time).now());
      
      /* WiFi Signal Strenght */
      if(id(wifisignal).has_state()) {
        int x = 375;
        int y = 295;
        if (id(wifisignal).state >= -50) {
            //Excellent
            it.print(x, y, id(mdi_wifi), TextAlign::BASELINE_CENTER, "󰤨");
            ESP_LOGI("WiFi", "Exellent");
        } else if (id(wifisignal).state  >= -60) {
            //Good
            it.print(x, y, id(mdi_wifi), TextAlign::BASELINE_CENTER, "󰤥");
            ESP_LOGI("WiFi", "Good");
        } else if (id(wifisignal).state  >= -75) {
            //Fair
            it.print(x, y, id(mdi_wifi), TextAlign::BASELINE_CENTER, "󰤢");
            ESP_LOGI("WiFi", "Fair");
        } else if (id(wifisignal).state  >= -100) {
            //Weak
            it.print(x, y, id(mdi_wifi), TextAlign::BASELINE_CENTER, "󰤟");
            ESP_LOGI("WiFi", "Weak");
        } else {
            //Unlikely working signal
            it.print(x, y, id(mdi_wifi), TextAlign::BASELINE_CENTER, "󰤫");
            ESP_LOGI("WiFi", "Unlikely");
        }
      }
2 « J'aime »

Pour donner suite.
Ça fonctionne très bien.(en bas à gauche de l’écran epaper.)
Merci encore.

1 « J'aime »

moi itou, je l’ai intégré dans mon dashboard.
Screenshot_2021-04-07 Aperçu - Home Assistant

2 « J'aime »

Super intéressant ton projet, merci du partage ! :+1:

Merci pour le partage.
Cela rend vraiment bien visuellement ces e-paper

Whaouu merci pour ce partage. Je ne connaissais pas ces e-paper mais je trouve ça vraiment très intéressant pour nos installations domotique !

J’ai vu dans ton code que le rafraichissement se faisait toutes les 60s mais est-ce qu’il serait envisageable avec ce type de matériel de faire défiler 2 ou 3 écrans différents par exemple ? Genre toutes les 20s on aurait une page différente qui s’affiche et cela bouclerait ainsi.

Ici https://connected-environments.org/making/the/
la personne arrive à faire défiler plusieurs pages (voir la vidéo). Mais c’est avec un Raspberry Pi.
Avec l’ESP, on peut aller plus loin aussi comme afficher des icônes selon l’état (pluie soleil neige par ex.).
Pour moi, ça sera la seconde étape.

Le rafraîchissement de 60 s je l’ai passé à 10 min, largement suffisant pour mon utilisation.
Le « défaut » de ce type d’écran est le rafraîchissement. Lors du rafraîchissement une inversion complète blanc et noir se fait pour revenir dans son état précédent. Cette bascule est très visible car elle dur 1 seconde environ.
Je pense que ce rafraîchissement est obligatoire, car une fois l’écran marqué, l’affichage reste visible même hors tension… (je n’ai pas testé sur plusieurs heures).

Au passage si quelqu’un ici sait comment inverser le noir et le blanc de façon permanente… parce que c’est très beau aussi dans ce sens (fond noir et police blanche). Je pense que c’est possible, mais seulement vu sur photos…

Merci d’ouvrir un post dédié :+1:

Un message a été scindé en un nouveau sujet : Changer le pied de page (footer) suivant l’état d’une entité

Salut Nicolas,

J’ai aussi un capteur vibration aqara de chez Xiaomi, pour le moment j’ai juste créer une notification qui m’indique s’il y a du courrier. J’ai collé le capteur sur la plaque de la fente.
Mais j’ai utilisé l’entitée « vibrationstrength » dans mon automatisation, du coup je ne sais pas si j’ai un courrier ou un colis. J’aimerai avoir 2 automatisations differentes. Comment l’a tu intégrer dans tes automations ? A quoi ressemble t’elle ?
Pour info je passe par deconz :wink:

'on': true
temperature: 18
orientation:
  - -83
  - -3
  - 6
tiltangle: 136
vibrationstrength: 41
friendly_name: vibration bal
device_class: vibration

Salut,

C’est vrai que ma phrase porte à confusion…

Pour différencier l’ouverture de la trappe et de l’ouverture de la porte, pour moi il faut 2 capteurs.
Je l’avais fait à une époque avec 2 capteurs d’ouvertures de porte/fenêtres Xiaomi. On peut différencier les 2 très facilement avec fiabilité.
Seulement l’installation est plus « délicate ». Souvent j’avais un aimant de porte ou de trappe qui se décollait. Parfois les colis sont gros et ils frottent partout, sinon un livreur un peu brusque décollait les capteurs.
Pour cette raison, j’ai voulu faire ultra simple. Si j’ai une vibration, c’est que quelque chose est dans la boite, courrier pub ou colis.
Donc non, mon capteur de vibration ne différencie pas une enveloppe et un colis.

ah voila :sweat_smile:
je vais essayer de trouver une solution pour différencier les deux :slight_smile: s’il y a du monde de partant pour m’aider :grin:
J’ai mi en place mon capteur sur la petite trappe.
Maintenant il faut que determine les valeurs de quand la petite trappe est ouverte (lettres) ou bien quand la grande porte est ouverte (colis)

Salut,

(Je suis tout nouveau ici est ceci et mon premier post :slight_smile: )

Je suis dans la même impasse, j’utilise moi aussi un capteur de vibration Xiaomi en passant par Deconz.
J’ai réussi à récupérer les attributs « orientation », « temperature », « tiltangle » et « vibrationstrength » via les sensors suivants:

- platform: template
  sensors:
    vibration_angle_x:
      value_template: "{{ state_attr('binary_sensor.vibration_4', 'orientation')[0]}}"
      friendly_name: Angle x du capteur de vibration
      unit_of_measurement: '°'
    vibration_angle_y:
      value_template: "{{ state_attr('binary_sensor.vibration_4', 'orientation')[1]}}"
      friendly_name: Angle y du capteur de vibration
      unit_of_measurement: '°'
    vibration_angle_z:
      value_template: "{{ state_attr('binary_sensor.vibration_4', 'orientation')[2]}}"
      friendly_name: Angle z du capteur de vibration
      unit_of_measurement: '°'
    vibration_tiltangle:
      value_template: "{{ state_attr('binary_sensor.vibration_4', 'tiltangle')}}"
      friendly_name: TiltAngle du capteur de vibration
      unit_of_measurement: '°'
    vibration_temperature:
      value_template: "{{ state_attr('binary_sensor.vibration_4', 'temperature')}}"
      friendly_name: temperature du capteur de vibration
      unit_of_measurement: '°C'
    vibration_vibrationstrength:
      value_template: "{{ state_attr('binary_sensor.vibration_4', 'vibrationstrength')}}"
      friendly_name: vibrationstrength du capteur de vibration
      unit_of_measurement: '-'

Mais je n’arrive pas à concrétiser car ces valeurs se mettent à jour à très faible fréquence… Donc impossible de trigger dessus car le temps d’ouvrir et de refermer la boite aux lettres est trop court et je rate l’information…

Salut !
J’ai fait la même, dans la capture d’écran suivant on voit bien la différence de quand la porte est ouverte (sur la gauche, en violet) et quand la trappe pour glisser les lettres (marqueur à droite, en cyan)

Maintenant c’est au niveau des automations que je bloque.
Quand je vais voir le sensor dans l’outil de développement, je remarque que j’ai plus de capteur qu’avant.


Je suis passé de Deconz à ZigbeeToMQTT, c’est peut etre pour ça.
Cette automatisation fonctionne pour les lettres. Mais pas tout le temps, elle s’est déclenché une fois seulement;

alias: 'Facteur - Lettres - Notification '
description: Notification telegram pierre si facteur est passer
trigger:
  - platform: numeric_state
    entity_id: sensor.vibration_bal_action
    attribute: angle
    above: '8'
condition:
  - condition: time
    after: '08:00:00'
    before: '21:00:00'
    weekday:
      - mon
      - tue
      - wed
      - thu
      - fri
      - sat
      - sun
action:
  - service: notify.pierre
    data:
      message: ✉️ Lettres ✉️
      title: Facteur
  - service: notify.mobile_app_pixel_4_xl
    data:
      title: Facteur
      message: ✉️ Lettres ✉️
mode: single

Je remarque que même 1h apres, l’attribut « angle » reste à 17 degres.

Et t’il possible de reset sa valeur par exemple 3 minutes apres le passage du facteur ? Ou bien d’optimiser mon automatisation ?

bonjour,

j’aimerais avoir cette presentation, peux tu me dire comment tu as procéder sachant que je debute su HA, peux tu m’aider ? merci

Bonjour,
Voici tous les ingrédients pour réaliser cette carte.
Je précise que cette carte nécessite d’avoir 2 détecteurs d’ouverture pour fonctionner.

Détection Lettre

et

Détection Colis

le fichier des sensors boite_aux_lettres.yaml à mettre dans le répertoire template.

boite_aux_lettres.yaml
- sensor:
    - name: "boite_aux_lettres"
      unique_id: boite_aux_lettres
      state: "{{ as_local(states.input_boolean.boite_aux_lettres.last_updated).timestamp() | timestamp_custom('%H:%M %d/%m/%Y') }}"
      icon: mdi:calendar-clock

    - name: "boite_aux_lettres_heure"
      unique_id: boite_aux_lettres_heure
      state: "{{ as_local(states.binary_sensor.detection_lettre_et_colis.last_updated).timestamp() | timestamp_custom('%Hh%M') }}"
      icon: mdi:calendar-clock

    - name: "boite_aux_lettres_jour"
      unique_id: boite_aux_lettres_jour
      state: "{{ as_local(states.binary_sensor.detection_lettre_et_colis.last_updated).timestamp() | timestamp_custom('%d/%m') }}"
      icon: mdi:calendar-clock

    - name: "boite_aux_lettres_heure_et_jour"
      unique_id: boite_aux_lettres_heure_et_jour
      state: "{{ as_local(states.binary_sensor.detection_lettre_et_colis.last_updated).timestamp() | timestamp_custom('%Hh%M le %d/%m') }}"
      icon: mdi:calendar-clock

    - name: "boite_aux_lettres_date_distribution"
      unique_id: boite_aux_lettres_date_distribution
      state: "{{  as_local(states.binary_sensor.detection_lettre_et_colis.last_updated).timestamp() | timestamp_custom('%Y-%m-%d %H:%M:%S') }}"
      icon: mdi:calendar-clock

    - name: "boite_aux_lettres_jour_distribution"
      unique_id: boite_aux_lettres_jour_distribution
      state: >
        {% set delta = states.binary_sensor.detection_lettre_et_colis.last_updated.day - now().day %}
        {% if delta | int < -2 %}
        Le {{ as_local(states.binary_sensor.detection_lettre_et_colis.last_updated).timestamp() | timestamp_custom('%d/%m') }}
        {% elif delta | int == -2 %}
          avant hier
        {% elif delta | int == -1 %}
          hier
        {% else %}
          Aujourd'hui
        {% endif %}

    - name: "boite_aux_lettres_contenu"
      unique_id: boite_aux_lettres_contenu
      icon: mdi:calendar-clock
      state: >-
        {% if is_state('input_boolean.detection_colis', 'on') and
        is_state('input_boolean.detection_lettre', 'on') %}
          lettre et colis 
        {% elif is_state('input_boolean.detection_colis', 'on') and
        is_state('input_boolean.detection_lettre', 'off') %}
          colis
        {% elif is_state('input_boolean.detection_colis', 'off') and
        is_state('input_boolean.detection_lettre', 'on') %}
          lettre
        {% else %}
          vide
        {% endif %}

l’automatisation, qu’il faudra peut être modifier car celle-ci envoie une notification sur HA et une notification avec photo de la boite aux lettres sur mon Telegram.

Notification Boite aux lettres: Arrivée Courrier ou Colis
alias: "Notification Boite aux lettres: Arrivée Courrier ou Colis"
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.detection_lettre_contact
    from: "off"
    to: "on"
    id: Détection Lettre contact
  - platform: state
    entity_id:
      - binary_sensor.detection_colis_contact
    from: "off"
    to: "on"
    id: Détection Colis contact
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id: Détection Lettre contact
        sequence:
          - service: input_boolean.turn_on
            data: {}
            target:
              entity_id: input_boolean.detection_lettre
          - service: notify.mobile_app_cph2307
            data:
              message: Le Courrier vient d'être distribué.
              title: Courrier Arrivé !
              data:
                channel: courrier
            enabled: true
          - service: notify.persistent_notification
            data:
              message: Le Courrier vient d'être distribué.
              title: Courrier Arrivé !
          - service: camera.snapshot
            data:
              filename: /config/www/tmp/snapshot_boite_aux_lettres.jpg
            target:
              entity_id: camera.tv_ip313pi_mainstream
          - delay:
              hours: 0
              minutes: 0
              seconds: 1
              milliseconds: 0
          - service: telegram_bot.send_photo
            data:
              file: /config/www/tmp/snapshot_boite_aux_lettres.jpg
              caption: Le courrier est distribué
              target: -515665986
          - service: input_boolean.turn_on
            data: {}
            target:
              entity_id: input_boolean.boite_aux_lettres
      - conditions:
          - condition: trigger
            id: Détection Colis contact
        sequence:
          - service: input_boolean.turn_on
            data: {}
            target:
              entity_id: input_boolean.detection_colis
          - service: notify.mobile_app_cph2307
            data:
              message: Un Colis vient d'être distribué.
              title: Colis Arrivé !
              data:
                channel: courrier
            enabled: true
          - service: notify.persistent_notification
            data:
              message: Un Colis vient d'être distribué.
              title: Colis Arrivé !
          - service: camera.snapshot
            data:
              filename: /config/www/tmp/snapshot_boite_aux_lettres.jpg
            target:
              entity_id: camera.tv_ip313pi_mainstream
          - delay:
              hours: 0
              minutes: 0
              seconds: 1
              milliseconds: 0
          - service: telegram_bot.send_photo
            data:
              file: /config/www/tmp/snapshot_boite_aux_lettres.jpg
              caption: Un Colis est arrivé
              target: -515665986
          - service: input_boolean.turn_on
            data: {}
            target:
              entity_id: input_boolean.boite_aux_lettres
mode: single

Les entrées,




La carte,

La carte
square: false
type: grid
cards:
  - type: conditional
    conditions:
      - entity: sensor.boite_aux_lettres_contenu
        state: vide
    card:
      type: entities
      entities:
        - entity: sensor.boite_aux_lettres_heure
          name: 'Dernière Distribution à :'
          icon: 'mdi: null'
          style:
            hui-generic-entity-row:
              .: |
                div{font-weight: 600;font-size: 1.3em}
              $: |
                state-badge{ display: none;}
                div{text-align: right; }
        - entity: sensor.boite_aux_lettres_jour_distribution
          name: Le
          icon: 'mdi: null'
          style:
            hui-generic-entity-row:
              .: |
                div{font-weight: 600;font-size: 1.3em}
                div.info.pointer.text-content{color: red; }           
              $: |
                div{text-align: right; }          
                state-badge{ display: none;}        
                div.info.pointer.text-content{color: white; }     
      state_color: true
      show_header_toggle: false
      footer:
        type: picture
        image: /local/boite aux lettres/boite-aux-lettres-vide.png
        tap_action:
          action: call-service
          service: input_boolean.turn_off
          data: {}
          target:
            entity_id:
              - input_boolean.detection_colis
              - input_boolean.detection_lettre
  - type: conditional
    conditions:
      - entity: sensor.boite_aux_lettres_contenu
        state: lettre
    card:
      type: entities
      entities:
        - entity: sensor.boite_aux_lettres_heure
          name: 'Dernière Distribution à :'
          icon: 'mdi: null'
          style:
            hui-generic-entity-row:
              .: |
                div{font-weight: 600;font-size: 1.3em}
              $: |
                state-badge{ display: none;}
                div{text-align: right; }
        - entity: sensor.boite_aux_lettres_jour_distribution
          name: Le
          icon: 'mdi: null'
          style:
            hui-generic-entity-row:
              .: |
                div{font-weight: 600;font-size: 1.3em}
                div.info.pointer.text-content{color: red; }           
              $: |
                div{text-align: right; }          
                state-badge{ display: none;}        
                div.info.pointer.text-content{color: white; }     
      state_color: true
      show_header_toggle: false
      footer:
        type: picture
        image: /local/boite aux lettres/boite-aux-lettres-lettre.png
        tap_action:
          action: call-service
          service: input_boolean.turn_off
          data: {}
          target:
            entity_id:
              - input_boolean.detection_colis
              - input_boolean.detection_lettre
  - type: conditional
    conditions:
      - entity: sensor.boite_aux_lettres_contenu
        state: colis
    card:
      type: entities
      entities:
        - entity: sensor.boite_aux_lettres_heure
          name: 'Dernière Distribution à :'
          icon: 'mdi: null'
          style:
            hui-generic-entity-row:
              .: |
                div{font-weight: 600;font-size: 1.3em}
              $: |
                state-badge{ display: none;}
                div{text-align: right; }
        - entity: sensor.boite_aux_lettres_jour_distribution
          name: Le
          icon: 'mdi: null'
          style:
            hui-generic-entity-row:
              .: |
                div{font-weight: 600;font-size: 1.3em}
                div.info.pointer.text-content{color: red; }           
              $: |
                div{text-align: right; }          
                state-badge{ display: none;}        
                div.info.pointer.text-content{color: white; }     
      state_color: true
      show_header_toggle: false
      footer:
        type: picture
        image: /local/boite aux lettres/boite-aux-lettres-colis.png
        tap_action:
          action: call-service
          service: input_boolean.turn_off
          data: {}
          target:
            entity_id:
              - input_boolean.detection_colis
              - input_boolean.detection_lettre
  - type: conditional
    conditions:
      - entity: sensor.boite_aux_lettres_contenu
        state: lettre et colis
    card:
      type: entities
      entities:
        - entity: sensor.boite_aux_lettres_heure
          name: 'Dernière Distribution à :'
          icon: 'mdi: null'
          style:
            hui-generic-entity-row:
              .: |
                div{font-weight: 600;font-size: 1.3em}
              $: |
                state-badge{ display: none;}
                div{text-align: right; }
        - entity: sensor.boite_aux_lettres_jour_distribution
          name: Le
          icon: 'mdi: null'
          style:
            hui-generic-entity-row:
              .: |
                div{font-weight: 600;font-size: 1.3em}
                div.info.pointer.text-content{color: red; }           
              $: |
                div{text-align: right; }          
                state-badge{ display: none;}        
                div.info.pointer.text-content{color: white; }     
      state_color: true
      show_header_toggle: false
      footer:
        type: picture
        image: /local/boite aux lettres/boite-aux-lettres-lettre_et_colis.png
        tap_action:
          action: call-service
          service: input_boolean.turn_off
          data: {}
          target:
            entity_id:
              - input_boolean.detection_colis
              - input_boolean.detection_lettre
        hold_action:
          action: none
columns: 1

Les photos à mettre dans config\www\boite aux lettres
boite-aux-lettres-colis
boite-aux-lettres-colis.png
boite-aux-lettres-lettre
boite-aux-lettres-lettre.png
boite-aux-lettres-lettre_et_colis
boite-aux-lettres-lettre_et_colis.png
boite-aux-lettres-vide
boite-aux-lettres-vide.png

Voila !

Merci je test, un grand merci pour ton aide, et bon reveillon