Exemple d'un afficheur SPI et d'un thermomètre

Câblage pour l'utilisation

Installation dans Home Assistant

  • Tout d’abord, copier la police « BebasNeue-Regular.ttf » dans le répertoire « CONFIG/esphome/ ».
  • Ouvrir l’onglet ESPHome dans Home Assistant.
  • Dans le cadre de l’entité choisie, cliquer sur « EDIT« .
  • Ajouter le programme suivant à la fin du « de base » (après « captive_portal:« ).
  • Cliquer sur « SAVE », puis sur « INSTALL ».
  • Dans la fenêtre qui s’ouvre, choisir « Wirelessly ».
  • Si tout va bien, cela doit fonctionner !!!

Le programme final après ajout de la partie spécifique

spi:
  clk_pin: GPIO14
  mosi_pin: GPIO13

font:
  – file: « BebasNeue-Regular.ttf »
    id: BebasNeue_20
    size: 20
  – file: « BebasNeue-Regular.ttf »
    id: BebasNeue_25
    size: 25
  – file: « BebasNeue-Regular.ttf »
    id: BebasNeue_30
    size: 30
  – file: « BebasNeue-Regular.ttf »
    id: BebasNeue_45
    size: 45
  – file: « gfonts://Roboto »
    id: roboto_15
    size: 15
    extras:
      – file: « gfonts://Roboto »
        glyphs: [à,é,è,ç,ô,î,ö,ï,ù,µ,]
  – file: « gfonts://Roboto »
    id: roboto_20
    size: 20
  – file: « gfonts://Roboto »
    id: roboto_25
    size: 25
  – file: « gfonts://Roboto »
    id: roboto_30
    size: 30

sensor:
  – platform: dht
    pin: GPIO1
    temperature:
      id: « temp »
      name: « T° Buffet »
    humidity:
      id: « Humid »
      name: « H% Buffet »
    update_interval: 30s

  – platform: wifi_signal
    name: Signal WiFi
    update_interval: 300s
    filters:
      – delta: 10%

  – platform: homeassistant
    id: Dht
    entity_id: sensor.esp_mini_d1_t_buffet_mini_d1

  – platform: homeassistant
    id: _5A_T_Salon
    entity_id: sensor.ha_5a_t_salon_temperature

  – platform: homeassistant
    id: _5A_T_Palier
    entity_id: sensor.ha_5a_t_palier_temperature

  – platform: homeassistant
    id: Elevation
    entity_id: sun.sun
    attribute: elevation

  – platform: homeassistant
    id: Azimuth
    entity_id: sun.sun
    attribute: azimuth

time:
  – platform: homeassistant
    id: esptime

text_sensor:
  # Expose WiFi information as sensors
  – platform: wifi_info
    ip_address:
      name: Adresse IP
    mac_address:
      name: Adresse MAC

display:
  – platform: ssd1306_spi
    model: « SSD1306 128×64 »
    update_interval: 10s
    cs_pin: GPIO15
    dc_pin: GPIO4
    reset_pin: GPIO5
    contrast: 10%
    #rotation: 270°

    id: my_display
    pages:
      – id: page1
        lambda: |-
          it.print(63, 7, id(roboto_15), TextAlign::CENTER, « – Horo -« );
          it.strftime(63, 31, id(BebasNeue_20), TextAlign::CENTER, « %d/%m », id(esptime).now());
          it.strftime(63, 55, id(BebasNeue_30), TextAlign::CENTER, « %H:%M », id(esptime).now());
      – id: page2
        lambda: |-
          it.print(63, 7, id(roboto_15), TextAlign::CENTER, « – Soleil -« );
          it.printf(63, 31, id(BebasNeue_25), TextAlign::CENTER, « %.0f° », id(Elevation).state);
          it.printf(63, 55, id(BebasNeue_25), TextAlign::CENTER, « %.0f° », id(Azimuth).state);
      – id: page3
        lambda: |-
          it.print(63, 7, id(roboto_15), TextAlign::CENTER, « – VdR -« );
          it.print(0, 25, id(roboto_15), « Buffet »);
          it.print(0, 49, id(roboto_15), « Véranda »);
          it.printf(it.get_width(), 17, id(BebasNeue_25), TextAlign::TOP_RIGHT, « %.1f° », id(temp).state);
          it.printf(it.get_width(), 41, id(BebasNeue_25), TextAlign::TOP_RIGHT, « %.1f° », id(Dht).state);
      – id: page4
        lambda: |-
          it.print(63, 7, id(roboto_15), TextAlign::CENTER, « – 5A -« );
          it.print(0, 25, id(roboto_15), « Buffet »);
          it.print(0, 49, id(roboto_15), « Palier »);
          it.printf(it.get_width(), 17, id(BebasNeue_25), TextAlign::TOP_RIGHT, « %.1f° », id(_5A_T_Salon).state);
          it.printf(it.get_width(), 41, id(BebasNeue_25), TextAlign::TOP_RIGHT, « %.1f° », id(_5A_T_Palier).state);

# For example cycle through pages on a timer
interval:
  – interval: 3s
    then:
      – display.page.show_next: my_display
      – component.update: my_display