Falls Du den nächsten Schritt machen willst, hier mit Temperatur und Abfahrtzeiten der S-Bahn. Letztere sensor.abfahrt_s3und sensor.abfahrt_s4 sind einfache Textsensoren. Kannst Du also einfach anpassen. Der Sensor für die Temperatur ist sensor.wetterstation_temperature den Du dann auch anpassen musst.
esphome:
name: espminidisplay1
friendly_name: ESP MiniDisplay 1
esp8266:
board: d1_mini
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
#enable HA API
api:
ota:
- platform: esphome
#enable logger
logger:
spi:
clk_pin: GPIO14
mosi_pin: GPIO13
id: spihwd
output:
- platform: esp8266_pwm
pin: GPIO05
id: backlight_pwm
inverted: true
light:
- platform: monochromatic
output: backlight_pwm
name: "Backlight"
id: backlight
restore_mode: RESTORE_AND_ON
time:
- platform: homeassistant
id: ha_time
font:
- file:
type: gfonts
family: Roboto
weight: 500
id: font_time
size: 78
glyphs: "0123456789:"
- file:
type: gfonts
family: Roboto
weight: 400
id: font_date
size: 20
glyphs: "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzöäüÄÜÖß° "
#glyphs: "0123456789.- "
- file:
type: gfonts
family: Roboto
weight: 500
id: font_temperatur
size: 30
glyphs: "0123456789.,-°C "
text_sensor:
- platform: homeassistant
id: sensor_s3
entity_id: sensor.abfahrt_s3
internal: true
- platform: homeassistant
id: sensor_s4
entity_id: sensor.abfahrt_s4
internal: true
- platform: homeassistant
id: temperatur
entity_id: sensor.wetterstation_temperature
internal: true
sensor:
- platform: homeassistant
id: temperatur2
entity_id: sensor.wetterstation_temperature
internal: true
display:
- platform: mipi_spi
model: st7789v
spi_id: spihwd
dc_pin: GPIO00
reset_pin: GPIO02
color_depth: 8
invert_colors: true
spi_mode: mode3
dimensions:
width: 240
height: 240
update_interval: 5s
lambda: |-
// Schwarzer Hintergrund
it.fill(Color(0, 0, 0));
auto now = id(ha_time).now();
if (!now.is_valid()) {
// Noch keine Zeit → einfach leerer Screen
return;
}
// Uhrzeit HH:MM
char time_str[6];
snprintf(time_str, sizeof(time_str),
"%02d:%02d", now.hour, now.minute);
// Datum DD.MM.YYYY
char date_str[11];
snprintf(date_str, sizeof(date_str),
"%02d.%02d.%04d",
now.day_of_month, now.month, now.year);
// Uhrzeit → weiß
it.printf(120, 50, id(font_time),
Color(255, 255, 255),
TextAlign::CENTER, "%s", time_str);
// Datum → gelb
it.printf(120, 100, id(font_date),
Color(255, 255, 0),
TextAlign::CENTER, "%s", date_str);
it.printf(120, 130, id(font_temperatur), Color(0, 0, 255), TextAlign::CENTER, "%s °C", id(temperatur).state.c_str());
// Werte vorbereiten als Strings
char s3_str[16];
snprintf(s3_str, sizeof(s3_str), "%.2f", id(sensor_s3).state);
char s4_str[16];
snprintf(s4_str, sizeof(s4_str), "%.2f", id(sensor_s4).state);
// Rechteck-Hintergründe zeichnen
it.filled_rectangle(0, 160, 240, 30, Color(128, 0, 128)); // Lila S3-Hintergrund
it.filled_rectangle(0, 200, 240, 30, Color(255, 0, 0)); // Rot S4-Hintergrund
// Text auf Rechteck zeichnen
it.printf(10, 183, id(font_date), Color(255, 255, 255), TextAlign::BASELINE_LEFT, "%s", id(sensor_s3).state.c_str());
it.printf(10, 223, id(font_date), Color(255, 255, 255), TextAlign::BASELINE_LEFT, "%s", id(sensor_s4).state.c_str());
PS: Dran denken dass der Anfang vom Code bei Dir ggf anders lautet und Du den dann anpassen musst. Also das hier:
esphome:
name: espminidisplay1
friendly_name: ESP MiniDisplay 1
Viel Spaß beim basteln.
Ich habe inzwischen schon die Pro Version mit ESP 32 und Touchbutton am laufen, welche ich im nächsten Schritt noch mit BT Proxy und weiteren Funktionen erweitern werde.

