Seeed studio ePaper Panel getriggert aktualisieren

Hallo zusammen,

ich habe ein ePaper-Panel zu Weihnachten bekommen, auf dem ich gerne den Status von Entitäten abbilden möchte. Ich habe das Panel mit Möglichkeit 2 eingebunden, es werden also schon Sachen auf dem Panel angezeigt. Das Problem ist aber, dass ich ein festes Intervall angeben muss, wann das Panel sich aktualisiert und genau das möchte ich nicht, um den Akku zu schonen. Das Panel soll sich eigentlich nur aktualisieren, wenn ein bestimmter Zustand einer in HomeAssistant vorhandenen Entität eingetreten ist. Meine Frage ist also: Kann man via ESPHome dem Panel einen Befehl senden, dass es sich aktualisieren soll? So etwas wie Wake-on-LAN oder ähnliches?

Beste Grüße

Daniel

Das sollte eigentlich gehen. Du musst nur das „automatische Updaten“ ausschalten, sollte mit

update_interval: never

in der Display Section gehen, und dann halt das Neuzeichnen nach deinen Wünschen triggern.
zB. bei deinen Sensoren dann so:

sensor:
  - platform: homeassistant
    id: humidity
    entity_id: sensor.humidity
    on_value:
      then:
        - component.update: oled

  - platform: homeassistant
    id: pressure
    entity_id: sensor.pressure
    on_value:
      then:
        - component.update: oled

oder wie immer du möchtest!

Beispiel Temperatur mit Delta von 1 Grad!

sensor:
  - platform: homeassistant
    id: ha_temp
    entity_id: sensor.wohnzimmer_temperature   # <-- anpassen!
    internal: true
    filters:
      - delta: 1.0
    on_value:
      then:
        - component.update: oled


Wenn du mir deinen Code mal zeigst können wir das bestimmt noch besser hinbekommen!?

1 „Gefällt mir“

Hallo @Dr.Big,

hier der Code, wie er jetzt gerade ist:

esphome:
  name: epaper
  friendly_name: ePaper

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: esp-idf

# 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: "Epaper Fallback Hotspot"
    password: "[...]"

captive_portal:

# Hier ist der aktivierte Deep-Sleep Part
#deep_sleep:
#  id: deep_sleep_1
#  run_duration: 1min  # Device wake up and run 60s (enough to pull data and update)
#  sleep_duration: 60min  # deep sleep for 1h

http_request:
  verify_ssl: false
  timeout: 30s
  watchdog_timeout: 15s

online_image:
  - id: dashboard_image
    format: BMP
    type: BINARY
    buffer_size: 25000
    url: http://192.168.178.55:10000/lovelace/epaper?viewport=800x480&eink=2&format=bmp
    on_download_finished:
      - delay: 0ms
      - component.update: main_display

spi:
  clk_pin: GPIO8
  mosi_pin: GPIO10

display:
  - platform: waveshare_epaper
    id: main_display
    cs_pin: GPIO3
    dc_pin: GPIO5
    busy_pin: 
      number: GPIO4
      inverted: true
    reset_pin: GPIO2
    model: 7.50inv2
    update_interval: never
    lambda: |-
      it.image(0, 0, id(dashboard_image));    

Mir ist gerade noch eine andere Idee gekommen: Eigentlich wäre es das einfachste, wenn das Display auf „Tastendruck“ reagieren würde. Ich habe dafür den Helfer „input_button.flurdisplay_aktualisieren“ angelegt. Dann könnte ich in HA einfach eine Automation schreiben, die bei diversen Auslösern die Taste drückt und das Display würde sich aktualisieren.

EDIT1: Ich habe anstelle der Taste mal eine Input-Number genommen, die ich dann einfach um den Wert 1 erhöhe/erniedrige. Wenn ich das richtig verstehe, arbeitet Home Assistant Sensor ja nur mit Zahlen

Gruß
Daniel

Ok, doch ein bisschen anders als gedacht! Vergiss alles bisherig gesagte!

Das wäre ein Trigger Button der den Download und die Anzeige des Bitmaps startet!

(einfach zu deiner yaml hinzufügen)

button:
  - platform: template
    name: "Epaper Refresh"
    id: epaper_refresh
    on_press:
      then:
        - component.update: dashboard_image

den hast du dann unter Home Assistant und kannst das mit irgendeiner Regel(Automation) triggern.

Wenn das klappt dann die “Aktualisierung nach Zeit rausnehmen!”

Ich habe etwas ähnliches neben meiner Eingangstür um beim Verlassen des Hauses noch mal zu sehen das alles so ist wie es sein soll!

Aktualisierung erfolgt durch den Bewegungsmelder im Flur!?

Eventuell geht das ja bei euch auch so?

So ist das bei mir (angepasst auf das Beispiel!)

automation:
  - alias: "ePaper aktualisieren bei Bewegung"
    mode: single
    trigger:
      - platform: state
        entity_id: binary_sensor.flur_bewegung
        to: "on"
    action:
      - service: button.press
        target:
          entity_id: button.epaper_refresh

Cool, vielen Dank! Funktioniert!

Genau das soll es hier auch sein. Welches Bildformat benutzt du? Es dauert bei mir schon etliche Sekunden, bis das Bild runtergeladen und angezeigt wird…

EDIT: Die Aktualisierung geht vermutlich schneller, wenn man das Display mit „Code“ beschreibt, richtig?

bei mir ist das noch ein herkömmliches Display, will ich eigentlich schon lange mal auf E-Paper umstellen! :grin:

Du hast aber noch ein Problem!
Mit der aktuellen Variante kannst du das Teil nicht in den Tiefschlaf schicken (Was ja eigentlich am meisten Strom spart!), weil du den dann nicht mehr wach bekommst!? :thinking: Mal schauen ob mir da noch was einfällt?

Schade, es scheint da keine Möglichkeiten zu geben das Teil von extern zu wecken!?
Musst du wohl ohne Tiefschlaf auskommen, mußt mal schauen wie lange du da mit einer Akkuladung hinkommst? Würde mich auch interessieren → kannst ja mal berichten!

Da ich leider keine Steckdose direkt vor der Haustür habe, musste etwas anderes her.

Ja, ich hoffe, dass der Stromverbrauch durch die geringe Anzahl an Aktualisierungen nicht so ausufernd ist.

Mache ich!

1 „Gefällt mir“

schließe mich auch an! Berichte gerne mal, wie deine Erfahrungen nach paar Wochen sind. Das ist ein Projekt, dass ich bald umsetzen will.