NEWS
Test Adapter Garmin
-
Diese Funktion ist leider extra. Hat nichts mit Garmin zu tun. Und danke für die Info.
-
Hallo, vielen Dank für den Adapter. Ich habe heute versucht den zu installieren und zu starten. Ich habe MFA aktiviert für mein Garmin Konto. Nachdem ich meine Zugangsdaten eingeben hatte (Email und Passwort) habe ich in kurzer Zeit mehrere E-Mails mit dem mFA code bekommen. Die E-Mail kamen in so kurzer Zeit, dass ich bei der Eingabe keine Möglichkeit hatte den richtigen code einzugeben, da schon ein neuer unterwegs war. Ich versuche dass morgen noch einmal mit deaktivierter MFA. Aktuell bekomme ich erst wieder nach 24 Stunden einen neuen Code. Habe aktuelle Node 18 und 0.03 des Garmin Adapters
-
in meinem Test Iobroker lief der Adapter gut, allerdings jetzt wo meine aktive IObroker installation auf Node.js
v18.16.0 is habe ich es hier versucht und bekomme folgende Fehlermeldung... die mir nichts sagt.host.HomeBeast 2023-05-23 10:53:11.035 info Restart adapter system.adapter.garmin.0 because enabled host.HomeBeast 2023-05-23 10:53:11.035 error instance system.adapter.garmin.0 terminated with code 1 (JS_CONTROLLER_STOPPED) host.HomeBeast 2023-05-23 10:53:11.035 error Caught by controller[0]: Node.js v18.16.0 host.HomeBeast 2023-05-23 10:53:11.035 error Caught by controller[0]: } host.HomeBeast 2023-05-23 10:53:11.035 error Caught by controller[0]: code: 'ERR_REQUIRE_ESM' host.HomeBeast 2023-05-23 10:53:11.034 error Caught by controller[0]: at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.garmin/main.js:11:13) { host.HomeBeast 2023-05-23 10:53:11.034 error Caught by controller[0]: Instead change the require of index.js in /opt/iobroker/node_modules/iobroker.garmin/main.js to a dynamic import() which is available in all CommonJS modules. host.HomeBeast 2023-05-23 10:53:11.034 error Caught by controller[0]: Error [ERR_REQUIRE_ESM]: require() of ES Module /opt/iobroker/node_modules/got/dist/source/index.js from /opt/iobroker/node_modules/iobroker.garmin/main.js not supported. host.HomeBeast 2023-05-23 10:53:11.034 error Caught by controller[0]: ^ host.HomeBeast 2023-05-23 10:53:11.034 error Caught by controller[0]: const got = require("got").default; host.HomeBeast 2023-05-23 10:53:11.034 error Caught by controller[0]: /opt/iobroker/node_modules/iobroker.garmin/main.js:11 host.HomeBeast 2023-05-23 10:53:10.236 info instance system.adapter.garmin.0 started with pid 30710 host.HomeBeast 2023-05-23 10:53:10.178 info "system.adapter.garmin.0" enabled
-
@curtis777 sollte nicht passieren liegt auch nicht direkt an node 18
bitte mal die github version testen
-
@tombox Danke, funktioniert wieder.
Läuft wie am Schnürchen.Gibts denn schon selbst gebaute Widgets ?
um das ganze Optisch gut darzustellen ? -
Ich habe testweise Garmin v0.0.4 installiert. Node.js v18.16.0. Kein MFA.
Dabei treten reichlich Fehler auf. Ich hatte testweise alle 15 Minuten aktualisiert - nun wieder auf 60 Minuten hoch gesetzt. Kann das mit der "geringen" Aktualisierung Zeit zusammen hängen?{"clientMessage":"Reference Error ID in error logs for further information","errorId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","error":"WebApplicationException"} garmin.0 2023-06-09 15:40:45.376 error AxiosError: Request failed with status code 403 garmin.0 2023-06-09 15:40:45.376 error https://connect.garmin.com/modern/proxy/weight-service/weight/dateRange?startDate=2023-06-03&endDate=2023-06-09 garmin.0 2023-06-09 15:40:45.151 error {"clientMessage":"Reference Error ID in error logs for further information","errorId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","error":"WebApplicationException"} garmin.0 2023-06-09 15:40:45.151 error AxiosError: Request failed with status code 403 garmin.0 2023-06-09 15:40:45.151 error https://connect.garmin.com/modern/proxy/activitylist-service/activities/search/activities?start=0&limit=10 garmin.0 2023-06-09 15:40:44.915 error {"clientMessage":"Reference Error ID in error logs for further information","errorId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","error":"WebApplicationException"}
-
gerade mal das Konto mit MFA konfiguriert. Aber wie @newbie0815 zuvor geschrieben hat sendete Garmin im Sekundentakt 5-10 Codes. Werde der erste noch der letzte funktionierte. Zu guter Letzt war das Garmin Konto wegen zu vieler Anmeldeversuche gesperrt.
-
Ein Frage noch. Unter Garmin.0 liegen hier 13795 Datenpunkte. Das ist schon ne Menge Zeugs denke ich, zumal ich nur ca. 10 davon einmal am Tag brauche.
Kann man ermitteln wie lange der Aktualisierungsvorgang dauert ?
Die Idee war den Adapter morgens zur bestimmten Uhrzeit per Script zu starten und nach Aktualisierung der Daten wieder zu beenden. -
Ein Garmin Adapter klingt sehr vielversprechend.
Allerdings zeichne ich seit 15 Jahren auf, und als Triathlet kommen so einige Objekte zusammen.
Deshalb habe ich etwas Angst das System zu zerschießen, zumal ich nur 4GB RAM habe.Kann man das irgendwie begrenzen?
-
@hg6806 Wo sind denn genau zuviel Objekte
-
Es wurde berichtet, dass teilweise über 100.000 Objekte geladen wurden, und da ich nur ein 4GB RasPi habe bin ich da vorsichtig.
Deshalb die Frage ob man das begrenzen kann wie z.B. nur einen bestimmten Zeitraum. -
Toller Adapter, herzlichen Dank!
-
Hallo Leute. Bekommt ihr noch Daten von Garmin. Seit dem 20.10.2023 kommt bei mir nichts mehr rein!
-
Ich bekomme nur noch 126 Datenpunkte rein. Keine über 9000 mehr.
-
@kirbsi Vielleicht kannst du im debug log mehr sehen was das problem ist
-
@tombox
Hab den Adapter schon lange nicht mehr genutzt da er bei mir regelmäßig abstürzt. Nach dem Post hab ich in mal wieder reaktivert, anbei das Debug-Log wenn ich den Adapter starte. Zumindest von den von mir verwendeten Werten wird keine mehr aktualisiert. Benutzername und Passwort sind korrekt.garmin.0 2023-11-07 10:00:28.354 error "" garmin.0 2023-11-07 10:00:28.353 error AxiosError: Request failed with status code 402 garmin.0 2023-11-07 10:00:28.353 error https://connect.garmin.com/modern/proxy/weight-service/weight/dateRange?startDate=2023-11-01&endDate=2023-11-07 garmin.0 2023-11-07 10:00:28.279 error "" garmin.0 2023-11-07 10:00:28.279 error AxiosError: Request failed with status code 402 garmin.0 2023-11-07 10:00:28.279 error https://connect.garmin.com/modern/proxy/activitylist-service/activities/search/activities?start=0&limit=10 garmin.0 2023-11-07 10:00:28.206 error "" garmin.0 2023-11-07 10:00:28.206 error AxiosError: Request failed with status code 402 garmin.0 2023-11-07 10:00:28.205 error https://connect.garmin.com/modern/proxy/metrics-service/metrics/trainingstatus/aggregated/2023-11-07 garmin.0 2023-11-07 10:00:28.124 error "" garmin.0 2023-11-07 10:00:28.124 error AxiosError: Request failed with status code 402 garmin.0 2023-11-07 10:00:28.124 error https://connect.garmin.com/modern/proxy/userstats-service/wellness/daily/bommel_030?fromDate=2023-11-01 garmin.0 2023-11-07 10:00:28.053 error "" garmin.0 2023-11-07 10:00:28.053 error AxiosError: Request failed with status code 402 garmin.0 2023-11-07 10:00:28.053 error https://connect.garmin.com/modern/proxy/wellness-service/wellness/dailyStress/2023-11-07 garmin.0 2023-11-07 10:00:27.978 error "" garmin.0 2023-11-07 10:00:27.978 error AxiosError: Request failed with status code 402 garmin.0 2023-11-07 10:00:27.977 error https://connect.garmin.com/modern/proxy/wellness-service/wellness/dailySleepData/bommel_030?date=2023-11-07&nonSleepBufferMinutes=60 garmin.0 2023-11-07 10:00:27.899 error "" garmin.0 2023-11-07 10:00:27.899 error AxiosError: Request failed with status code 402 garmin.0 2023-11-07 10:00:27.898 error https://connect.garmin.com/modern/proxy/usersummary-service/usersummary/hydration/daily/2023-11-07 garmin.0 2023-11-07 10:00:27.815 error "" garmin.0 2023-11-07 10:00:27.815 error AxiosError: Request failed with status code 402 garmin.0 2023-11-07 10:00:27.815 error https://connect.garmin.com/modern/proxy/metrics-service/metrics/maxmet/daily/2023-11-07/2023-11-07 garmin.0 2023-11-07 10:00:27.708 error "" garmin.0 2023-11-07 10:00:27.708 error AxiosError: Request failed with status code 402 garmin.0 2023-11-07 10:00:27.708 error https://connect.garmin.com/modern/proxy/usersummary-service/usersummary/daily/bommel_030?calendarDate=2023-11-07 garmin.0 2023-11-07 10:00:27.618 error "" garmin.0 2023-11-07 10:00:27.618 error AxiosError: Request failed with status code 402 garmin.0 2023-11-07 10:00:27.543 debug {"scope":"COMMUNITY_COURSE_READ GOLF_API_READ GHS_HID ATP_READ GHS_SAMD INSIGHTS_READ COMMUNITY_COURSE_WRITE CONNECT_WRITE DIVE_SHARED_READ GHS_REGISTRATION DT_CLIENT_ANALYTICS_WRITE GOLF_API_WRITE INSIGHTS_WRITE PRODUCT_SEARCH_READ GOLF_SHARED_READ CONNECT_NON_SOCIAL_SHARED_READ CONNECT_READ ATP_WRITE","jti":"764eb129-84e2-4a89-a71d-615106000918","access_token":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImRpLW9hdXRoLXNpZ25lci1wcm9kLTIwMjMtcTIifQ.eyJzY29wZSI6WyJBVFBfUkVBRCIsIkFUUF9XUklURSIsIkNPTU1VTklUWV9DT1VSU0VfUkVBRCIsIkNPTU1VTklUWV9DT1VSU0VfV1JJVEUiLCJDT05ORUNUX05PTl9TT0NJQUxfU0hBUkVEX1JFQUQiLCJDT05ORUNUX1JFQUQiLCJDT05ORUNUX1dSSVRFIiwiRElWRV9TSEFSRURfUkVBRCIsIkRUX0NMSUVOVF9BTkFMWVRJQ1NfV1JJVEUiLCJHSFNfSElEIiwiR0hTX1JFR0lTVFJBVElPTiIsIkdIU19TQU1EIiwiR09MRl9BUElfUkVBRCIsIkdPTEZfQVBJX1dSSVRFIiwiR09MRl9TSEFSRURfUkVBRCIsIklOU0lHSFRTX1JFQUQiLCJJTlNJR0hUU19XUklURSIsIlBST0RVQ1RfU0VBUkNIX1JFQUQiXSwiaXNzIjoiaHR0cHM6Ly9kaWF1dGguZ2FybWluLmNvbSIsImV4cCI6MTY5OTM1MTIyNywiaWF0IjoxNjk5MzQ3NjI3LCJnYXJtaW5fZ3VpZCI6IjQyNGZiZTk3LWE4OWQtNDdlYi1hMWNiLWNiZWI3ZjAwZWI4NSIsImp0aSI6Ijc2NGViMTI5LTg0ZTItNGE4OS1hNzFkLTYxNTEwNjAwMDkxOCIsImNsaWVudF9pZCI6IkNPTk5FQ1RfV0VCIiwiZmdwIjoiZWU4NjlhNDBjMWJiNTY2MTFjZDljOWRkYWI4OWZmNjk0YmJmYTNmOGQyNTVjMDQ4Y2FhM2FjNzI4ODZjNjU2ZSJ9.Mp6Tb9mKVELodO2kUPpjBUvWdVIfr14BLllw9_UDBKtOrOxhDUjokQBzyanaoI1BTHAuAwlZ0gPBb4kQtlYPaOQovuNqHaIuE3eXDHY2m1ilzzLDWfr7VThlsfNDw3Nl5ocapvDshq4QDoaoftrZNVTqaPsq_Xlmlxe5vToNFxFbIZ7emGqwxOcPKvVX84bXuLVDKkEwnKvNvvl_eqbsvZIcPItBDe4K7vAd3_mNxBv8tX7ZbmmAZ7XFazmNQa6fA1Ob8SnOtfO9jfqZv8g5EEqzHl9zCIH4awfzweA7RzjOoQAhZS27-mlVyOm9GEmo_hsR4b-AM2Ts4fRQrxgwKg","token_type":"Bearer","refresh_token":"eyJyZWZyZXNoVG9rZW5WYWx1ZSI6ImUwMzNmMDRjLWI0MzctNDgzOS1hNWEzLWEwYjVmZDU5NjIxOCIsImdhcm1pbkd1aWQiOiI0MjRmYmU5Ny1hODlkLTQ3ZWItYTFjYi1jYmViN2YwMGViODUifQ==","expires_in":3599,"refresh_token_expires_in":7199} garmin.0 2023-11-07 10:00:26.929 debug "<!DOCTYPE html>\n<html class=\"signed-in\" lang=\"de\">\n\n\n\n<head>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"/>\n <meta charset=\"UTF-8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>\n\n <title>Garmin Connect</title>\n\n \n\n\n \n\n <link rel=\"shortcut icon\" href=\"/modern/images/favicon.ico\" />\n\n <!-- Connect Styles -->\n \n <link rel=\"stylesheet\" type=\"text/css\" href=\"/modern/css/dropzone.min.css?bust=4.72.4.2\" />\n <link rel=\"stylesheet\" type=\"text/css\" href=\"/web-react/styles/global.css?bust=4.72.4.2\" />\n \n \n\n \n\n <!-- to be modify the google fonts in cdn here -->\n <!--garmin.cn-->\n\n \n \n <!-- FONTS -->\n <link rel='stylesheet' type='text/css' href=\"https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&subset=latin,cyrillic-ext,greek-ext,vietnamese\" />\n \n\n\n\n <title>Connect</title>\n</head>\n\n\n<body>\n<a href=\"connectagent://launch\" id=\"notify-agent\" style=\"display: none\" tabindex=\"-1\"><!-- dummy comment --></a>\n\n\n\n<div class=\"connect-container\">\n\n <nav class=\"main-nav hide\"><!-- main navigation --></nav>\n\n <div class=\"react-global-modal\"><!-- react-global-modal --></div>\n\n <div class=\"main-body\">\n <!-- Header -->\n \n\n <header class=\"header hide\">\n <!-- placeholder -->\n </header>\n\n <section class=\"beta-testers-survey-banner takeover-container\">\n <!-- placeholder -->\n </section>\n\n\n<div class=\"main-header\"></div>\n\n\n <!-- Content Container -->\n \n<div class=\"content clearfix\">\n\n \n <script>\n window.VIEWER_USERPREFERENCES = {\"availableTrainingDays\":null,\"heartRateFormat\":{\"formatKey\":\"bpm\",\"formatId\":21,\"maxFraction\":0,\"displayFormat\":null,\"groupingUsed\":false,\"minFraction\":0},\"golfSpeedUnit\":null,\"preferredLongTrainingDays\":null,\"dateFormat\":{\"formatKey\":\"ddmmyyyy\",\"formatId\":24,\"maxFraction\":0,\"displayFormat\":\"EEE, d MMM yyyy\",\"groupingUsed\":false,\"minFraction\":0},\"displayName\":\"bommel_030\",\"golfDistanceUnit\":\"statute_us\",\"timeZone\":\"Europe\\/Paris\",\"hydrationContainers\":[{\"volume\":100,\"unit\":\"milliliter\",\"name\":\"Gefäß 1\"},{\"volume\":500,\"unit\":\"milliliter\",\"name\":\"Gefäß 2\"},{\"volume\":750,\"unit\":\"milliliter\",\"name\":\"Gefäß 3\"}],\"hydrationMeasurementUnit\":\"milliliter\",\"powerFormat\":{\"formatKey\":\"power_zones\",\"formatId\":29,\"maxFraction\":1,\"displayFormat\":null,\"groupingUsed\":false,\"minFraction\":1},\"numberFormat\":\"decimal_comma\",\"firstDayOfWeek\":{\"dayName\":\"monday\",\"isPossibleFirstDay\":true,\"sortOrder\":3,\"dayId\":3},\"timeFormat\":{\"formatKey\":\"time_twenty_four_hr\",\"formatId\":33,\"maxFraction\":0,\"displayFormat\":\"H:mm\",\"groupingUsed\":false,\"minFraction\":0},\"measurementSystem\":\"metric\",\"golfElevationUnit\":null,\"preferredLocale\":\"de\"};\n window.VIEWER_SOCIAL_PROFILE = {\"runningTrainingSpeed\":0,\"swimmingTrainingSpeed\":0,\"showRecentDevice\":false,\"twitterUrl\":null,\"levelIsViewed\":false,\"bio\":null,\"activityStartVisibility\":\"private\",\"cyclingTrainingSpeed\":0,\"showHeight\":false,\"showBadges\":true,\"levelUpdateDate\":\"2023-06-17T13:29:46.0\",\"id\":2379666,\"showRecentFavorites\":false,\"makeGolfScorecardsPrivate\":false,\"activityHeartRateVisibility\":\"public\",\"profileVisibility\":\"following\",\"nameApproved\":true,\"garminGUID\":\"424fbe97-a89d-47eb-a1cb-cbeb7f00eb85\",\"otherMotivation\":null,\"showAgeRange\":false,\"showLifetimeTotals\":false,\"favoriteCyclingActivityTypes\":[],\"cyclingClassification\":null,\"otherPrimaryActivity\":null,\"userPointOffset\":0,\"userRoles\":[\"ROLE_OUTDOOR_USER\",\"ROLE_CONNECTUSER\",\"ROLE_FITNESS_USER\",\"ROLE_WELLNESS_USER\",\"ROLE_CONNECT_2_USER\"],\"profileId\":2400759,\"showActivityClass\":false,\"profileImageUrlSmall\":\"https:\\/\\/s3.amazonaws.com\\/garmin-connect-prod\\/profile_images\\/39f253fa-1f1d-444b-90e0-d2dadecbcb7d-2400759.png\",\"showRecentGear\":false,\"showLast12Months\":false,\"showGender\":true,\"displayName\":\"bommel_030\",\"personalWebsite\":null,\"motivation\":null,\"primaryActivity\":null,\"facebookUrl\":null,\"userLevel\":5,\"userPro\":false,\"favoriteActivityTypes\":[],\"courseVisibility\":\"public\",\"profileImageUuid\":\"c1166cf1-78a4-41d6-9b1b-2ea7131c84b9\",\"userPoint\":383,\"badgeVisibility\":\"following\",\"fullName\":\"Bommel\",\"showWeightClass\":false,\"allowGolfScoringByConnections\":true,\"levelPointThreshold\":620,\"userName\":\"bommel_030\",\"showVO2Max\":false,\"allowGolfLiveScoring\":false,\"profileImageUrlMedium\":\"https:\\/\\/s3.amazonaws.com\\/garmin-connect-prod\\/profile_images\\/71566b41-f46b-4b4e-a7fb-8a69c9952101-2400759.png\",\"otherActivity\":null,\"showUpcomingEvents\":false,\"showAge\":false,\"profileImageUrlLarge\":\"https:\\/\\/s3.amazonaws.com\\/garmin-connect-prod\\/profile_images\\/c1166cf1-78a4-41d6-9b1b-2ea7131c84b9-2400759.png\",\"location\":\"Schönwalde, Brandenburg\",\"showPersonalRecords\":false,\"activityMapVisibility\":\"public\",\"userProfileFullName\":\"Bommel\",\"cyclingMaxAvgPower\":0,\"showWeight\":false,\"activityPowerVisibility\":\"public\"};\n window.VIEWER_DASHBOARDS = [{\"dashboardTitle\":\"\",\"dashboardId\":681261,\"dashboardOrder\":1,\"ownerId\":2400759,\"dashboardTitleKey\":\"fitness_dashboard\"},{\"dashboardTitle\":\"\",\"dashboardId\":3070555,\"dashboardOrder\":2,\"ownerId\":2400759,\"dashboardTitleKey\":\"wellness_dashboard\"}];\n\n window.queueNotificationTimeout = 600000;\n window.queuePollRate = 600000;\n\n window.ERROR_VIEW = null;\n window.USER_PROFILE = null;\n\n window.viewerIsAuthenticated = true;\n\n window.SYSTEM_TIME_GMT = 1699347626848;\n window.SESSION_LENGTH = 2700000;\n window.GAUTH_HOST = \"https:\\/\\/sso.garmin.com\\/sso\";\n window.GARMIN_APP_URL = \"https:\\/\\/apps.garmin.com\\/connect?locale={locale}\";\n window.WEB_TOKEN = \"\";\n window.URL_BUST_VALUE = \"4.72.4.2\";\n\n window.IS_READONLY = null;\n window.PRODUCT_SUPPORT_MODE = null;\n window.IS_RACE_MANAGEMENT = null;\n\n window.JS_ERROR = true;\n window.DI_BACKENDS = {\"golf\":\"golf.garmin.com\",\"ghs\":\"ghs.connect.garmin.com\",\"insights\":\"insights.gcs.garmin.com\",\"gcs\":\"api.gcs.garmin.com\",\"gcapi\":\"connectapi.garmin.com\",\"omt\":\"omt.garmin.com\",\"gcsalt\":\"gcs.garmin.com\",\"didt\":\"api-didt-test.garmin.com\",\"atp\":\"atp.gcs.garmin.com\"};\n window.PREFERENCES = {\"5b5ea560-3015-46c8-9f15-28c038165b87\":\"ROLE_MBTESTER\",\"ce34657d-8a85-4b6e-8bb4-00897590c217\":\"ROLE_CONNECTUSER\",\"5c8d3401-e6e7-4354-9095-39526016a47c\":\"ROLE_CONNECTUSER\",\"d3c94498-8962-4a62-bd3a-0d80a08e3386\":\"false\",\"7ae52c9a-1967-46e9-952f-3e40e3770bde\":\"ROLE_CONNECTUSER\"};\n </script>\n\n <script src=\"/web-react/static/js/vendor.js?bust=4.72.4.2\"></script>\n <script src=\"/web-react/static/js/backbone-lib.js?bust=4.72.4.2\"></script>\n <script src=\"/web-react/static/js/bundle.js?bust=4.72.4.2\"></script>\n</div>\n\n <!-- END .content -->\n\n <!-- Footer -->\n <div class=\"main-footer\"></div>\n <!-- END .footer -->\n <p style=\"display: none;\" id=\"garmin-connect-version\">4.72.4.2</p>\n </div>\n\n <!-- END .container -->\n</div>\n\n<style>\n .privacy-overlay {\n position: fixed; /* Sit on top of the page content */\n width: 100%; /* Full width (cover the whole page) */\n height: 100%; /* Full height (cover the whole page) */\n top: 0;\n left: 0;\n background-color: #fff;\n z-index: 9999; /* Specify a stack order in case you're using a different order for other elements */\n }\n</style>\n\n<div id=\"overlay\" class=\"privacy-overlay\">\n</div>\n\n<script defer src=\"https://static.cloudflareinsights.com/beacon.min.js/v84a3a4012de94ce1a686ba8c167c359c1696973893317\" integrity=\"sha512-euoFGowhlaLqXsPWQ48qSkBSCFs3DPRyiwVu3FjR96cMPx+Fr+gpWRhIafcHwqwCqWS42RZhIudOvEI+Ckf6MA==\" data-cf-beacon='{\"rayId\":\"822462c69bc9160d\",\"b\":1,\"version\":\"2023.10.0\",\"token\":\"1bd18b8f69214e379ef7bd34509191ae\"}' crossorigin=\"anonymous\"></script>\n</body>\n\n\n\n</html>" garmin.0 2023-11-07 10:00:25.455 debug "<!DOCTYPE html>\n<html class=\"no-js\">\n\t<head>\n\t\t<title>Success</title>\n\t\t<meta charset=\"utf-8\">\n\t\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge;\" />\n\t\t<meta name=\"description\" content=\"\">\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\t\t<meta http-equiv=\"cleartype\" content=\"on\">\n\t\t<script type=\"text/javascript\" src=\"/sso/js/jquery/3.7.1/jquery.min.js?20210319\"></script>\n\t\t<script type=\"text/javascript\">jQuery.noConflict();</script>\n\t\t<script type=\"text/javascript\" src=\"/sso/js/json2.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"/sso/js/consoleUtils.js?20210319\"></script>\n\t\t<script type=\"text/javascript\" src=\"/sso/js/postmessage.js?20210319\"></script>\n\t\t<script type=\"text/javascript\">\n\t\t\tvar redirectAfterAccountLoginUrl \t = \"https:\\/\\/connect.garmin.com\\/modern\\/\";\n\t\t\tvar redirectAfterAccountCreationUrl = \"https:\\/\\/connect.garmin.com\\/modern\\/\";\n\t\t\tvar consumeServiceTicket \t = \"false\";\n\t\t\tvar service_url \t = \"https:\\/\\/connect.garmin.com\\/modern\\/\";\n\t\t\tvar parent_url \t = \"https:\\/\\/connect.garmin.com\\/signin\";\n\t\t\tvar response_url \t = \"https:\\/\\/connect.garmin.com\\/modern\\/?ticket=ST-0832024-LCBlkytjV1VKQhfBsJFR-cas\";\n\t\t\tvar logintoken \t = \"\";\n\t\t\tvar socialLogin \t = \"\";\n\t\t\tvar performMFACheck = \"false\";\n\n\t\t\t// Decode url if it's encoded unnecessarily (which is happening when SSO GAuth logins redisplay the login page due to session timeouts.)\n\t\t\tif (response_url.indexOf('%3A%2F%2F') != -1) {\n\t\t\t\tresponse_url = decodeURIComponent(response_url);\n\t\t\t}\n\t\t\tresponse_url = response_url.replace(new RegExp(\"&\", 'g'),\"&\");\n\n\t\t\tvar service_ticket = response_url.substring(response_url.indexOf('ticket=') + 7, response_url.length);\n\n\t\t\tif (redirectAfterAccountLoginUrl) {\n\t\t\t\tconsoleInfo('casEmbedSuccess.html: redirectAfterAccountLoginUrl: [' + redirectAfterAccountLoginUrl + ']');\n\t\t\t}\n\t\t\tconsoleInfo('casEmbedSuccess.html: consumeServiceTicket: [' + consumeServiceTicket + ']');\n\t\t\tconsoleInfo('casEmbedSuccess.html: service_url: [' + service_url + ']');\n\t\t\tconsoleInfo('casEmbedSuccess.html: parent_url: [' + parent_url + ']');\n\t\t\tconsoleInfo('casEmbedSuccess.html: response_url: [' + response_url + ']');\n\t\t\tconsoleInfo('casEmbedSuccess.html: service_ticket: [' + service_ticket + ']');\n\t\t\tif (logintoken) {\n\t\t\t\tconsoleInfo('casEmbedSuccess.html: logintoken: [' + logintoken + ']');\n\t\t\t}\n\t\t\tif (socialLogin) {\n\t\t\t\tconsoleInfo('casEmbedSuccess.html: socialLogin: [' + socialLogin + ']');\n\t\t\t}\n\n\t\t\tfunction send(msg) {\n\t\t\t\tconsoleInfo('casEmbedSuccess.html: send(): Calling XD.postMessage(msg:[' + JSON.stringify(msg) + '], target_url:[' + parent_url + '])...');\n\t\t\t\tXD.postMessage(msg, parent_url, parent);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfunction redirect(target){\n\t\t\t\tvar embedWidget = \"false\";\n\t\t\t\tif (embedWidget != 'true') {\n\t\t\t\t\tif (logintoken || socialLogin) {\n\t\t\t\t\t\t// Tell parent to close opened Gauth lite box.\n\t\t\t\t\t\tsend({'closeLiteBox':'1'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Tell parent to resize Gauth widget's height to just that of the loading icon.\n\t\t\t\t\t\tsend({'gauthHeight':jQuery(\"#GAuth-component\").height()});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (window.opener != null) {\n\t\t\t\t\tvar iframeParent = window.opener.parent;\n\t\t\t\t\tiframeParent.location.href = target;\n\t\t\t\t\twindow.close();\n\t\t\t\t} else {\n\t\t\t\t\t// If the \"redirectAfterAccountLoginUrl\" GAuth config parameter was specified,\n\t\t\t\t\t// a full page refresh upon logon was requested, so redirect the parent window upon login.\n\t\t\t\t\tif (redirectAfterAccountLoginUrl || redirectAfterAccountCreationUrl || (socialLogin && socialLogin === 'true') || (performMFACheck && performMFACheck === 'true')) {\n\n\t\t\t\t\t\tif (embedWidget != 'true') {\n\t\t\t\t\t\t\tsend({'status':'SUCCESS', 'successDetails':'Login Successful'});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Redirect parent of login iframe to requested service URL with ?ST=<Service Ticket ID> appended,\n\t\t\t\t\t\t// so the webapp can validate the service ticket and log the user on to the webapp.\n\t\t\t\t\t\tconsoleInfo('casEmbedSuccess.html: Calling parent.location.href = [' + response_url + '];...');\n\t\t\t\t\t\ttop.location.href = response_url;\n\n\t\t\t\t\t// Else if GAuth was configured not to consume the service ticket, send the service ticket and service url.\n\t\t\t\t\t// It's then up to the parent page to hide the GAuth widget and validate the service ticket.\n\t\t\t\t\t} else if (consumeServiceTicket == 'false') {\n\n\t\t\t\t\t\tsend({'status':'SUCCESS', 'successDetails':'Login Successful', 'serviceTicket':service_ticket, 'serviceUrl':service_url});\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Else consume the service ticket and log the user into the parent webapp, by making a JSONP request to the response url.\n\t\t\t\t\t\t// This service ticket request to the parent webapp will return a small amount of JSON that we\n\t\t\t\t\t\t// can send in the success event to the parent page to notify them of successful logon\n\t\t\t\t\t\t// It's then up to the parent page to hide the GAuth widget and do whatever it wants.\n\t\t\t\t\t\tconsoleInfo('casEmbedSuccess.html: Loading ajax jsonp URL: [' + response_url + ']');\n\t\t\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\t\ttype: \"REDIRECT\",\n\t\t\t\t\t\t\turl: response_url,\n\t\t\t\t\t\t\tdataType: 'jsonp',\n\t\t\t\t\t\t\terror: function(xhr, status, error) {\n\t\t\t\t\t\t\t\tconsoleError('casEmbedSuccess.html: Error loading ajax jsonp URL: [' + response_url + ']! Error: ' + error);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsuccess: function( data, status, xhr ) {\n\t\t\t\t\t\t\t\tconsoleInfo('casEmbedSuccess.html: success loading ajax jsonp url. data: [' + data + ']');\n\t\t\t\t\t\t\t\tvar userdata = data;\n\t\t\t\t\t\t\t\tif (typeof(userdata) === 'string') {\n\t\t\t\t\t\t\t\t\tuserdata = JSON.parse(data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconsoleInfo('casGenericRedirect.jsp: customerId: [' + userdata.customerId\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], username: [' + userdata.username\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], rememberMe: [' + userdata.rememberMe\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], password: [' + userdata.password\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], email: [' + userdata.email\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], displayName: [' + userdata.displayName\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], firstName: [' + userdata.firstName\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], lastName: [' + userdata.lastName\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], localePreference: [' + userdata.localePreference\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], addressLine1: [' + userdata.addressLine1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], addressLine2: [' + userdata.addressLine2\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], cityName: [' + userdata.cityName\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], state: [' + userdata.state\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], postalCode: [' + userdata.postalCode\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], country: [' + userdata.country\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], passwordChangeRequired: [' + userdata.passwordChangeRequired\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], lastLogin: [' + userdata.lastLogin\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '], erpCustomerNumber: [' + userdata.erpCustomerNumber\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ ']');\n\t\t\t\t\t\t\t\tsend({'status' : 'SUCCESS',\n\t\t\t\t\t\t\t\t\t\t\t'successDetails' : 'Login Successful',\n\t\t\t\t\t\t\t\t\t\t\t'customerId' : userdata.customerId,\n\t\t\t\t\t\t\t\t\t\t\t'username' : userdata.username,\n\t\t\t\t\t\t\t\t\t\t\t'rememberMe' : userdata.rememberMe,\n\t\t\t\t\t\t\t\t\t\t\t'password' : userdata.password,\n\t\t\t\t\t\t\t\t\t\t\t'email' : userdata.email,\n\t\t\t\t\t\t\t\t\t\t\t'displayName' : userdata.displayName,\n\t\t\t\t\t\t\t\t\t\t\t'firstName' : userdata.firstName,\n\t\t\t\t\t\t\t\t\t\t\t'lastName' : userdata.lastName,\n\t\t\t\t\t\t\t\t\t\t\t'localePreference' : userdata.localePreference,\n\t\t\t\t\t\t\t\t\t\t\t'addressLine1' : userdata.addressLine1,\n\t\t\t\t\t\t\t\t\t\t\t'addressLine2' : userdata.addressLine2,\n\t\t\t\t\t\t\t\t\t\t\t'cityName' : userdata.cityName,\n\t\t\t\t\t\t\t\t\t\t\t'state' : userdata.state,\n\t\t\t\t\t\t\t\t\t\t\t'postalCode' : userdata.postalCode,\n\t\t\t\t\t\t\t\t\t\t\t'country' : userdata.country,\n\t\t\t\t\t\t\t\t\t\t\t'passwordChangeRequired' : userdata.passwordChangeRequired,\n\t\t\t\t\t\t\t\t\t\t\t'lastLogin' : userdata.lastLogin,\n\t\t\t\t\t\t\t\t\t\t\t'erpCustomerNumber' : userdata.erpCustomerNumber\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t</script>\n\t</head>\n\t<body>\n\t\t<div id=\"GAuth-component\">\n\t\t\t<img src='/sso/images/ajax-loader.gif' class=\"loaderImage\"/>\n\t\t</div>\n\t\t<script type=\"text/javascript\">\n\t\t\tjQuery(document).ready(function(){\n\t\t\t\tvar service = \"https:\\/\\/connect.garmin.com\\/modern\\/\";\n\t\t\t\tconsoleInfo(\"casEmbedSuccess.html: ready, calling redirect('\" + service + \"')...\");\n\t\t\t\tredirect(service);\n\t\t\t});\n\t\t</script>\n\t<script>(function(){var js = \"window['__CF$cv$params']={r:'822462bb5da144f8',t:'MTY5OTM0NzYyNS40NDEwMDA='};_cpo=document.createElement('script');_cpo.nonce='',_cpo.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js',document.getElementsByTagName('head')[0].appendChild(_cpo);\";var _0xh = document.createElement('iframe');_0xh.height = 1;_0xh.width = 1;_0xh.style.position = 'absolute';_0xh.style.top = 0;_0xh.style.left = 0;_0xh.style.border = 'none';_0xh.style.visibility = 'hidden';document.body.appendChild(_0xh);function handler() {var _0xi = _0xh.contentDocument || _0xh.contentWindow.document;if (_0xi) {var _0xj = _0xi.createElement('script');_0xj.innerHTML = js;_0xi.getElementsByTagName('head')[0].appendChild(_0xj);}}if (document.readyState !== 'loading') {handler();} else if (window.addEventListener) {document.addEventListener('DOMContentLoaded', handler);} else {var prev = document.onreadystatechange || function () {};document.onreadystatechange = function (e) {prev(e);if (document.readyState !== 'loading') {document.onreadystatechange = prev;handler();}};}})();</script></body>\n</html>\n" garmin.0 2023-11-07 10:00:24.108 debug "<!DOCTYPE html>\n<html lang=\"en\" class=\"no-js\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width\" />\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge;\" />\n <title>GARMIN Authentication Application</title>\n <link href=\"/sso/css/GAuth.css?20210406\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n\n\t <link rel=\"stylesheet\" href=\"https://connect.garmin.com/gauth-custom-v1.2-min.css\"/>\n\n <script type=\"text/javascript\" src=\"/sso/js/jquery/3.7.1/jquery.min.js?20210319\"></script>\n <script type=\"text/javascript\">jQuery.noConflict();</script>\n\t\t<script type=\"text/javascript\" src=\"/sso/js/jquery-validate/1.16.0/jquery.validate.min.js?20210319\"></script>\n <script type=\"text/javascript\" src=\"/sso/js/jsUtils.js?20210406\"></script>\n <script type=\"text/javascript\" src=\"/sso/js/json2.js\"></script>\n <script type=\"text/javascript\" src=\"/sso/js/consoleUtils.js?20210319\"></script>\n <script type=\"text/javascript\" src=\"/sso/js/postmessage.js?20210319\"></script>\n <script type=\"text/javascript\" src=\"/sso/js/popupWindow.js\"></script>\n <script type=\"text/javascript\" src=\"/sso/js/base.js?20231020\"></script>\n\t\t<script type=\"text/javascript\" src=\"/sso/js/gigyaUtils.js?20210319\"></script>\n <script type=\"text/javascript\" src=\"/sso/js/login.js?20211102\"></script>\n <script type=\"text/javascript\" src=\"/sso/js/reCaptchaUtil.js?20230706\"></script>\n\n <script>\n var recaptchaSiteKey = null;\n var reCaptchaURL = \"\\\\\\/reCaptcha?service=https%3A%2F%2Fconnect.garmin.com%2Fmodern%2F\\u0026webhost=https%3A%2F%2Fconnect.garmin.com%2Fmodern%2F\\u0026source=https%3A%2F%2Fconnect.garmin.com%2Fsignin%2F\\u0026redirectAfterAccountLoginUrl=https%3A%2F%2Fconnect.garmin.com%2Fmodern%2F\\u0026redirectAfterAccountCreationUrl=https%3A%2F%2Fconnect.garmin.com%2Fmodern%2F\\u0026gauthHost=https%3A%2F%2Fsso.garmin.com%2Fsso\\u0026locale=en_GB\\u0026id=gauth-widget\\u0026cssUrl=https%3A%2F%2Fconnect.garmin.com%2Fgauth-custom-v1.2-min.css\\u0026privacyStatementUrl=https%3A%2F%2Fwww.garmin.com%2Fen-GB%2Fprivacy%2Fconnect%2F\\u0026clientId=GarminConnect\\u0026rememberMeShown=true\\u0026rememberMeChecked=false\\u0026createAccountShown=true\\u0026openCreateAccount=false\\u0026displayNameShown=false\\u0026consumeServiceTicket=false\\u0026initialFocus=true\\u0026embedWidget=false\\u0026socialEnabled=false\\u0026generateExtraServiceTicket=true\\u0026generateTwoExtraServiceTickets=true\\u0026generateNoServiceTicket=false\\u0026globalOptInShown=true\\u0026globalOptInChecked=false\\u0026mobile=false\\u0026connectLegalTerms=true\\u0026showTermsOfUse=false\\u0026showPrivacyPolicy=false\\u0026showConnectLegalAge=false\\u0026locationPromptShown=true\\u0026showPassword=true\\u0026useCustomHeader=false\\u0026mfaRequired=false\\u0026performMFACheck=false\\u0026rememberMyBrowserShown=true\\u0026rememberMyBrowserChecked=false\";\n var isRecaptchaEnabled = null;\n var recaptchaToken = null; \n </script>\n <script type=\"text/javascript\">\n var parent_url = \"https:\\/\\/connect.garmin.com\\/signin\\/\";\n var status \t\t\t= \"\";\n\t\t\tvar result = \"\";\n\t\t\tvar clientId\t\t= 'GarminConnect';\n\t\t\tvar embedWidget \t= false;\n\t\t\tvar isUsernameDefined = (false == true) || (false == true);\n\n // Gigya callback to SocialSignInController for brand new social network users redirects to this page\n // to popup Create or Link Social Account page, but has a possibly mangled source parameter\n // where \"?\" is set as \"<QM>\", so translate it back to \"?\" here.\n parent_url = parent_url.replace('<QM>', '?');\n var parent_scheme = parent_url.substring(0, parent_url.indexOf(\"://\"));\n var parent_hostname = parent_url.substring(parent_scheme.length + 3, parent_url.length);\n if (parent_hostname.indexOf(\"/\") != -1) {\n parent_hostname = parent_hostname.substring(0, parent_hostname.indexOf(\"/\"));\n }\n var parentHost \t = parent_scheme + \"://\" + parent_hostname;\n\t\t\tvar createAccountConfigURL = '\\/createNewAccount?service%3Dhttps%253A%252F%252Fconnect.garmin.com%252Fmodern%252F%26webhost%3Dhttps%253A%252F%252Fconnect.garmin.com%252Fmodern%252F%26source%3Dhttps%253A%252F%252Fconnect.garmin.com%252Fsignin%252F%26redirectAfterAccountLoginUrl%3Dhttps%253A%252F%252Fconnect.garmin.com%252Fmodern%252F%26redirectAfterAccountCreationUrl%3Dhttps%253A%252F%252Fconnect.garmin.com%252Fmodern%252F%26gauthHost%3Dhttps%253A%252F%252Fsso.garmin.com%252Fsso%26locale%3Den_GB%26id%3Dgauth-widget%26cssUrl%3Dhttps%253A%252F%252Fconnect.garmin.com%252Fgauth-custom-v1.2-min.css%26privacyStatementUrl%3Dhttps%253A%252F%252Fwww.garmin.com%252Fen-GB%252Fprivacy%252Fconnect%252F%26clientId%3DGarminConnect%26rememberMeShown%3Dtrue%26rememberMeChecked%3Dfalse%26createAccountShown%3Dtrue%26openCreateAccount%3Dfalse%26displayNameShown%3Dfalse%26consumeServiceTicket%3Dfalse%26initialFocus%3Dtrue%26embedWidget%3Dfalse%26socialEnabled%3Dfalse%26generateExtraServiceTicket%3Dtrue%26generateTwoExtraServiceTickets%3Dtrue%26generateNoServiceTicket%3Dfalse%26globalOptInShown%3Dtrue%26globalOptInChecked%3Dfalse%26mobile%3Dfalse%26connectLegalTerms%3Dtrue%26showTermsOfUse%3Dfalse%26showPrivacyPolicy%3Dfalse%26showConnectLegalAge%3Dfalse%26locationPromptShown%3Dtrue%26showPassword%3Dtrue%26useCustomHeader%3Dfalse%26mfaRequired%3Dfalse%26performMFACheck%3Dfalse%26rememberMyBrowserShown%3Dtrue%26rememberMyBrowserChecked%3Dfalse';\n var socialConfigURL = 'https://sso.garmin.com/sso/socialSignIn?service%3Dhttps%3A%2F%2Fconnect.garmin.com%2Fmodern%2F%26webhost%3Dhttps%3A%2F%2Fconnect.garmin.com%2Fmodern%2F%26source%3Dhttps%3A%2F%2Fconnect.garmin.com%2Fsignin%2F%26redirectAfterAccountLoginUrl%3Dhttps%3A%2F%2Fconnect.garmin.com%2Fmodern%2F%26redirectAfterAccountCreationUrl%3Dhttps%3A%2F%2Fconnect.garmin.com%2Fmodern%2F%26gauthHost%3Dhttps%3A%2F%2Fsso.garmin.com%2Fsso%26locale%3Den_GB%26id%3Dgauth-widget%26cssUrl%3Dhttps%3A%2F%2Fconnect.garmin.com%2Fgauth-custom-v1.2-min.css%26privacyStatementUrl%3Dhttps%3A%2F%2Fwww.garmin.com%2Fen-GB%2Fprivacy%2Fconnect%2F%26clientId%3DGarminConnect%26rememberMeShown%3Dtrue%26rememberMeChecked%3Dfalse%26createAccountShown%3Dtrue%26openCreateAccount%3Dfalse%26displayNameShown%3Dfalse%26consumeServiceTicket%3Dfalse%26initialFocus%3Dtrue%26embedWidget%3Dfalse%26socialEnabled%3Dfalse%26generateExtraServiceTicket%3Dtrue%26generateTwoExtraServiceTickets%3Dtrue%26generateNoServiceTicket%3Dfalse%26globalOptInShown%3Dtrue%26globalOptInChecked%3Dfalse%26mobile%3Dfalse%26connectLegalTerms%3Dtrue%26showTermsOfUse%3Dfalse%26showPrivacyPolicy%3Dfalse%26showConnectLegalAge%3Dfalse%26locationPromptShown%3Dtrue%26showPassword%3Dtrue%26useCustomHeader%3Dfalse%26mfaRequired%3Dfalse%26performMFACheck%3Dfalse%26rememberMyBrowserShown%3Dtrue%26rememberMyBrowserChecked%3Dfalse';\n var gigyaURL = \"https://cdns.gigya.com/js/gigya.js?apiKey=2_R3ZGY8Bqlwwk3_63knoD9wA_m-Y19mAgW61bF_s5k9gymYnMEAtMrJiF5MjF-U7B\";\n\n if (createAccountConfigURL.indexOf('%253A%252F%252F') != -1) {\n \tcreateAccountConfigURL = decodeURIComponent(createAccountConfigURL);\n }\n consoleInfo('signin.html embedWidget: false, createAccountConfigURL: \\/createNewAccount?service%3Dhttps%253A%252F%252Fconnect.garmin.com%252Fmodern%252F%26webhost%3Dhttps%253A%252F%252Fconnect.garmin.com%252Fmodern%252F%26source%3Dhttps%253A%252F%252Fconnect.garmin.com%252Fsignin%252F%26redirectAfterAccountLoginUrl%3Dhttps%253A%252F%252Fconnect.garmin.com%252Fmodern%252F%26redirectAfterAccountCreationUrl%3Dhttps%253A%252F%252Fconnect.garmin.com%252Fmodern%252F%26gauthHost%3Dhttps%253A%252F%252Fsso.garmin.com%252Fsso%26locale%3Den_GB%26id%3Dgauth-widget%26cssUrl%3Dhttps%253A%252F%252Fconnect.garmin.com%252Fgauth-custom-v1.2-min.css%26privacyStatementUrl%3Dhttps%253A%252F%252Fwww.garmin.com%252Fen-GB%252Fprivacy%252Fconnect%252F%26clientId%3DGarminConnect%26rememberMeShown%3Dtrue%26rememberMeChecked%3Dfalse%26createAccountShown%3Dtrue%26openCreateAccount%3Dfalse%26displayNameShown%3Dfalse%26consumeServiceTicket%3Dfalse%26initialFocus%3Dtrue%26embedWidget%3Dfalse%26socialEnabled%3Dfalse%26generateExtraServiceTicket%3Dtrue%26generateTwoExtraServiceTickets%3Dtrue%26generateNoServiceTicket%3Dfalse%26globalOptInShown%3Dtrue%26globalOptInChecked%3Dfalse%26mobile%3Dfalse%26connectLegalTerms%3Dtrue%26showTermsOfUse%3Dfalse%26showPrivacyPolicy%3Dfalse%26showConnectLegalAge%3Dfalse%26locationPromptShown%3Dtrue%26showPassword%3Dtrue%26useCustomHeader%3Dfalse%26mfaRequired%3Dfalse%26performMFACheck%3Dfalse%26rememberMyBrowserShown%3Dtrue%26rememberMyBrowserChecked%3Dfalse, socialEnabled: false, gigyaSupported: true, socialConfigURL(): https://sso.garmin.com/sso/socialSignIn?service%3Dhttps%3A%2F%2Fconnect.garmin.com%2Fmodern%2F%26webhost%3Dhttps%3A%2F%2Fconnect.garmin.com%2Fmodern%2F%26source%3Dhttps%3A%2F%2Fconnect.garmin.com%2Fsignin%2F%26redirectAfterAccountLoginUrl%3Dhttps%3A%2F%2Fconnect.garmin.com%2Fmodern%2F%26redirectAfterAccountCreationUrl%3Dhttps%3A%2F%2Fconnect.garmin.com%2Fmodern%2F%26gauthHost%3Dhttps%3A%2F%2Fsso.garmin.com%2Fsso%26locale%3Den_GB%26id%3Dgauth-widget%26cssUrl%3Dhttps%3A%2F%2Fconnect.garmin.com%2Fgauth-custom-v1.2-min.css%26privacyStatementUrl%3Dhttps%3A%2F%2Fwww.garmin.com%2Fen-GB%2Fprivacy%2Fconnect%2F%26clientId%3DGarminConnect%26rememberMeShown%3Dtrue%26rememberMeChecked%3Dfalse%26createAccountShown%3Dtrue%26openCreateAccount%3Dfalse%26displayNameShown%3Dfalse%26consumeServiceTicket%3Dfalse%26initialFocus%3Dtrue%26embedWidget%3Dfalse%26socialEnabled%3Dfalse%26generateExtraServiceTicket%3Dtrue%26generateTwoExtraServiceTickets%3Dtrue%26generateNoServiceTicket%3Dfalse%26globalOptInShown%3Dtrue%26globalOptInChecked%3Dfalse%26mobile%3Dfalse%26connectLegalTerms%3Dtrue%26showTermsOfUse%3Dfalse%26showPrivacyPolicy%3Dfalse%26showConnectLegalAge%3Dfalse%26locationPromptShown%3Dtrue%26showPassword%3Dtrue%26useCustomHeader%3Dfalse%26mfaRequired%3Dfalse%26performMFACheck%3Dfalse%26rememberMyBrowserShown%3Dtrue%26rememberMyBrowserChecked%3Dfalse');\n\n if (socialConfigURL.indexOf('%3A%2F%2F') != -1) {\n \tsocialConfigURL = decodeURIComponent(socialConfigURL);\n }\n\n if( status != null && status != ''){\n \tsend({'status':status});\n }\n\n jQuery(document).ready( function(){\n\n\n consoleInfo(\"signin.html: setting field validation rules...\");\n\n jQuery(\"#username\").rules(\"add\",{\n required: true,\n messages: {\n required: \"Email is required.\"\n }});\n\n jQuery(\"#password\").rules(\"add\", {\n required: true,\n messages: {\n required: \"Password is required.\"\n }\n });\n\n consoleInfo(\"signin.html: done setting field validation rules...\");\n\n });\n\n XD.receiveMessage(function(m){\n consoleInfo(\"signin.html: \" + m.data + \" received on \" + window.location.host);\n if (m && m.data) {\n var md = m.data;\n if (typeof(md) === 'string') {\n md = JSON.parse(m.data);\n }\n if (md.setUsername) {\n consoleInfo(\"signin.html: Setting username \\\"\" + md.username + \"\\\"...\");\n jQuery(\"#signInWithDiffLink\").click(); // Ensure the normal login form is shown.\n jQuery(\"#username\").val(md.username);\n jQuery(\"#password\").focus();\n }\n }\n }, parentHost);\n </script>\n </head>\n <body>\n\n <!-- begin GAuth component -->\n <div id=\"GAuth-component\">\n <!-- begin login component-->\n <div id=\"login-component\" class=\"blueForm-basic\">\n <input type=\"hidden\" id=\"queryString\" value=\"service=https%3A%2F%2Fconnect.garmin.com%2Fmodern%2F&webhost=https%3A%2F%2Fconnect.garmin.com%2Fmodern%2F&source=https%3A%2F%2Fconnect.garmin.com%2Fsignin%2F&redirectAfterAccountLoginUrl=https%3A%2F%2Fconnect.garmin.com%2Fmodern%2F&redirectAfterAccountCreationUrl=https%3A%2F%2Fconnect.garmin.com%2Fmodern%2F&gauthHost=https%3A%2F%2Fsso.garmin.com%2Fsso&locale=en_GB&id=gauth-widget&cssUrl=https%3A%2F%2Fconnect.garmin.com%2Fgauth-custom-v1.2-min.css&privacyStatementUrl=https%3A%2F%2Fwww.garmin.com%2Fen-GB%2Fprivacy%2Fconnect%2F&clientId=GarminConnect&rememberMeShown=true&rememberMeChecked=false&createAccountShown=true&openCreateAccount=false&displayNameShown=false&consumeServiceTicket=false&initialFocus=true&embedWidget=false&socialEnabled=false&generateExtraServiceTicket=true&generateTwoExtraServiceTickets=true&generateNoServiceTicket=false&globalOptInShown=true&globalOptInChecked=false&mobile=false&connectLegalTerms=true&showTermsOfUse=false&showPrivacyPolicy=false&showConnectLegalAge=false&locationPromptShown=true&showPassword=true&useCustomHeader=false&mfaRequired=false&performMFACheck=false&rememberMyBrowserShown=true&rememberMyBrowserChecked=false\" />\n\t \t <input type=\"hidden\" id=\"contextPath\" value=\"/sso\" />\n <!-- begin login form -->\n <div id=\"login-state-default\">\n <h2>Sign In</h2>\n\n <form method=\"post\" id=\"login-form\">\n\n <div class=\"form-alert\">\n\t\t\t\t\t\t\t\n \n \n \n \n \n \n\n <div id=\"username-error\" style=\"display:none;\"></div>\n <div id=\"password-error\" style=\"display:none;\"></div>\n </div>\n <div class=\"textfield\">\n\t\t\t\t\t\t\t<label for=\"username\">Email</label>\n \t\t<!-- If the lockToEmailAddress parameter is specified then we want to mark the field as readonly,\n \t\tpreload the email address, and disable the other input so that null isn't sent to the server. We'll\n \t\talso style the field to have a darker grey background and disable the mouse pointer\n \t\t -->\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t<!-- If the lockToEmailAddress parameter is NOT specified then keep the existing functionality and disable the readonly input field\n\t\t\t\t\t\t\t -->\n\t\t\t\t\t\t\t <input class=\"login_email\" name=\"username\" id=\"username\" value=\"\" type=\"email\" spellcheck=\"false\" autocorrect=\"off\" autocapitalize=\"off\"/>\n\n </div>\n\n <div class=\"textfield\">\n <label for=\"password\">Password</label>\n <a id=\"loginforgotpassword\" class=\"login-forgot-password\" style=\"cursor:pointer\">(Forgot?)</a>\n <input type=\"password\" name=\"password\" id=\"password\" spellcheck=\"false\" autocorrect=\"off\" autocapitalize=\"off\" />\n <strong id=\"capslock-warning\" class=\"information\" title=\"Caps lock is on.\" style=\"display: none;\">Caps lock is on.</strong>\n\t\t\t\t\t </div>\n <input type=\"hidden\" name=\"embed\" value=\"false\"/>\n <input type=\"hidden\" name=\"_csrf\" value=\"30B49FDDC157F17F1A3F4266E7ED8D8C04EDF5487BBD88FE2C7F82976579D56A8B06DCB0784A2BE9E7ABCCBA93456A612BAB\" />\n <button type=\"submit\" id=\"login-btn-signin\" class=\"btn1\" accesskey=\"l\">Sign In</button>\n <span>\n\t <input type=\"checkbox\" name=\"rememberme\" id=\"login-remember-checkbox\" onClick=\"if (this.checked) { createAccountConfigURL += '&rememberme=on'; socialConfigURL += '&rememberme=on'; } else { createAccountConfigURL = createAccountConfigURL.replace('&rememberme=on', ''); socialConfigURL = socialConfigURL.replace('&rememberme=on', ''); }\"/>\n \t<label id=\"login-remember\" for=\"login-remember-checkbox\">Remember Me</label>\n </span>\n\n\n <!-- The existence of the \"rememberme\" parameter at all will remember the user! -->\n \n\n </form>\n </div>\n <!-- end login form -->\n\n <!-- begin Create Account message -->\n\t <div id=\"login-create-account\">\n\t <span>\n\t\t <span>Don't have an account?</span>\n\n\t \n\t <a href='javascript:void(0)' class=\"createAccountLink\" id=\"lnkCreateAccount\" title=\"Create Account\" >Create One</a>\n\t\t\t\t\t</span>\n\t </div>\n\t <!-- end Create Account message -->\n\n\t <!-- begin Social Sign In component -->\n\t <div id=\"SSI-component\">\n \n\n\t\t\t\t\t\n\t </div>\n\t <!-- end Social Sign In component -->\n <div class=\"clearfix\"></div> <!-- Ensure that GAuth-component div's height is computed correctly. -->\n </div>\n <!-- end login component-->\n\n\t\t</div>\n\t\t<!-- end GAuth component -->\n\n <script type=\"text/javascript\">\n jQuery(document).ready(function(){\n \tresizePageOnLoad(jQuery(\"#GAuth-component\").height());\n\n\t\t if(isUsernameDefined == true){\n\t\t // If the user's login just failed, redisplay the email/username specified, and focus them in the password field.\n\t\t jQuery(\"#password\").focus();\n\t\t } else if(true == true && result != \"PASSWORD_RESET_RESULT\"){\n // Otherwise focus them in the username field of the login dialog.\n jQuery(\"#username\").focus();\n }\n\n // Scroll to top of iframe to fix problem where Firefox 3.0-3.6 browsers initially show top of iframe cutoff.\n location.href=\"#\";\n\n if(!embedWidget){\n \tjQuery('.createAccountLink').click(function(){\n\t send({'openLiteBox':'createAccountLink', 'popupUrl': createAccountConfigURL, 'popupTitle':'Create An Account', 'clientId':clientId});\n\t });\n }\n });\n </script>\n <script>(function(){var js = \"window['__CF$cv$params']={r:'822462b56b45165b',t:'MTY5OTM0NzYyMy45MzEwMDA='};_cpo=document.createElement('script');_cpo.nonce='',_cpo.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js',document.getElementsByTagName('head')[0].appendChild(_cpo);\";var _0xh = document.createElement('iframe');_0xh.height = 1;_0xh.width = 1;_0xh.style.position = 'absolute';_0xh.style.top = 0;_0xh.style.left = 0;_0xh.style.border = 'none';_0xh.style.visibility = 'hidden';document.body.appendChild(_0xh);function handler() {var _0xi = _0xh.contentDocument || _0xh.contentWindow.document;if (_0xi) {var _0xj = _0xi.createElement('script');_0xj.innerHTML = js;_0xi.getElementsByTagName('head')[0].appendChild(_0xj);}}if (document.readyState !== 'loading') {handler();} else if (window.addEventListener) {document.addEventListener('DOMContentLoaded', handler);} else {var prev = document.onreadystatechange || function () {};document.onreadystatechange = function (e) {prev(e);if (document.readyState !== 'loading') {document.onreadystatechange = prev;handler();}};}})();</script></body>\n</html>\n" garmin.0 2023-11-07 10:00:23.113 info Login to Garmin garmin.0 2023-11-07 10:00:23.079 debug Schedule restart: 57 23 * * * garmin.0 2023-11-07 10:00:23.057 info starting. Version 0.0.4 in /opt/iobroker/node_modules/iobroker.garmin, node: v18.17.1, js-controller: 5.0.16 admin.0 2023-11-07 10:00:09.969 warn garmin has an invalid jsonConfig: [{"instancePath":"","schemaPath":"#/required","keyword":"required","params":{"missingProperty":"type"},"message":"must have required property 'type'"}]
-
@bommel_030 und du darfst alle die werte über die Webseite abrufen. weil 402 bedeutet kein abo abgeschlossen
-
@tombox
"aktiv" nutze ich nur die Basics wie Schritte / Stockwerke / Gewicht etc. Die kann ich von der Webseite auslesen.
Ich wüsste, mal abgesehen vom LTE Abo, wo ich bei Garmin eins abschließen könnte. -
@kirbsi Bitte mal die GitHub version testen ob das so funktioniert
-
@tombox
Mit der github Version werden meine verwendeten Datenpunkte wieder aktualisiert. Danke schon mal dafür.
Momentan läuft der Adapter seit 8h stabil. Bis jetzt hat er nach 2 bis 3 Tagen immer zum Passwort-Reset seitens Garmin geführt. Vielleicht passiert das jetzt auch nicht mehr.