Formatierung Zeitstempel

Eine Sammlung von Home Assistant Templates.
Bitte nur fertige Templates posten, ergänzt um eine Beschreibung und ggf. Screenshots.


Antworten
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Formatierung Zeitstempel

Beitrag von Osorkon »

Formatierung eines Zeitstempels und die Übersetzung der Wochentage und des Monats hier im Bsp. deutsch.

Code: Alles auswählen

{% set wochentag = ["Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"] %}
{% set monat = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"] %}
{% set wochentag = wochentag[now().weekday()] %}
{% set monat = monat[now().month - 1] %}
{{ wochentag }}, der {{ now().day }} {{ monat }} {{now().year}}
Gruß
Osorkon
Dateianhänge
Datum_format.png
Datum_format.png (15.22 KiB) 1202 mal betrachtet
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
carsten_h
Beiträge: 532
Registriert: Mo 2. Aug 2021, 11:07
2
Has thanked: 1 time
Been thanked: 65 times

Re: Formatierung Zeitstempel

Beitrag von carsten_h »

Vielen Dank!

Aber trotzdem ist es traurig, daß man sich um so etwas selber kümmern muß.
Genau wie der Standard-Kalender von Home Assistant in der Monatsansicht immer den Sonntag als ersten Tag der Woche hat.

Hier laufen macOS, iOS, iPadOS, tvOS, watchOS, Home Assistant OS, QTS, Raspberry Pi OS, piCorePlayer und Fire OS

Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Formatierung Zeitstempel

Beitrag von Osorkon »

carsten_h hat geschrieben: Di 2. Nov 2021, 16:14 Aber trotzdem ist es traurig, daß man sich um so etwas selber kümmern muß.
Traurig würde ich es nicht nennen. 🤷‍♂️
Vielleicht unschön?! 😜
Hauptsache man weiß, wie man sich behelfen kann. 😉
carsten_h hat geschrieben: Di 2. Nov 2021, 16:14 Genau wie der Standard-Kalender von Home Assistant in der Monatsansicht immer den Sonntag als ersten Tag der Woche hat.
Muss aber schon lange her sein?!
Kann mich gar nicht erinnern, dass der Kalender bei mir nicht mit Montag beginnen würde?!
Welche HA Core Version hast Du den am Start?

Wollte hier aber keine Diskussionen starten. Wenn erwünscht, dann gerne an einer geeigneten Stelle.
Hier soll es ausschließlich um Home Assistant Templates gehen. 😀

Gruß
Osorkon
Dateianhänge
Kalenderansicht.png
Kalenderansicht.png (43.49 KiB) 1195 mal betrachtet
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
m4d-maNu
Beiträge: 187
Registriert: Do 5. Aug 2021, 16:09
2
Has thanked: 14 times
Been thanked: 2 times

Re: Formatierung Zeitstempel

Beitrag von m4d-maNu »

Kurz OT
@Osorkon wie hast du den Kalender so Groß bekommen? Bei mir sind in der Monatsansicht nur Punkte aber nicht die Ereignisse dazu sichtbar.
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Formatierung Zeitstempel

Beitrag von Osorkon »

Wie kommst Du auf einen Kalender?

Der Screenshot im ersten Beitag ist aus dem Template Editor.

Gruß
Osorkon
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
m4d-maNu
Beiträge: 187
Registriert: Do 5. Aug 2021, 16:09
2
Has thanked: 14 times
Been thanked: 2 times

Re: Formatierung Zeitstempel

Beitrag von m4d-maNu »

Meinte den Anhang aus Beitrag 3
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Formatierung Zeitstempel

Beitrag von Osorkon »

Als praktisches Beispiel, hier mal eine Markdown Kate mit den Abfuhrterminen.

Die Wochen Tage werden hier übersetzt. -> ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"]
Sowie die Monate -> ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]

Code: Alles auswählen

