NEWS
Test Withings v0.0.x
-
Hi ich habe ein neuen Adapter für Withings geschrieben
Integriert:
Getmeas
Getactivity
ListHeart
GetSummarySleep
getHeart
getSleepFehlt:
Getintradayactivityhr Heart Rate.
rr Respiration Rate.
snoring Total snoring time
Geräte Information werden nur bei Adapterstart abgerufen
Zum Installieren:
https://github.com/TA2k/ioBroker.withingsUnter Adapter Experten Modus aktivieren:
Unter Adapter das Github Icon klicken:
Benutzerdefiniert auswählen und die Url einfügen.
Dann unter Adapter den Withings Adapter suchen und ganz rechts auf das Plus klicken.
Loginablauf:
Die Withings Email und Passwort eingeben
https://account.withings.com/partner/dashboard_oauth2
Eine App registrieren
Name: ioBroker
Beliebiges Bild
Description: ioBroker
Email: Yourmail
Company: ioBroker
Callback URI: http://localhost
Eingeschränkter Modus: JaClient id und Client Secret eintragen
-
@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..
-
@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
-
@miggedy Könntest du mir kurz deine Zugangsdaten geben dann könnte ich das abfangen
@Stadtschloss ich bräuchte ein account mit daten dann könnte ich das besser anordnen
Ich habe zwar was blind angepasst aber ohne account ist es schwierig -
@tombox sagte in Test Withings v0.0.x:
Der Adapter funktioniert bei mir wunderbar! Echt mega!!!
VG
Stuebi -
@tombox vielen Dank für den Adapter! Habe ihn gerade installiert, bekomme beim Start aber folgende Fehlermeldungen im Debug-Modus ausgegeben:
host.ioBroker-RasPi4 2022-01-06 21:02:06.263 error instance system.adapter.withings.0 terminated with code 1 (JS_CONTROLLER_STOPPED) host.ioBroker-RasPi4 2022-01-06 21:02:06.263 error Caught by controller[0]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10) host.ioBroker-RasPi4 2022-01-06 21:02:06.263 error Caught by controller[0]: at Module._compile (internal/modules/cjs/loader.js:999:30) host.ioBroker-RasPi4 2022-01-06 21:02:06.263 error Caught by controller[0]: at Object.<anonymous> (/opt/iobroker/node_modules/json-bigint/index.js:1:22) host.ioBroker-RasPi4 2022-01-06 21:02:06.262 error Caught by controller[0]: at require (internal/modules/cjs/helpers.js:74:18) host.ioBroker-RasPi4 2022-01-06 21:02:06.262 error Caught by controller[0]: at Module.require (internal/modules/cjs/loader.js:887:19) host.ioBroker-RasPi4 2022-01-06 21:02:06.262 error Caught by controller[0]: at Function.Module._load (internal/modules/cjs/loader.js:708:14) host.ioBroker-RasPi4 2022-01-06 21:02:06.262 error Caught by controller[0]: at Module.load (internal/modules/cjs/loader.js:863:32) host.ioBroker-RasPi4 2022-01-06 21:02:06.262 error Caught by controller[0]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10) host.ioBroker-RasPi4 2022-01-06 21:02:06.262 error Caught by controller[0]: at Module._compile (internal/modules/cjs/loader.js:963:27) host.ioBroker-RasPi4 2022-01-06 21:02:06.261 error Caught by controller[0]: at wrapSafe (internal/modules/cjs/loader.js:915:16) host.ioBroker-RasPi4 2022-01-06 21:02:06.261 error Caught by controller[0]: SyntaxError: Invalid or unexpected token host.ioBroker-RasPi4 2022-01-06 21:02:06.261 error Caught by controller[0]: host.ioBroker-RasPi4 2022-01-06 21:02:06.261 error Caught by controller[0]: length host.ioBroker-RasPi4 2022-01-06 21:02:06.260 error Caught by controller[0]: /opt/iobroker/node_modules/json-bigint/lib/stringify.js:214 host.ioBroker-RasPi4 2022-01-06 21:02:05.411 info instance system.adapter.withings.0 started with pid 20078
Installation und Einrichtung über https://account.withings.com/partner/dashboard_oauth2 liefen ohne Probleme.
-
Ohne konkreten Verdacht:
which nodejs node npm && nodejs -v && node -v && npm -v && sudo apt update > /dev/null && sudo apt update && apt policy nodejs
sagt dir?
-
Sagt mir zwar folgendes, aber mir relativ wenig:
/usr/bin/nodejs /usr/bin/node /usr/bin/npm v12.22.8 v12.22.8 6.14.15 WARNING: apt does not have a stable CLI interface. Use with caution in scripts. OK:1 https://deb.nodesource.com/node_12.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 Aktualisierung für 4 Pakete verfügbar. Führen Sie »apt list --upgradable« aus, um sie anzuzeigen. nodejs: Installiert: 12.22.8-deb-1nodesource1 Installationskandidat: 12.22.8-deb-1nodesource1 Versionstabelle: *** 12.22.8-deb-1nodesource1 500 500 https://deb.nodesource.com/node_12.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
Und
apt list --upgradable
gibt aus:
Auflistung... Fertig apache2-bin/oldstable 2.4.38-3+deb10u7 armhf [aktualisierbar von: 2.4.38-3+deb10u6] apache2-data/oldstable 2.4.38-3+deb10u7 all [aktualisierbar von: 2.4.38-3+deb10u6] apache2-utils/oldstable 2.4.38-3+deb10u7 armhf [aktualisierbar von: 2.4.38-3+deb10u6] apache2/oldstable 2.4.38-3+deb10u7 armhf [aktualisierbar von: 2.4.38-3+deb10u6]
-
@robson
Unabhängig vom 'Problem' würde ich auch die empfohlene und für ioBroker vorgesehene V14 springen.Und den Indianer auch gleich auf Stand bringen.
-
@robson spontan fällt mir auch nichts ein außer node und js-controller zu aktualisieren
-
@thomas-braun sagte in Test Withings v0.0.x:
@robson
Unabhängig vom 'Problem' würde ich auch die empfohlene und für ioBroker vorgesehene V14 springen.Und den Indianer auch gleich auf Stand bringen.
@tombox sagte in Test Withings v0.0.x:
@robson spontan fällt mir auch nichts ein außer node und js-controller zu aktualisieren
Freunde, das wars Node ist jetzt auf v14.x und der Adapter läuft.
Ich teste in den kommenden Tagen mal fleißig und berichte. -
'Kontrolle':
which nodejs node npm && nodejs -v && node -v && npm -v && whoami && sudo apt update &> /dev/null && sudo apt update && apt policy nodejs iobroker update -i
-
-
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
-
@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.
-
@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.
-
@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." -
@robson Ich habe mal den sleep get endpoint hinzugefügt aber keine ahnung wie daten aussehen die da rausfallen