Seite 1 von 1

Formatierung Zeitstempel

Verfasst: Di 2. Nov 2021, 13:36
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

Re: Formatierung Zeitstempel

Verfasst: Di 2. Nov 2021, 16:14
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.

Re: Formatierung Zeitstempel

Verfasst: Di 2. Nov 2021, 18:13
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

Re: Formatierung Zeitstempel

Verfasst: Mi 8. Dez 2021, 13:06
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.

Re: Formatierung Zeitstempel

Verfasst: Mi 8. Dez 2021, 13:40
von Osorkon
Wie kommst Du auf einen Kalender?

Der Screenshot im ersten Beitag ist aus dem Template Editor.

Gruß
Osorkon

Re: Formatierung Zeitstempel

Verfasst: Mi 8. Dez 2021, 14:26
von m4d-maNu
Meinte den Anhang aus Beitrag 3

Re: Formatierung Zeitstempel

Verfasst: Di 21. Dez 2021, 21:32
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) 1264 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) 1264 mal betrachtet
Gruß
Osorkon

Re: Formatierung Zeitstempel

Verfasst: Do 8. Feb 2024, 17:55
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


Re: Formatierung Zeitstempel

Verfasst: Do 8. Feb 2024, 19:58
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


Re: Formatierung Zeitstempel

Verfasst: Do 8. Feb 2024, 21:30
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


Re: Formatierung Zeitstempel

Verfasst: Sa 10. Feb 2024, 10:54
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. :-)


Re: Formatierung Zeitstempel

Verfasst: Mo 12. Feb 2024, 15:22
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


Re: Formatierung Zeitstempel

Verfasst: Di 13. Feb 2024, 15:11
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.


Re: Formatierung Zeitstempel

Verfasst: Fr 16. Feb 2024, 18:14
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