type: markdown
content: |
  {% set wochentag = ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"] %}
  {% set wochentag_waste = wochentag[states.sensor.waste_collection_waste.attributes | first | as_timestamp |timestamp_custom("%w", false) | int ] %}
  {% set wochentag_paper = wochentag[states.sensor.waste_collection_paper.attributes | first | as_timestamp |timestamp_custom("%w", false) | int ] %}
  {% set wochentag_bio = wochentag[states.sensor.waste_collection_bio.attributes | first | as_timestamp |timestamp_custom("%w", false) | int ] %}
  {% set monat = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"] %}
  {% set monat_waste = monat[states.sensor.waste_collection_waste.attributes | first | as_timestamp |timestamp_custom("%m") | int - 1] %}
  {% set monat_paper = monat[states.sensor.waste_collection_paper.attributes | first | as_timestamp |timestamp_custom("%m") | int - 1] %}
  {% set monat_bio = monat[states.sensor.waste_collection_bio.attributes | first | as_timestamp |timestamp_custom("%m") | int - 1] %}
  
  | Müll | Datum |
  |------------|------------|
  |<ha-icon icon="mdi:recycle"></ha-icon> Restmüll| {{ wochentag_waste}}, den {{ states.sensor.waste_collection_waste.attributes | first | as_timestamp | timestamp_custom("%d") }} {{monat_waste}} |
  |<ha-icon icon="mdi:file"></ha-icon> Papiermüll| {{wochentag_paper}}, den {{ states.sensor.waste_collection_paper.attributes | first | as_timestamp | timestamp_custom("%d") }} {{monat_paper}} |
  |<ha-icon icon="mdi:leaf"></ha-icon> Biomüll|{{wochentag_bio}}, den {{ states.sensor.waste_collection_bio.attributes | first | as_timestamp | timestamp_custom("%d") }} {{monat_bio}}|
Abfuhrtermine.png
Abfuhrtermine.png (28.9 KiB) 1137 mal betrachtet
Ohne der Übersetzung würde es so aussehen.

Code: Alles auswählen

type: markdown
content: |
  | Müll | Datum |
  |------------|------------|
  |<ha-icon icon="mdi:recycle"></ha-icon> Restmüll| {{ states.sensor.waste_collection_waste.attributes | first | as_timestamp | timestamp_custom("%a, %m.%Y") }}|
  |<ha-icon icon="mdi:file"></ha-icon> Papiermüll| {{ states.sensor.waste_collection_paper.attributes | first | as_timestamp | timestamp_custom("%a, %m.%Y") }} |
  |<ha-icon icon="mdi:leaf"></ha-icon> Biomüll|{{ states.sensor.waste_collection_bio.attributes | first | as_timestamp | timestamp_custom("%a, %m.%Y") }} |
Abfuhrtermine_orginal.png
Abfuhrtermine_orginal.png (24.04 KiB) 1137 mal betrachtet
Gruß
Osorkon
Einer muss ja für Ordnung sorgen. :D
Bertl65
Beiträge: 4
Registriert: Do 8. Feb 2024, 17:43

Re: Formatierung Zeitstempel

Beitrag von Bertl65 »

Servus miteinander,

ich kämpf schon seit Tagen mit dieser Formatierung und komme nicht weiter, drum frag ich jetzt mal ;-)

Ich möchte den Wochentag in deutsch innerhalb von ESPHOME auf einem ePaper ausgeben und habe für die englische Version diese Zeile:

it.strftime(170, 80, id(openSansBold_font),TextAlign::BOTTOM_LEFT, "%A", id(homeassistant_time).now());

Das funktioniert einwandfrei, aber wie muss die Zeile(n) für einen ESP in deutscher Version ausschauen?

Vielen Dank für die Unterstützung und Gruß
Robert

Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Formatierung Zeitstempel

Beitrag von Osorkon »

Hallo @Bertl65 und Herzlich Willkommen bei den SmartHome for Dummies!! :D :D

Bin was das Them ESPHome nicht so fit.
Würde aber ganz pragmatisch sagen.
Du nimmst das Template von oben, erstellst Dir damit einen Template Sensor. Und in ESPHome greifst dann den Template Sensor ab.

Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
Bertl65
Beiträge: 4
Registriert: Do 8. Feb 2024, 17:43

Re: Formatierung Zeitstempel

Beitrag von Bertl65 »

Servus Osorkon,

vielen Dank für die Begrüßung und die schnelle Antwort.

Das Template habe ich schon in HA eingetragen, den Sensor gibt es, ich kann damit eine Karte in HA im Dashboard erstellen.
Aber mit dem Abgriff in ESPHome scheiterts dann. Ich habe die id(homeassistant_time) gegen meine id (zeit_datum) ersetzt. Aber ich komm nicht drauf, womit ich das "%A" ersetzen soll. Und ich vermute durch das %A wird mir immer der englische Wochentag eingesetzt.

Gruß
Robert

manni
Beiträge: 52
Registriert: Do 16. Dez 2021, 13:00
2
Has thanked: 2 times
Been thanked: 3 times

Re: Formatierung Zeitstempel

Beitrag von manni »

Hallo,

ja, das %A ist schon richtig, aber ESPHome ist wohl fest auf ein Gebietsschema festgelegt.
Wenn man das einstellen könnte, würde bei %A automatisch der Wochentag in der eingestellten Sprache erscheinen.
Kann man aber nicht einstellen, so jedenfalls das Ergebnis meiner letzten Suche.
Weiß nicht ob das noch so ist, habe dazu aber nichts weiter gefunden.

Auf deinen Beitrag hin habe ich mich nochmal dran versucht, aber keine Lösung per Formatierung gefunden.
Habe dann einfach den Wochentag abgefragt und per IF angewiesen, welcher in deutsch ausgegeben werden soll.

Code: Alles auswählen

          auto weekday = id(esptime).now().strftime("%A");
          if (weekday == "Friday") {
          it.printf(0, it.get_height() - 14, id(helvetica_12), id(my_green), TextAlign::TOP_LEFT, "Freitag");}
          else if (weekday == "Saturday") {
          it.printf(0, it.get_height() - 14, id(helvetica_12), id(my_green), TextAlign::TOP_LEFT, "Sonnabend");}
          else if (weekday == "Sunday") {
          it.printf(0, it.get_height() - 14, id(helvetica_12), id(my_green), TextAlign::TOP_LEFT, "Sonntag");}
          else if (weekday == "Monday") {
          it.printf(0, it.get_height() - 14, id(helvetica_12), id(my_green), TextAlign::TOP_LEFT, "Montag");}
          else if (weekday == "Tuesday") {
          it.printf(0, it.get_height() - 14, id(helvetica_12), id(my_green), TextAlign::TOP_LEFT, "Dienstag");}
          else if (weekday == "Wednesday") {
          it.printf(0, it.get_height() - 14, id(helvetica_12), id(my_green), TextAlign::TOP_LEFT, "Mittwoch");}
          else if (weekday == "Thursday") {
          it.printf(0, it.get_height() - 14, id(helvetica_12), id(my_green), TextAlign::TOP_LEFT, "Donnerstag");}
          else {
          it.printf(0, it.get_height() - 14, id(helvetica_12), id(my_green), TextAlign::TOP_LEFT, "???");}

Geht bestimmt eleganter, aber auf jeden Fall ist die Anzeige heute um 0:00 Uhr auf Sonnabend umgesprungen.
Bei der Gelegenheit dann auch mal probiert, die Zeit über sntp zu holen.
Mit dem kleinen %a bräuchte man weniger tippern. :-)

