NEWS
Test Withings v0.0.x
-
Bitte die komplette Ausgabe zeigen.
@thomas-braun
Wieso möchtest du das so genau wissen? Aber ich habe nichts zu verbergen:/usr/bin/nodejs /usr/bin/node /usr/bin/npm v14.18.2 v14.18.2 6.14.15 pi OK:1 https://deb.nodesource.com/node_14.x buster InRelease OK:2 http://archive.raspberrypi.org/debian buster InRelease OK:3 http://raspbian.raspberrypi.org/raspbian buster InRelease Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Alle Pakete sind aktuell. nodejs: Installiert: 14.18.2-deb-1nodesource1 Installationskandidat: 14.18.2-deb-1nodesource1 Versionstabelle: *** 14.18.2-deb-1nodesource1 500 500 https://deb.nodesource.com/node_14.x buster/main armhf Packages 100 /var/lib/dpkg/status 10.24.0~dfsg-1~deb10u1 500 500 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages -
@thomas-braun
Wieso möchtest du das so genau wissen? Aber ich habe nichts zu verbergen:/usr/bin/nodejs /usr/bin/node /usr/bin/npm v14.18.2 v14.18.2 6.14.15 pi OK:1 https://deb.nodesource.com/node_14.x buster InRelease OK:2 http://archive.raspberrypi.org/debian buster InRelease OK:3 http://raspbian.raspberrypi.org/raspbian buster InRelease Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Alle Pakete sind aktuell. nodejs: Installiert: 14.18.2-deb-1nodesource1 Installationskandidat: 14.18.2-deb-1nodesource1 Versionstabelle: *** 14.18.2-deb-1nodesource1 500 500 https://deb.nodesource.com/node_14.x buster/main armhf Packages 100 /var/lib/dpkg/status 10.24.0~dfsg-1~deb10u1 500 500 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages@robson sagte in Test Withings v0.0.x:
Wieso möchtest du das so genau wissen? Aber ich habe nichts zu verbergen:
Weil hier schon mehr als einmal jemand behauptet hat:
Jaja, alles richtig installiert! Natürlich!Und bei Rückfrage war dann doch alles krumm im System.
Aber bist entlassen, passt alles.

-
@tombox Wow! Vielen Dank für den Adapter. Der Login und die Daten holen hat problemlos geklappt

Eine Frage zum sleepSummary. Dort befinden sich die Tage als Ordner. Die Ordnernamen verstehe ich jedoch nicht (Zahlenkombination anscheint die ID). Hättest du dafür eine Beschreibung?
Hier wäre eine Ordnerstruktur gut, die immer gleich bleibt. Also zum Beispiel. Heute, Minus Erster Tag, Minus 2 Tag etc..

@stadtschloss sagte in Test Withings v0.0.x:
@tombox Wow! Vielen Dank für den Adapter. Der Login und die Daten holen hat problemlos geklappt

Eine Frage zum sleepSummary. Dort befinden sich die Tage als Ordner. Die Ordnernamen verstehe ich jedoch nicht (Zahlenkombination anscheint die ID). Hättest du dafür eine Beschreibung?
Hier wäre eine Ordnerstruktur gut, die immer gleich bleibt. Also zum Beispiel. Heute, Minus Erster Tag, Minus 2 Tag etc..

Ich weiß nicht, ob es bei mir bereits die von @tombox angesprochenen Änderungen sind, aber die Schlafdaten meines Aura Sensor V2 werden wie folgt dargestellt:

Die gelb markierte ID, ist die Nummer, die bei dir die Ordnernamen darstellt.
-
@tombox Was ich aktuell noch vermisse, ist der Status, den mein Sleep Sensor ausgibt. True = im Bett, False = nicht im Bett.
Ich habe mir mal die API-Beschreibung bei Withings angeschaut. Kann es sein, dass dies der "sleep state" ist? Den finde ich nämlich aktuell in meinen Objekten nicht.

Hintergrund: über diesen Status steuere ich aktuell Aktivierung/Deaktivierung des Hüllschutzes im Haus. MeineAbfrage läuft aktuell über IFTTT. Das ist aber leider fehleranfällig und träge.
-
@stadtschloss sagte in Test Withings v0.0.x:
@tombox Wow! Vielen Dank für den Adapter. Der Login und die Daten holen hat problemlos geklappt

