NEWS
DWD Adapter VIS Zeitformatierung
-
@ChrisXY Steht im DWD-Adapter Thread: nimm als Widget Timestamp Value
-
hmm ich hab da nichts gefunden. Ich will ja das DWD Widget nutzen und da nicht selbst etwas bauen. Um die Zeit umzurechnen das kenne ich. Jedoch in DWD Adapter ist das ja alles schon fertig. Damit hab ich es auch in 3 VIS verbaut. Will da ungerne jetzt alles umbauen.
-
@ChrisXY Dann musst du wohl oder übel auf ein Update des DWD-Widgets warten. Das ist noch nicht auf den Unix-Timestamp ("die ellenlange Zahl") umgestellt.
-
@SBorg okay besten Dank
Dann warte ich.
-
@ChrisXY Du könntest temporär aber auch oben genanntes Widget nehmen, die Zeit nach deinen Vorstellungen formatieren, es "auf" das DWD-Widget schieben (dort wo normalerweise die Zeitangabe steht) und ihm einen höheren "z-index" verpassen. Dann überdeckt es die "falsche" Zeitangabe.
-
@SBorg ja könnte man machen. Wollte eh mal ein popup Widget machen mit dem kleinen DWD Widget und das dort bei Klick dann ein Layer kommt. Aber das wäre wieder ein Punkt auf einer langen Todo
-
@SBorg sagte in DWD Adapter VIS Zeitformatierung:
@ChrisXY Steht im DWD-Adapter Thread: nimm als Widget Timestamp Value
Der Tipp hat mir geholfen. Besten Dank.
Wenn sich die Warnstufe auf über 3 ändert, schicke ich mir noch ne telegram message.
Diese beinhaltet auch Start- und Endzeit. Wie kann ich diese denn dann umwandeln? -
@aleks-83 Ich vermute mal als Blockly? Dann musst du einen "Konvertierung --> nach Datum/Zeit" - Baustein davor setzen.
-
@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