Bertl65
Beiträge: 4
Registriert: Do 8. Feb 2024, 17:43

Re: Formatierung Zeitstempel

Beitrag von Bertl65 »

Servus Manni,

vielen Dank für deine Version :-) Wo muss ich diese Zeilen eintragen? In der yaml vom ESP oder in der config? Meine Versuche waren schon wieder erfolglos.

Gruß
Robert

manni
Beiträge: 52
Registriert: Do 16. Dez 2021, 13:00
2
Has thanked: 2 times
Been thanked: 3 times

Re: Formatierung Zeitstempel

Beitrag von manni »

Hallo,

mein Time-Sensor wird in ESPHome so erzeugt, von Homeassistant oder auch über Zeitserver.

Code: Alles auswählen

time:
  - platform: homeassistant
    id: esptime
#  - platform: sntp
#    id: esptime
#    timezone: Europe/Berlin
#    servers:
#     - 0.pool.ntp.org
#     - 1.pool.ntp.org
#     - 2.pool.ntp.org

In der Zeile weiter unten mußt du den Namen deines Zeit-Sensor gegen "esptime" tauschen.
Es wird der Wochentag aus "esptime" abgefragt und "weekday" zugeordnet, hier mit %A für Wochentag ausgeschrieben.

Code: Alles auswählen

  auto weekday = id(esptime).now().strftime("%A");

In den restlichen Zeilen frage ich nur ab, welcher Wochentag grad ist und ordne den Wochentag in deutsch zu.

Code: Alles auswählen

          if (weekday == "Friday") {
          it.printf(0, it.get_height() - 14, id(helvetica_12), id(my_green), TextAlign::TOP_LEFT, "Freitag");}

Mit it.printf(...) gibts du den ganzen Kram auf dein Display aus, die Positionen mußt du natürlich für dein Display anpassen.
Deine Zeile it.strftime(..) angepaßt müßte so lauten:

Code: Alles auswählen

it.strftime(170, 80, id(openSansBold_font),TextAlign::BOTTOM_LEFT, "%A", id(homeassistant_time).now());
it.printf(170, 80, id(openSansBold_font),TextAlign::BOTTOM_LEFT, "Freitag");

Teste erstmal nur die obige it.ptintf(..) Zeile ohne den If Kram anstelle deiner it.strftime(..) Zeile.
Das Ganze in die yaml deines ESPHome Gerätes unter display:.
Und wenn das klappt, den ganzen If Krempel.

Bertl65
Beiträge: 4
Registriert: Do 8. Feb 2024, 17:43

Re: Formatierung Zeitstempel

Beitrag von Bertl65 »

Servus Manni,

vielen, vielen Dank für deine Unterstützung und Erklärung.
Hat einwandfrei funktioniert und der Wochentag wird jetzt in Deutsch dargestellt.

Merci und Gruß
Robert

Antworten