Eine Frage zum sleepSummary. Dort befinden sich die Tage als Ordner. Die Ordnernamen verstehe ich jedoch nicht (Zahlenkombination anscheint die ID). Hättest du dafür eine Beschreibung?
Hier wäre eine Ordnerstruktur gut, die immer gleich bleibt. Also zum Beispiel. Heute, Minus Erster Tag, Minus 2 Tag etc..

Ich weiß nicht, ob es bei mir bereits die von @tombox angesprochenen Änderungen sind, aber die Schlafdaten meines Aura Sensor V2 werden wie folgt dargestellt:

Die gelb markierte ID, ist die Nummer, die bei dir die Ordnernamen darstellt.
@robson Gut dass das funktioniert hat ist nur die frage ob das oberste element immer das aktuellste ist und ist die frage ob der andere endpunkt auch relevant ist
"Provides the sleep measures for the night of the user, with the details of each phase of their sleep cycle." -
@tombox Was ich aktuell noch vermisse, ist der Status, den mein Sleep Sensor ausgibt. True = im Bett, False = nicht im Bett.
Ich habe mir mal die API-Beschreibung bei Withings angeschaut. Kann es sein, dass dies der "sleep state" ist? Den finde ich nämlich aktuell in meinen Objekten nicht.

Hintergrund: über diesen Status steuere ich aktuell Aktivierung/Deaktivierung des Hüllschutzes im Haus. MeineAbfrage läuft aktuell über IFTTT. Das ist aber leider fehleranfällig und träge.
-
@robson Gut dass das funktioniert hat ist nur die frage ob das oberste element immer das aktuellste ist und ist die frage ob der andere endpunkt auch relevant ist
"Provides the sleep measures for the night of the user, with the details of each phase of their sleep cycle."@tombox sagte in Test Withings v0.0.x:
@robson Gut dass das funktioniert hat ist nur die frage ob das oberste element immer das aktuellste ist und ist die frage ob der andere endpunkt auch relevant ist
"Provides the sleep measures for the night of the user, with the details of each phase of their sleep cycle."Das aktuellste Element (die letzte Nacht) ist immer der letzte Eintrag. Bei mir aktuell #29. Ich gehe davon aus, dass die Daten nach einem Monat überschrieben werden. Da ich bereits 29 Elemente habe, kann ich in ein paar Tagen berichten.

-
@tombox sagte in Test Withings v0.0.x:
@robson Gut dass das funktioniert hat ist nur die frage ob das oberste element immer das aktuellste ist und ist die frage ob der andere endpunkt auch relevant ist
"Provides the sleep measures for the night of the user, with the details of each phase of their sleep cycle."Das aktuellste Element (die letzte Nacht) ist immer der letzte Eintrag. Bei mir aktuell #29. Ich gehe davon aus, dass die Daten nach einem Monat überschrieben werden. Da ich bereits 29 Elemente habe, kann ich in ein paar Tagen berichten.

