ESPHome / Displays / wiederkehrender Inhalt

Hy zusammen, ich schon wieder mit meinen Displays ....

Ist es möglich, einen auf mehreren Pages wiederkehrenden Inhalt in einer Variable zu speichern und dann über diese Variable auf den Seiten einzufügen ?

Genauer:
Ich frage den Ping zu google ab und wenn der Ping ok ist, wird der Rahmen auf dem Display in grün dargestellt, sonst in rot.
Weiterhin habe ich als Kopf auf den einzelnen Seiten immer das gleiche, Datum, Uhrzeit, Wochentag und Aussentemperatur...

Das hab ich nun auf allen Pages natürlich als erstes im Code stehen, funktioniert ja auch, aber bläht den Code irgendwie mordsmäßig auf....

Code:
pages:
      - id: page1
        lambda: |-
          if (id(ping_google).state == "on") {
            it.rectangle(0, 0, 320, 240, my_green);
            it.rectangle(1, 1, 318, 238, my_green);
            it.rectangle(2, 2, 316, 236, my_green);
            it.line(0, 35, 320, 35, my_green);
            it.line(0, 36, 320, 36, my_green);
            it.line(0, 37, 320, 37, my_green);
            it.line(0, 70, 320, 70, my_green);
            it.line(0, 71, 320, 71, my_green);
            it.line(0, 72, 320, 72, my_green);
            it.line(183, 0, 183, 40, my_green);
            it.line(184, 0, 184, 40, my_green);
            it.line(185, 0, 185, 40, my_green);
          } else {
            it.rectangle(0, 0, 320, 240, my_red);
            it.rectangle(1, 1, 318, 238, my_red);
            it.rectangle(2, 2, 316, 236, my_red);
            it.line(0, 35, 320, 35, my_red);
            it.line(0, 36, 320, 36, my_red);
            it.line(0, 37, 320, 37, my_red);
            it.line(0, 70, 320, 70, my_red);
            it.line(0, 71, 320, 71, my_red);
            it.line(0, 72, 320, 72, my_red);
            it.line(183, 0, 183, 40, my_red);
            it.line(184, 0, 184, 40, my_red);
            it.line(185, 0, 185, 40, my_red);
          }
          it.strftime(9, 30, id(font2), id(my_yellow), TextAlign::BASELINE_LEFT, "%H:%M Uhr", id(homeassistant_time).now());
          it.printf(313, 30, id(font2), id(my_yellow), TextAlign::BASELINE_RIGHT, "%s°C", id(atemp).state.c_str());
          it.printf(9, 64, id(font2), id(my_yellow), TextAlign::BASELINE_LEFT, "%s", id(wochentag).state.c_str());
          it.printf(315, 64, id(font2), id(my_yellow), TextAlign::BASELINE_RIGHT, "%s", id(datum).state.c_str());

Hier nur mal am Bespiel von Seite 1.... und das kommt dann eben pro Seite (aktuell 4)....

Kann man das irgendwie "auslagern" und einfügen ?

Greetz
Günni
 
Hallo,

habe im Mom auch weiter keine Idee, aber schau dir dies mal an:

https://esphome.io/components/display/index.html?highlight=display#screen-clipping

Wenn ich das richtig verstanden habe, schreibst du deinen Rahmen ganz normal und alles
Kommende dann in Ausschnitte des Bildschirms, die du vorher fest legts.
So wird nur das angezeigt, was sich grad geändert hat.

Aber damit habe ich auch noch nicht rumgespielt.
Weiß auch nicht, ob das dann wesentlich weniger Code wird.

Gruss
 
Zurück
Oben