diff --git a/esphome/epaperframe.yaml b/esphome/epaperframe.yaml index 8dc58e9..2ebf8f9 100644 --- a/esphome/epaperframe.yaml +++ b/esphome/epaperframe.yaml @@ -51,6 +51,13 @@ api: # Include ArduinoJson support for the compact calendar event feed. json: +# Prevent refreshes when Home Assistant republishes unchanged calendar data. +globals: + - id: last_rendered_calendar_entries + type: std::string + restore_value: no + initial_value: '""' + ota: platform: esphome password: !secret ota @@ -222,6 +229,17 @@ text_sensor: entity_id: sensor.epaper_kalenderdaten attribute: entries id: calendar_entries + on_value: + then: + - if: + condition: + and: + - display.is_displaying_page: calendar + - lambda: return x != id(last_rendered_calendar_entries); + then: + - lambda: id(last_rendered_calendar_entries) = x; + - component.update: epaper + # Home Assistant selects one quote per day from its local quote library. - platform: homeassistant @@ -243,14 +261,19 @@ time: - output.turn_on: power_key - delay: 0.5s - output.turn_off: power_key - # Every 10 minutes + # Environmental readings need their regular refresh. Calendar updates are + # instead triggered by changed event data while that page is active. - seconds: 0 minutes: /10 then: - - logger.log: - level: INFO - format: "Timer based screen refresh" - - component.update: epaper + - if: + condition: + display.is_displaying_page: environment + then: + - logger.log: + level: INFO + format: "Timer based environment screen refresh" + - component.update: epaper - seconds: 10 minutes: 0 hours: 0 @@ -721,11 +744,12 @@ font: ] image: - - file: "epaperframe/C1024_logo_flat_bw.png" + - platform: file + file: "epaperframe/C1024_logo_flat_bw.png" id: c1024_logo type: binary resize: 77x40 - invert_alpha: True + invert_alpha: true spi: clk_pin: 23