diff --git a/esphome/epaperframe.yaml b/esphome/epaperframe.yaml index 48f4403..7f1b255 100644 --- a/esphome/epaperframe.yaml +++ b/esphome/epaperframe.yaml @@ -51,6 +51,13 @@ api: # Include ArduinoJson support for the compact calendar event feed. json: +# Avoid refreshing the panel 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 + # Refresh environmental readings every 10 minutes. The calendar page is + # redrawn only when its event feed actually changes. - 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 # Font definitions font: