[SOLVED] Timestamp (long) in DateString konvertieren

swa00

New member
Liebe Gemeinde,

ich bin recht neu in Homeassistant und scheitere an einer Yaml Konfiguration

Gegeben:

Ich lese eine Url aus, die ein Json mit nur drei Timestamps beinhaltet.
Diese möchte ich periodisch alle X Minuten auf einer Kachel im DateString-Format ausgeben - mehr nicht .

Code:
{
"maps": 1690302353578,
"alerts": 1690313756300,
"bulklocations": 1690313417323,

}

meine Yaml sieht jetzt so aus

Code:
  - platform: rest
    resource: "https://......"
    method: POST
    name: My-Server
    value_template: "{{ as_timestamp(value_json.alerts, '%Y-%m-%d %H:%M:%S') }}"
    force_update: true

Der Value wird offensichtlich richtig gelesen ,es wird mir allerdings nur der Timestamp als '%Y-%m-%d %H:%M:%S' ausgegeben .
(Also nur der FormatString als Platzhalter)

a) Was mache ich Falsch ?
b) wie bekomme ich das "force_update" auf a lle X-Miunten gesetzt ?

Lieben Dank für euere Mühe im Voraus ..
 
Zuletzt bearbeitet:
Hi,

ohne jetzt groß (oder überhaupt) Ahnung davon zu haben... hast Du es mal ohne die einfachen Anführungszeichen versucht? Also in diese Richtung:
YAML:
(value_json.alerts, %Y-%m-%d %H:%M:%S)

EDIT: Ist jetzt auch ganz schwer ins blaue geraten, kenne es halt primär so, dass Platzhalter/Variablen umgesetzt werden und mit den Anführungszeichen bestimmte Ausdrücke einfach nicht übersetzt werden (z.B. 'Heute ist '$wochentag' und es ist der '$date'. Für den ersten Satz wurden die Variablen $wochentag und $date genutzt.'). Weiss aber nicht, wie das bei HomeAssistant so läuft, daher nur eine Vermutung 🙃 Gibt aber sicherlich noch wesentlich qualifiziertere Antworten als meine... 😅
 
Zuletzt bearbeitet:
Ich danke Dir , aber ohne Anführungszeichen würde das keinen Sinn machen.
Dennoch ausprobiert und leider Compilerfehler
 
Hm, ok, dann warte ggf. einfach besser auf die schlauen HA-Leute (zu denen gehöre ich ganz sicher nicht) 😄
 
Das as_timestamp passt hier nicht, es gibt ja bereits einen Timestamp, das ist aber nicht die gewünschte Ausgabe. Zusätzliche kleine Fallstricke, as_datetime was hier passen würde akzeptiert keinen so langen Timestamp und aktuell ist es offensichtlich Int, wir benötigen aber String als Eingabe.
YAML:
{{ (as_datetime((value_json.alerts | string)[:10]) | string)[:19] }}
Das datetime object dann nochmal zu String konvertieren und auf 19 Zeichen begrenzen, um das sonst angehängte "+00:00" zu entfernen, das entspricht dann dem Wunschformat.
 
Der Zeitstempel hat 3 Stellen zuviel, wahrscheinlich in ms.

YAML:
{{ (value_json.alerts / 1000) | timestamp_custom("%Y-%m-%d %H:%M:%S") }}
 
@Nival

Herzlichen Dank - jetzt bekomme ich zumindest mal einen gültigen String :-)

Inwiefern müsste ich es erweitern, um die TimeZone zu berücksichtigen und das Format zu ändern ?
Lieben Dank im Voraus


@Osorkon
Dein Vorschlag mag irgendwie nicht - aber das mit den ms / Sek habe ich eingesehen ..
Dennoch auch Dir danke für deine Mühe
 
Inwiefern müsste ich es erweitern, um die TimeZone zu berücksichtigen und das Format zu ändern ?
YAML:
{{ (as_datetime((value_json.alerts | string)[:10]) | as_local).strftime('%Y-%m-%d %H:%M:%S') }}
Das as_local berücksichtigt die lokale Timezone, mit strftime kannst Du ein individuelles Format ausgeben lassen.
 

Letzte Anleitungen

Statistik des Forums

Themen
7.254
Beiträge
70.709
Mitglieder
7.695
Neuestes Mitglied
smartuser
Zurück
Oben