NEWS
Test Adapter Garmin
-
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. -
@tombox
So, der Adapter hat jetzt knapp 7 Tage durchgehalten, eben bekam ich wieder die Mail von Garmin "Wir haben eine Anfrage zum Zurücksetzen deines Kennwortes erhalten." Das konnte ich jetzt schon mehrfach beobachten, sobald der Adapter läuft wird früher oder später das Passwort zurückgesetzt. Ist der Adapter aus kommt das nie. Im Log kommt dann verständlicherweise nur:garmin.0 2023-11-14 09:07:19.345 error TypeError: Cannot read properties of undefined (reading 'split') garmin.0 2023-11-14 09:07:19.342 error Failed ticket please check username and password
Abrufintervall ist aktuell bei 61 Minuten. Hatte das Phänomen aber auch schon bei nur 1x täglich um 23:55 abrufen.
Hast du eine Idee woran das liegen könnte? -
@bommel_030 bitte mal die GitHub version testen ob sie sich anders verhält
-
@tombox
Mit GitHub Version mit den gleichen Einstellungen wieder ins Rennen geschickt. Melde mich wenn/falls das Passwort wieder resettet wird. Thx -
Mit der GitHub Version geht bei mir auch wieder alles. Danke
-
@tombox
Hi, hast du etwas am Abrufintervall geändert? Hab seit ein paar Tagen Fehlermeldungen im LOG die ich zeitlich nicht zuordnen kann.garmin.0 2023-11-20 12:25:22.753 warn Terminated (UNCAUGHT_EXCEPTION): Without reason garmin.0 2023-11-20 12:25:22.750 error Exception-Code: ERR_BAD_RESPONSE: Request failed with status code 500 garmin.0 2023-11-20 12:25:22.750 error AxiosError: Request failed with status code 500 at settle (/opt/iobroker/node_modules/iobroker.garmin/node_modules/axios/dist/node/axios.cjs:1913:12) at IncomingMessage.handleStreamEnd (/opt/iobroker/node_modules/iobroker.garmin/node_modules/axios/dist/node/axios.cjs:3008:11) at IncomingMessage.emit (node:events:526:35) at endReadableNT (node:internal/streams/readable:1359:12) at process.processTicksAndRejections (node:internal/process/task_queues:82:21) garmin.0 2023-11-20 12:25:22.749 error unhandled promise rejection: Request failed with status code 500 garmin.0 2023-11-20 12:25:22.748 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().
Ich bekomme diese Fehlermeldung alle 2h. Mein ursprüngliches Abrufintervall war 61 Minuten. Nachdem ich den Fehler bemerkt habe, habe ich den Adapter erstmal 1 Tag pausiert und ihn dann mit dem Abrufintervall 91 Minuten wieder gestartet.
Die Daten werden weiterhin aktualisiert und ich habe noch keinen Passwortreset erhalten. Was ich nicht verstehe, die Datenpunkte werden alles 60 Minuten aktualisiert, alle 120 Minuten kommt der Fehler, aber das Abrufintervall steht auf 91 Minuten. -
@bommel_030 bitte mal die GitHub erneut installieren
-
@tombox
Adapter um 6:53 in der GitHub Version gestartet. Daten ohne Meldung abgerufen. Nach dem eingestellten Intervall von 91 Minuten um 8:24 wieder Daten abgerufen ohne Meldung im LOG.
Um 8:53, 9:53 und 9:57 (passt nicht zum Intervall ?!?) Folgende Fehlermeldung im LOGgarmin.0 2023-11-21 09:57:01.848 error {"statusCode":500,"message":"Internal server error"} garmin.0 2023-11-21 09:57:01.848 error AxiosError: Request failed with status code 500 garmin.0 2023-11-21 09:57:01.848 error Failed refresh token garmin.0 2023-11-21 09:53:55.518 error {"statusCode":500,"message":"Internal server error"} garmin.0 2023-11-21 09:53:55.518 error AxiosError: Request failed with status code 500 garmin.0 2023-11-21 09:53:55.518 error Failed refresh token garmin.0 2023-11-21 08:53:56.605 error {"statusCode":500,"message":"Internal server error"} garmin.0 2023-11-21 08:53:56.605 error AxiosError: Request failed with status code 500 garmin.0 2023-11-21 08:53:56.603 error Failed refresh token
Um 10:09 kam die Mail von Garmin Passwort wurde zurückgesetzt.
-
@tombox
Hab das Passwort erneuert und den Adapter mit 121 Abfrageintervall im Debug Modus neu gestartet. Dabei hat er zumindest die aktuellen Schritte noch abgerufen.
Scheinbar versucht der Adapter jede Stunde den Token zu erneuern, egal welches Abrufintervall eingestellt ist. Ist das notwendig bzw.. so gewollt?garmin.0 2023-11-21 12:24:00.469 error {"statusCode":500,"message":"Internal server error"} garmin.0 2023-11-21 12:24:00.469 error AxiosError: Request failed with status code 500 garmin.0 2023-11-21 12:24:00.469 error Failed refresh token garmin.0 2023-11-21 12:23:59.081 debug Refresh token garmin.0 2023-11-21 11:24:02.206 debug {"access_token":"Hier stand ein richtiger Token","token_type":"bearer","refresh_token":"eyJyZWZyZXNoVG9rZW5WYWx1ZSI6IjU2MWQzYzkwLWVjYWItNDc3Yy1hNTAwLWYxMTNkZmNkMzFkNSIsImdhcm1pbkd1aWQiOiI0MjRmYmU5Ny1hODlkLTQ3ZWItYTFjYi1jYmViN2YwMGViODUifQ==","expires_in":3599,"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":"728ee707-c245-4989-953f-5d1b14ff3e99","refresh_token_expires_in":7199} garmin.0 2023-11-21 11:24:00.080 debug Refresh token garmin.0 2023-11-21 10:24:01.080 debug {"startDate":"2023-11-15","endDate":"2023-11-21","dateWeightList":[],"totalAverage":{"from":1700006400000,"until":1700611199999,"weight":null,"bmi":null,"bodyFat":null,"bodyWater":null,"boneMass":null,"muscleMass":null,"physiqueRating":null,"visceralFat":null,"metabolicAge":null}}
Hab den Adapter jetzt erstmal wieder deaktiviert.