-
@robson Ich habe mal den sleep get endpoint hinzugefügt aber keine ahnung wie daten aussehen die da rausfallen
@tombox sagte in Test Withings v0.0.x:
ch habe mal den sleep get endpoint hinzugefügt aber keine ahnung wie daten aussehen die da rausfallen
Ich schaue mir das mal an. Einen Boolean State für den Status des Sleep Sensors hast du nicht noch zufällig irgendwo gefunden, den ich nutzen könnte?
Der Sleep Get Endpoint scheint etwas anderes zu sein. -
@tombox sagte in Test Withings v0.0.x:
ch habe mal den sleep get endpoint hinzugefügt aber keine ahnung wie daten aussehen die da rausfallen
Ich schaue mir das mal an. Einen Boolean State für den Status des Sleep Sensors hast du nicht noch zufällig irgendwo gefunden, den ich nutzen könnte?
Der Sleep Get Endpoint scheint etwas anderes zu sein. -
@tombox Leider bleibt der Adapter rot. Die Tokens usw. stimmen. An was könnte das liegen?
host.iobroker 2022-01-06 22:29:47.137 error instance system.adapter.withings.0 terminated with code 6 (UNCAUGHT_EXCEPTION) host.iobroker 2022-01-06 22:29:47.137 error Caught by controller[0]: at Withings.onReady (/opt/iobroker/node_modules/iobroker.withings/main.js:62:9) host.iobroker 2022-01-06 22:29:47.137 error Caught by controller[0]: at Withings.login (/opt/iobroker/node_modules/iobroker.withings/main.js:134:22) host.iobroker 2022-01-06 22:29:47.137 error Caught by controller[0]: at processTicksAndRejections (internal/process/task_queues.js:95:5) host.iobroker 2022-01-06 22:29:47.137 error Caught by controller[0]: at /opt/iobroker/node_modules/iobroker.withings/main.js:155:77 host.iobroker 2022-01-06 22:29:47.137 error Caught by controller[0]: TypeError: Cannot read property 'split' of undefined host.iobroker 2022-01-06 22:29:47.137 error Caught by controller[0]: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected withings.0 2022-01-06 22:29:46.521 warn (29954) Terminated (UNCAUGHT_EXCEPTION): Without reason withings.0 2022-01-06 22:29:46.521 info (29954) terminating withings.0 2022-01-06 22:29:46.509 error (29954) Cannot read property 'split' of undefined withings.0 2022-01-06 22:29:46.509 error (29954) TypeError: Cannot read property 'split' of undefined at /opt/iobroker/node_modules/iobroker.withings/main.js:155:77 at processTicksAndRejections (internal/process/task_queues.js:95:5) withings.0 2022-01-06 22:29:46.507 error (29954) unhandled promise rejection: Cannot read property 'split' of undefined withings.0 2022-01-06 22:29:46.507 error (29954) Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). meross.0 2022-01-06 22:29:46.026 warn (11554) Can not get Abilities for Device 1909026636379339089948e1e95136a7: Error: Timeout / undefined withings.0 2022-01-06 22:29:45.204 info (29954) starting. Version 0.0.1 in /opt/iobroker/node_modules/iobroker.withings, node: v14.17.0, js-controller: 3.3.22 host.iobroker 2022-01-06 22:29:44.491 info instance system.adapter.withings.0 started with pid 29954 -
@tombox Leider bleibt der Adapter rot. Die Tokens usw. stimmen. An was könnte das liegen?
host.iobroker 2022-01-06 22:29:47.137 error instance system.adapter.withings.0 terminated with code 6 (UNCAUGHT_EXCEPTION) host.iobroker 2022-01-06 22:29:47.137 error Caught by controller[0]: at Withings.onReady (/opt/iobroker/node_modules/iobroker.withings/main.js:62:9) host.iobroker 2022-01-06 22:29:47.137 error Caught by controller[0]: at Withings.login (/opt/iobroker/node_modules/iobroker.withings/main.js:134:22) host.iobroker 2022-01-06 22:29:47.137 error Caught by controller[0]: at processTicksAndRejections (internal/process/task_queues.js:95:5) host.iobroker 2022-01-06 22:29:47.137 error Caught by controller[0]: at /opt/iobroker/node_modules/iobroker.withings/main.js:155:77 host.iobroker 2022-01-06 22:29:47.137 error Caught by controller[0]: TypeError: Cannot read property 'split' of undefined host.iobroker 2022-01-06 22:29:47.137 error Caught by controller[0]: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected withings.0 2022-01-06 22:29:46.521 warn (29954) Terminated (UNCAUGHT_EXCEPTION): Without reason withings.0 2022-01-06 22:29:46.521 info (29954) terminating withings.0 2022-01-06 22:29:46.509 error (29954) Cannot read property 'split' of undefined withings.0 2022-01-06 22:29:46.509 error (29954) TypeError: Cannot read property 'split' of undefined at /opt/iobroker/node_modules/iobroker.withings/main.js:155:77 at processTicksAndRejections (internal/process/task_queues.js:95:5) withings.0 2022-01-06 22:29:46.507 error (29954) unhandled promise rejection: Cannot read property 'split' of undefined withings.0 2022-01-06 22:29:46.507 error (29954) Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). meross.0 2022-01-06 22:29:46.026 warn (11554) Can not get Abilities for Device 1909026636379339089948e1e95136a7: Error: Timeout / undefined withings.0 2022-01-06 22:29:45.204 info (29954) starting. Version 0.0.1 in /opt/iobroker/node_modules/iobroker.withings, node: v14.17.0, js-controller: 3.3.22 host.iobroker 2022-01-06 22:29:44.491 info instance system.adapter.withings.0 started with pid 29954 -
@tombox hatte meine Frau als "Gast" drin. Habe sie gelöscht (den Account
), die Adapterinstanz gelöscht und eine neue angelegt.
Immer noch das gleiche.
Muss jetzt mal ins Bett. Wenn du keinen Tip hast könnte ich dir morgen mal meine Accountdaten zukommen lassen. -
@tombox hatte meine Frau als "Gast" drin. Habe sie gelöscht (den Account
), die Adapterinstanz gelöscht und eine neue angelegt.
Immer noch das gleiche.
Muss jetzt mal ins Bett. Wenn du keinen Tip hast könnte ich dir morgen mal meine Accountdaten zukommen lassen. -
@tombox sagte in Test Withings v0.0.x:
@robson Wie gesagt ich habe kein Gerät ich benötige noch ein Account mit Geräten
Hi,
ich habe jetzt die neueste Version installiert.
Es gibt einen neuen Objekte-Ordner "Sleep", in dem bei mir 130 unterschiedliche Unterordner (series01, series02, etc) hängen. Die Daten darin kann ich ehrlich gesagt wenig deuten. Vor allem nicht die in den Ordnern "hr" und "rr".

