[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.
 

Zurzeit aktive Besucher

Keine Mitglieder online.

Letzte Anleitungen

Statistik des Forums

Themen
6.115
Beiträge
59.425
Mitglieder
6.160
Neuestes Mitglied
gonzo12345
Zurück
Oben