NEWS
DWD Adapter VIS Zeitformatierung
-
@SBorg sagte in DWD Adapter VIS Zeitformatierung:
@aleks-83 Ich vermute mal als Blockly? Dann musst du einen "Konvertierung --> nach Datum/Zeit" - Baustein davor setzen.
Hab dasselbe "Problem". Habe folgendes Javascript und bekomme die Umformatierung nicht hin:
function SendDWDWarning() { var Begin = getState("dwd.0.warning.begin").val; var End = getState("dwd.0.warning.end").val; var text = getState("dwd.0.warning.text").val; var Headline = getState("dwd.0.warning.headline").val; var Description = getState("dwd.0.warning.description").val; var DWD_telegramm = "Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ": " + Description ; sendTo ("telegram.0", DWD_telegramm); } on("dwd.0.warning.severity", function (obj) { if (obj.newState.val !==0) { setTimeout(SendDWDWarning, 30 * 1000); } if (obj.newState.val === 0) { sendTo ("telegram.0", "Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben.") ; } log ( "Wetterwarnungen " + text + " gültig vom " + Begin + " bis " + End + ': ' + Description); });
Wenn ich nun folgendes ändere:
var Begin = formatDate(new Date(getState(„dwd.0.warning.begin“).val), „TT.MM.JJJJ hh:mm:ss“) var End = formatDate(new Date(getState(„dwd.0.warning.end“).val), „TT.MM.JJJJ hh:mm:ss“)
dann erscheint eine Fehlermeldung im log:
javascript.0 (2135) script.js.common.Telegram_Wetterwarnung compile failed: at script.js.common.Telegram_Wetterwarnung:3
Jemand eine Idee?
-
@Termina So einfach geht es dann doch nicht
Hier eine neue Funktion:
function convertTimestamp(timestamp) { // Unix in Milliseconds! var d = new Date(timestamp), yyyy = d.getFullYear(), mm = ('0' + (d.getMonth() + 1)).slice(-2), // Months are zero based. Add leading 0. dd = ('0' + d.getDate()).slice(-2), // Add leading 0 hh = ('0' + d.getHours()).slice(-2), // Add leading 0 min = ('0' + d.getMinutes()).slice(-2), // Add leading 0 sec = ('0' + d.getSeconds()).slice(-2), // Add leading 0 day = d.getDay(), // Wochentag days = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], time; time = days[d.getDay()] + ', ' + dd + '.' + mm + '.' + yyyy + ', ' + hh + ':' + min + ':' + sec; return time; }
In #13 baust du dir dann das Aussehen zusammen. Hier wäre es dann bspw. Samstag, 04.04.2020, 13:00:00
Der Aufruf wäre dann zB. var Begin = convertTimestamp(getState("dwd.0.warning.begin").val);
-
@SBorg
Vielen Dank dafür, ich habe nun Deine Funktion vor die "SendDWDWarning" Funktion gesetzt. Ist das verkehrt? Ich bekomme nämlich nun folgende Fehlermeldung im log:error javascript.0 (2230) script.js.common.Telegram_Wetterwarnung compile failed: at script.js.common.Telegram_Wetterwarnung:22
PS: Ich habe gar keine Ahnung von Jacvascript... sry!
-
@Termina sagte in DWD Adapter VIS Zeitformatierung:
PS: Ich habe gar keine Ahnung von Jacvascript... sry!
Kein Problem, fragen, fragen... dafür ist das Forum doch auch da
Die kpl. Funktion fügst du 1:1 in dein JS ein. Dann ersetzt du Zeile #3+4var Begin = getState("dwd.0.warning.begin").val; var End = getState("dwd.0.warning.end").val;
durch
var Begin = convertTimestamp(getState("dwd.0.warning.begin").val); var End = convertTimestamp(getState("dwd.0.warning.end").val);
Wenn es dann funktioniert und dir das Format (Wochentag, Datum...) nicht gefällt, kannst du in der Funktion dann das Aussehen noch beeinflussen:
time = days[d.getDay()] + ', ' + dd + '.' + mm + '.' + yyyy + ', ' + hh + ':' + min + ':' + sec;
-
@SBorg
Sorry für die späte Rückmeldung - aber hat funktioniert - DANKE! -
@SBorg sagte in DWD Adapter VIS Zeitformatierung:
Steht im DWD-Adapter Thread: nimm als Widget Timestamp Value
Das habe ich versucht. Nur leider wird das Widget zwar in der Vorschau auf dem PC angezeigt, nicht aber auf dem Tablet.
-
Schaut mal hier:
-
Danke, aber ich finde in dem Beitrag nichts wo es darum geht das ein Widget nicht angezeigt wird, oder übersehe ich da was?
-
Sorry, ich war bei der Anzeige der Zeit im richtigen Format .
Das Widget wird in der App nicht angezeigt da die App das Widget nicht kennt und ein Update erforderlich ist. Das Problem Gibt es für einige Widgets .
-
@SBorg sagte in DWD Adapter VIS Zeitformatierung:
@aleks-83 Ich vermute mal als Blockly? Dann musst du einen "Konvertierung --> nach Datum/Zeit" - Baustein davor setzen.
Das hat kurzzeitig funktioniert.
Jetzt wird aber trotz des Bausteins "nach Datum/Zeit" immer noch der Linux-Zeitstempel geschrieben.
JavaScript 4.6.17
DWD 2.4.9 -
@aleks-83 Da hat sich wohl wieder was geändert
Etwas aufwändiger (JS-Funktion), dafür "überlebt" es aber auch weitere Änderungen:
Blockly-ExportIm Grunde musst du dann nur den "nach Datum/Zeit" durch den neuen "Timestamp mit millis" ersetzen.
In der Funktion (zu öffnen mit den...
am Ende) kannst du in Zeile #12 die Ausgabe formatieren....und nicht wundern, der "Brandson..." zum testen enthält bei mir tatsächlich einen Unix-Timestamp
-
@SBorg
Funktioniert perfekt!
Danke dir