Das Setting zum Abrufen der Daten für x Tage ist per Default auf 30 Tage eingestellt.

Zudem ist mir aufgefallen, dass die Werte Zeitstempel aktuell nur bedingt brauchbar sind. Könnte es sein, dass die aktuell als Datums-Objekte abgelegt werden? So steht bspw. im Objekt "startdate" 1641505920. Das ergibt bei mir umgerechnet 1970.01.20. Nur eine Vermutung.
-
@tombox sagte in Test Withings v0.0.x:
@robson Wie gesagt ich habe kein Gerät ich benötige noch ein Account mit Geräten
Hi,
ich habe jetzt die neueste Version installiert.
Es gibt einen neuen Objekte-Ordner "Sleep", in dem bei mir 130 unterschiedliche Unterordner (series01, series02, etc) hängen. Die Daten darin kann ich ehrlich gesagt wenig deuten. Vor allem nicht die in den Ordnern "hr" und "rr".

Das Setting zum Abrufen der Daten für x Tage ist per Default auf 30 Tage eingestellt.

Zudem ist mir aufgefallen, dass die Werte Zeitstempel aktuell nur bedingt brauchbar sind. Könnte es sein, dass die aktuell als Datums-Objekte abgelegt werden? So steht bspw. im Objekt "startdate" 1641505920. Das ergibt bei mir umgerechnet 1970.01.20. Nur eine Vermutung.
-
@tombox Bei mir crashed die Instanz beim Start. Vielleicht weil ich mehrere Benutzer in meinem Withings-Account habe? Wie man im HTML des logs sieht kommt nach dem Login eine Abfrage von Withings welchen Profil man laden möchte (welcher womöglich nicht kommt wenn man nur eine Person in seinem Account hat). Ziel des Adapters sollte natürlich sein die Daten von allen Profilen zu laden.
(Anyonymisiertes) Log:
host.iobroker-pi4 2022-01-06 17:24:48.121 warn Do not restart adapter system.adapter.withings.0 because restart loop detected host.iobroker-pi4 2022-01-06 17:24:48.121 error instance system.adapter.withings.0 terminated with code 6 (UNCAUGHT_EXCEPTION) host.iobroker-pi4 2022-01-06 17:24:48.121 error Caught by controller[2]: at Withings.onReady (/opt/iobroker/node_modules/iobroker.withings/main.js:62:9) host.iobroker-pi4 2022-01-06 17:24:48.120 error Caught by controller[2]: at Withings.login (/opt/iobroker/node_modules/iobroker.withings/main.js:134:22) host.iobroker-pi4 2022-01-06 17:24:48.120 error Caught by controller[2]: at processTicksAndRejections (internal/process/task_queues.js:97:5) host.iobroker-pi4 2022-01-06 17:24:48.120 error Caught by controller[2]: at /opt/iobroker/node_modules/iobroker.withings/main.js:155:77 host.iobroker-pi4 2022-01-06 17:24:48.120 error Caught by controller[2]: TypeError: Cannot read property 'split' of undefined host.iobroker-pi4 2022-01-06 17:24:48.119 error Caught by controller[1]: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: host.iobroker-pi4 2022-01-06 17:24:48.119 error Caught by controller[0]: at Withings.onReady (/opt/iobroker/node_modules/iobroker.withings/main.js:62:9) host.iobroker-pi4 2022-01-06 17:24:48.119 error Caught by controller[0]: at Withings.login (/opt/iobroker/node_modules/iobroker.withings/main.js:134:22) host.iobroker-pi4 2022-01-06 17:24:48.119 error Caught by controller[0]: at processTicksAndRejections (internal/process/task_queues.js:97:5) host.iobroker-pi4 2022-01-06 17:24:48.118 error Caught by controller[0]: at /opt/iobroker/node_modules/iobroker.withings/main.js:155:77 host.iobroker-pi4 2022-01-06 17:24:48.118 error Caught by controller[0]: TypeError: Cannot read property 'split' of undefined host.iobroker-pi4 2022-01-06 17:24:48.113 error Caught by controller[0]: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: withings.0 2022-01-06 17:24:47.552 silly States user redis pmessage withings.0.*/withings.0.info.connection:{"val":false,"ack":true,"ts":1641486287548,"q":0,"from":"system.adapter.withings.0","user":"system.user.admin","lc":1641485890382} withings.0 2022-01-06 17:24:47.492 warn Terminated (UNCAUGHT_EXCEPTION): Without reason withings.0 2022-01-06 17:24:47.491 debug Plugin sentry destroyed withings.0 2022-01-06 17:24:47.489 info terminating withings.0 2022-01-06 17:24:47.466 error Cannot read property 'split' of undefined withings.0 2022-01-06 17:24:47.465 error TypeError: Cannot read property 'split' of undefined at /opt/iobroker/node_modules/iobroker.withings/main.js:155:77 at processTicksAndRejections (internal/process/task_queues.js:97:5) at Withings.login (/opt/iobroker/node_modules/iobroker.withings/main.js:134:22) at Withings.onReady (/opt/iobroker/node_modules/iobroker.withings/main.js:62:9) withings.0 2022-01-06 17:24:47.454 error unhandled promise rejection: Cannot read property 'split' of undefined withings.0 2022-01-06 17:24:47.452 error Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). withings.0 2022-01-06 17:24:47.449 debug {"date":"Thu, 06 Jan 2022 16:24:47 GMT","server":"Apache","content-security-policy":"frame-ancestors 'self' https://healthmate.withings.com/ https://care.withings.com/ https://care.us.withingsmed.com/","strict-transport-security":"max-age=10368000","x-xss-protection":"1","x-content-type-options":"nosniff","referrer-policy":"strict-origin-when-cross-origin","cache-control":"no-store","set-cookie":["session_key=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; domain=withings.com","session_is_verified=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; domain=withings.com","cookie_2fa_validation_key=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; domain=withings.com","ns_af=DhwiD832nkkfj2; path=/; HttpOnly; Secure; SameSite=Lax"],"location":"/oauth2_user/account_login?response_type=code&client_id=<myClientId>&state=h4fhjnc2daoc3m&scope=user.activity%2Cuser.metrics%2Cuser.info&redirect_uri=http%3A%2F%2Flocalhost&b=authorize2&b=user_select","x-frame-options":"ALLOW-FROM https://healthmate.withings.com/","content-length":"0","content-type":"text/html; charset=UTF-8","connection":"close"} withings.0 2022-01-06 17:24:47.207 debug "<!DOCTYPE html>\n<html>\n\t<head>\n\t\t<!-- aaf8d2b4 -->\n\t\t<title>Wählen Sie einen Nutzer aus</title>\n\t\t<meta charset=\"utf-8\">\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no\">\n\t\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n\t\t<link rel=\"shortcut icon\" href=\"/favicon.png\" type=\"image/x-icon\">\n\n\t\t<link rel=\"apple-touch-icon\" href=\"/favicon.png\" sizes=\"57x57\">\n\t <link rel=\"apple-touch-icon\" href=\"/favicon.png\" sizes=\"72x72\">\n\t <link rel=\"apple-touch-icon\" href=\"/favicon.png\" sizes=\"76x76\">\n\t <link rel=\"apple-touch-icon\" href=\"/favicon.png\" sizes=\"114x114\">\n\t <link rel=\"apple-touch-icon\" href=\"/favicon.png\" sizes=\"120x120\">\n\t <link rel=\"apple-touch-icon\" href=\"/favicon.png\" sizes=\"144x144\">\n\t <link rel=\"apple-touch-icon\" href=\"/favicon.png\" sizes=\"152x152\">\n\n\t\t\t\t\t<link href=\"/min/g=baseCSS&aaf8d2b4\" rel=\"stylesheet\" type=\"text/css\" media=\"screen\">\n\t\t\t<link href=\"/min/g=blockCSS&aaf8d2b4\" rel=\"stylesheet\" type=\"text/css\" media=\"screen\">\n\t\t\n\t\t<script type=\"text/javascript\"src=\"/js/libs/analytics.js\"></script>\n\n\t\t<script></script>\n\t\t\t</head>\n\t<body>\n\t\t\t\t\t\t\t\t\t<!-- COOKIE BAR-->\n\t\t\t\t\t<div id=\"cookies\">\n <div class=\"cookie-container\">\n <div class=\"cookie-body\">\n <span class=\"title header1\">Before you continue</span>\n <p class=\"cookie-message body1\">Durch das Anklicken oder Navigieren auf dieser Website stimmen Sie unserer Verwendung von Cookies zu, die wir benutzen, um Ihnen ein besseres Erlebnis und individuelle Werbung unserer Partner bieten zu können.</p>\n <div class=\"cookie-dropdown\">\n <div class=\"dropdown-title\">\n <div class=\"checkbox-component no-mt\">\n <input id=\"essential_cookie\" type=\"checkbox\" name=\"essential_cookie\" checked disabled class=\"HMIcons_check\">\n <label for=\"essential_cookie\">Essential cookies</label>\n </div>\n <span class=\"icon HMIcons_downsm\"></span>\n </div>\n <div class=\"content\">\n <p class=\"bodyRegular\">They enable you to move around the website properly. They do not store any personally identifiable information and enable features such as accessing secure areas of the website or remembering what is in your shopping cart. They are mandatory for withings.com to operate.</p>\n </div>\n </div>\n <div class=\"cookie-dropdown\">\n <div class=\"dropdown-title\">\n <div class=\"checkbox-component no-mt\">\n <input id=\"analytics_cookie\" type=\"checkbox\" name=\"analytics_cookie\" class=\"HMIcons_check\">\n <label for=\"analytics_cookie\">Analytical cookies</label>\n </div>\n <span class=\"icon HMIcons_downsm\"></span>\n </div>\n <div class=\"content\">\n <p class=\"bodyRegular\">They allow us to collect information about how visitors use our website. For instance, we may see the total number of visits, or which pages visitors go to most often. We use this information to make sure our users find the information they are looking for, help monitor website performance indicators and solve potential bugs.</p>\n </div>\n </div>\n <div class=\"action-wrapper\">\n <div class=\"button-component no-mt\">\n <button class=\"accept-selection\">Accept selected</button>\n </div>\n <div class=\"button-component no-mt\">\n <button class=\"accept-all primary\">Accept all and close</button>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<script src=\"/js/helpers/utils.js\"></script>\n<script>\n const cookiesWrapper = document.querySelector('#cookies');\n const dropDownTitles = cookiesWrapper.querySelectorAll('.dropdown-title');\n const buttons = cookiesWrapper.querySelectorAll('.action-wrapper button');\n const analyticBox = cookiesWrapper.querySelector('input#analytics_cookie');\n\n const sections = [];\n const margin = 15;\n\n // Constants\n const COOKIE_STATISTICS = 'cookieconsent_statistics';\n\tconst COOKIE_ADVERTISING = 'cookieconsent_advertising';\n\tconst COOKIE_SOCIAL = 'cookieconsent_social';\n\tconst COOKIE_WITHINGS_DISMISSED = 'withings_cookieconsent_dismissed';\n\n buttons.forEach(btn => btn.addEventListener('click', (e) => onSubmit(e)));\n cookiesWrapper.addEventListener('click', onOverlayClick);\n\n window.addEventListener('resize', closeAllSections, false);\n\n dropDownTitles.forEach((el, index) => {\n const currentContent = el.nextElementSibling;\n sections.push({ el, content: currentContent });\n\n el.addEventListener('click', (e) => toggleDropDown(e, index));\n });\n\n if (getCookie(COOKIE_STATISTICS)) {\n analyticBox.setAttribute('checked', true);\n }\n\n function closeAllSections() {\n if (!sections) return;\n\n sections.forEach((section, i) => {\n if (!section.el.classList.contains('active')) return;\n\n section.el.classList.remove('active');\n section.content.style.height = 0;\n });\n }\n\n function closeCookieModal() {\n setCookie(COOKIE_WITHINGS_DISMISSED, 'yes');\n cookiesWrapper.classList.remove('active');\n };\n\n function onUserDontConsent() {\n setCookie(COOKIE_STATISTICS, false);\n\t\tsetCookie(COOKIE_ADVERTISING, false);\n\t\tsetCookie(COOKIE_SOCIAL, false);\n }\n\n function onSubmit(e) {\n const { target: currentButtonClicked } = e;\n const isAllAccepted = currentButtonClicked && currentButtonClicked.classList.contains('accept-all');\n\n // If the checkbox is checked or the user clicked on the accept all button\n if (analyticBox.checked || isAllAccepted) {\n // Accept the analytics cookie\n setCookie(COOKIE_STATISTICS, true);\n window.location.reload();\n } else {\n onUserDontConsent();\n }\n\n closeCookieModal();\n };\n\n function toggleDropDown(e, index) {\n if (e && e.target.tagName === \"INPUT\") return;\n\n e.preventDefault();\n\n const { content: currentContent, height } = sections[index];\n\n const currentSection = sections[index].el;\n currentSection.classList.toggle('active');\n\n const isActive = currentSection.classList.contains('active');\n if (isActive) return currentContent.style.height = `${currentContent.scrollHeight + margin}px`;\n return currentContent.style.height = 0;\n };\n\n function onOverlayClick(e) {\n // Clicked on modal => return\n if (e.target.id !== 'cookies') return;\n\n // Clicked on overlay => continue\n // Close the modal and set essential cookie to true\n onUserDontConsent();\n closeCookieModal();\n };\n</script>\t\t\t\t<!-- END COOKIE BAR-->\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"app-wrapper-component\">\n\n\t\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"sidebar-component \">\n\t\t\t\t\t<div class=\"sidebar-content sidebar-full \">\n\t\t\t\t\t\t<div class=\"page-title\">\n\t\t\t\t\t\t\t\t<h1 class=\"header1\">Wählen Sie einen Nutzer aus</h1>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div id=\"user_selection\">\n\t\t<div class=\"user-selection-content\">\n\t\t\t<div class=\"button-component small\">\n\t\t\t\t\t\t\t\t\t<a href=\"/logout?r=https%3A%2F%2Faccount.withings.com%2Foauth2_user%2Fuser_select%3Fresponse_type%3Dcode%26client_id%3D<myClientId>%26state%3Dh4fhjnc2daoc3m%26scope%3Duser.activity%252Cuser.metrics%252Cuser.info%26redirect_uri%3Dhttp%253A%252F%252Flocalhost%26b%3Dauthorize2\">Sind das nicht Sie?</a>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\n\t\t\t<ul class=\"list-component\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"?response_type=code&client_id=<myClientId>&state=h4fhjnc2daoc3m&scope=user.activity%2Cuser.metrics%2Cuser.info&redirect_uri=http%3A%2F%2Flocalhost&b=authorize2&selecteduser=1362620\" class=\"list-group-item\">Name User 1</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"?response_type=code&client_id=<myClientId>&state=h4fhjnc2daoc3m&scope=user.activity%2Cuser.metrics%2Cuser.info&redirect_uri=http%3A%2F%2Flocalhost&b=authorize2&selecteduser=1362621\" class=\"list-group-item\">Name User 2</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"?response_type=code&client_id=<myClientId>&state=h4fhjnc2daoc3m&scope=user.activity%2Cuser.metrics%2Cuser.info&redirect_uri=http%3A%2F%2Flocalhost&b=authorize2&selecteduser=11622612\" class=\"list-group-item\">Name User 3</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"?response_type=code&client_id=<myClientId>&state=h4fhjnc2daoc3m&scope=user.activity%2Cuser.metrics%2Cuser.info&redirect_uri=http%3A%2F%2Flocalhost&b=authorize2&selecteduser=19700099\" class=\"list-group-item\">Name User 4</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t\t\t\t</ul>\n\n\t\t\t\t\t</div>\n\t</div>\n\n\t\t\t\t\t\t<div class=\"footer-component\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"image-view-component\">\n\t\t\t\t\t<img src=\"/images/withings/side_picture.png\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\n\n\t\t\t\t\t<script type=\"text/javascript\" src=\"/min/g=baseJS&aaf8d2b4\"></script>\n\t\t\n\t\t<script type=\"text/javascript\">\n\t\t\twiService.sessionid = \"1bIq1pnOa2KzF-1t8PLfys-WsBOsEtm\";\n\t\t\tconstants.REV = \"aaf8d2b4\";\n\t\t\tconstants.COOKIE_CONSENT_DOMAIN = \"withings.com\";\n\t\t\tconst IS_PARTNER = false;\n\n\t\t\t\n\t\t\t// TODO: rework this script. Disabled because lost focus on mobile phone\n\t\t\t// Prevent autofill to stick to the inputs on scrolling sidebar\n\t\t\t// const hasInputOnPage = document.querySelector('input');\n\n\t\t\t// if (hasInputOnPage) {\n\t\t\t// \tconst sidebar = document.querySelector('.sidebar-component');\n\n\t\t\t// \tif (sidebar) {\n\t\t\t// \t\tsidebar.addEventListener('scroll', () => {\n\t\t\t// \t\t\tconst activeInput = document.querySelector('input:focus');\n\t\t\t// \t\t\tif (activeInput) activeInput.blur();\n\t\t\t// \t\t});\n\t\t\t// \t}\n\t\t\t// }\n\t\t</script>\n\t\t\t</body>\n</html>\n" withings.0 2022-01-06 17:24:46.075 debug /oauth2_user/account_login?response_type=code&client_id=<myClientId>&state=h4fhjnc2daoc3m&scope=user.activity%2Cuser.metrics%2Cuser.info&redirect_uri=http%3A%2F%2Flocalhost&b=authorize2 -
@robson
hrHeart Rate.
rr
Respiration Rate.
snoring
Total snoring time
sleep sind die letzten 24h
ja sie haben sich für ein sekunden timestampe anstatt des gängigen milliseconds timestamp ich habe überlegt im adapter schon * 1000 zu rechnen@tombox Danke für die Erklärungen. Ich denke, es würde Sinn machen hr und rr entsprechend umzubenennen, da es sonst einfach nicht schlüssig ist.
Hattest du schon mal geschaut, ob du den aktuellen Status der Schlafmatte abgreifen kannst?
Kein Gewicht/niemand liegt im Bett = false
Gewicht/im Bett = true -
@tombox Danke für die Erklärungen. Ich denke, es würde Sinn machen hr und rr entsprechend umzubenennen, da es sonst einfach nicht schlüssig ist.
Hattest du schon mal geschaut, ob du den aktuellen Status der Schlafmatte abgreifen kannst?
Kein Gewicht/niemand liegt im Bett = false
Gewicht/im Bett = true