NEWS
Test Withings v0.0.x
-
@Tino-0
die Zeitangabe ist immer noch vom Typ String, jetzt allerdings in einem ISO-Format.
Sollte das nicht wie für Datum-/Zeit-Werte in Javascript und ioBroker üblich eine Zahl sein, die die Millisekunden seit dem 1.1.1970 angibt (Unix-Angabe)?
Die date-Angaben der measuregrpsXX sind doch auch vom Typ Number und geben die Millisekunden an. -
@Tino-0
die Zeitangabe ist immer noch vom Typ String, jetzt allerdings in einem ISO-Format.
Sollte das nicht wie für Datum-/Zeit-Werte in Javascript und ioBroker üblich eine Zahl sein, die die Millisekunden seit dem 1.1.1970 angibt (Unix-Angabe)?
Die date-Angaben der measuregrpsXX sind doch auch vom Typ Number und geben die Millisekunden an.die war im ISO Format 2025-11-18T06:06:05.000Z jetzt ist sie in .toLocaleString("de-DE")
- ISO-8601 (der Standard für alles, ideal fürs Logging & ioBroker)
new Date(ts * 1000).toISOString() Format: 2025-02-19T10:32:55.000Z ✓ Maschinentauglich ✓ Sortierbar ✓ Universell ✓ ioBroker liebt es- Lokales Datum + Zeit (z.B. „2025-02-19 11:32:55“)
new Date(ts * 1000).toLocaleString("de-DE") Beispiel: 19.02.2025, 11:32:55- Nur Datum
new Date(ts * 1000).toLocaleDateString("de-DE") Ergebnis: 19.02.2025- Nur Uhrzeit
new Date(ts * 1000).toLocaleTimeString("de-DE") Ergebnis: 11:32:55- UNIX Timestamp
Wenn du den Rohwert willst: ts // Sekunden Date.now() // MillisekundenWas willst du haben?
Gruß Tino
-
"Was willst du haben?" :blush: ja ja, hab verstanden :blush:
ernsthaft: auf keinen Fall einen String, ganz normal die Millisekunden seit dem 1.1.1970 als Typ Number,
also z.B. 1763502691926 für jetzt, damit kann man problemlos jedes gewünschte Anwenderformat erzeugenGruß Achim
-
"Was willst du haben?" :blush: ja ja, hab verstanden :blush:
ernsthaft: auf keinen Fall einen String, ganz normal die Millisekunden seit dem 1.1.1970 als Typ Number,
also z.B. 1763502691926 für jetzt, damit kann man problemlos jedes gewünschte Anwenderformat erzeugenGruß Achim
-
uff...
- XX_timestamp hat den richtigen Zahlenwert
- wenn die Eigenschaft "role" für XX_timestamp nicht "value" sondern "date" ist, erhält man im Objektbaum des ioBrokers auch eine Darstellung als Datum, obwohl es immer noch eine Zahl ist, nach der man sortieren kann, Differenzen bilden kann, in jedem beliebigen Datums- / Zeitformat anzeigen lassen kann etc.
Dann ist ein zusätzlicher Datenpunkt mit dem Datum als String nicht mehr erforderlich, eher verwirrend, und XX_update könnte entfallen.
Vorschlag: Entweder XX_timestamp (würde ich bevorzugen) oder XX_updateIch habe das mal im Objektbaum für 1_timestamp geändert:


-
uff...
- XX_timestamp hat den richtigen Zahlenwert
- wenn die Eigenschaft "role" für XX_timestamp nicht "value" sondern "date" ist, erhält man im Objektbaum des ioBrokers auch eine Darstellung als Datum, obwohl es immer noch eine Zahl ist, nach der man sortieren kann, Differenzen bilden kann, in jedem beliebigen Datums- / Zeitformat anzeigen lassen kann etc.
Dann ist ein zusätzlicher Datenpunkt mit dem Datum als String nicht mehr erforderlich, eher verwirrend, und XX_update könnte entfallen.
Vorschlag: Entweder XX_timestamp (würde ich bevorzugen) oder XX_updateIch habe das mal im Objektbaum für 1_timestamp geändert:


-
Perfekt!
Vielen Dank für Deine Arbeit, Mühen und die Geduld.
Mir hat der Abend viel Spaß bereitet, jetzt reicht es aber auch.
Viele Grüße und gute Nacht
Achim -
Perfekt!
Vielen Dank für Deine Arbeit, Mühen und die Geduld.
Mir hat der Abend viel Spaß bereitet, jetzt reicht es aber auch.
Viele Grüße und gute Nacht
Achim -
@Tino-0
Moin,
ich hab auch noch was:
tsRaw ist um Faktor 1000 zu klein, zur Zeit sind das Sekunden, es müssen aber für ein richtiges Datum-Objekt Millisekunden sein.Zeile 398 müsste mMn dann so aussehen (gerade getestet):
const tsRaw = Number(grp.date * 1000) || null; // MillisekundenEdit:
Im Objektbaum wird das Datum mit dem zu kleinen Wert zwar richtig angezeigt (warum?), wenn man aber den Wert editiert, stimmt das Datum in den Datumsfeldern die dann angezeigt werden nicht mehr. Mit Faktor 1000 passt es.Edit:
Die Withings-Api liefert wohl generell Sekunden statt Millisekunden... -
const tsRaw = typeof grp.date === "number" ? grp.date * 1000 : null;
-
Super und nochmal vielen Dank!
Gruß Achim