cagnulein / qdomyos-zwift

Zwift bridge for smart treadmills and bike/cyclette
https://www.qzfitness.com/
GNU General Public License v3.0
368 stars 109 forks source link

Peloton Rowing with Concept 2 #1481

Closed PugMamma closed 1 year ago

PugMamma commented 1 year ago

Just wanted to send debug logs since Peloton finally released rowing content on the app. Plan to test the rowing bootcamps and can provide feedback if needed. As of now, it seems the basics work (can connect with Peloton and workout is sent to Strava). Just let me know if you want any additional testing since I know this will be a popular feature.

Additional context Tue May 23 10_23_10 2023.zip

Add any other context or screenshots about the feature request here.

cagnulein commented 1 year ago

wow that's a great news! i will check it tomorrow!

Il giorno mar 23 mag 2023 alle 19:49 PugMamma @.***> ha scritto:

Assigned #1481 https://github.com/cagnulein/qdomyos-zwift/issues/1481 to @cagnulein https://github.com/cagnulein.

— Reply to this email directly, view it on GitHub https://github.com/cagnulein/qdomyos-zwift/issues/1481#event-9319190786, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAALYWGBBE3J55E4ODGFT6LXHT2BDANCNFSM6AAAAAAYMHPROM . You are receiving this because you were assigned.Message ID: @.***>

-- Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

cagnulein commented 1 year ago

Hi @PugMamma unfortunately you attached only the fit files, i need the debug log, thanks!

PugMamma commented 1 year ago

Hi @PugMamma unfortunately you attached only the fit files, i need the debug log, thanks! Sorry. I was just so excited that I sent the wrong file.

debug-Tue_May_23_10_12_47_2023.log

debug-Tue_May_23_10_15_23_2023.log

cagnulein commented 1 year ago
{
   "averages":{
      "average_avg_pace":28.96,
      "average_avg_power":65,
      "average_avg_stroke_rate":17,
      "average_calories":29,
      "average_distance":719.56,
      "average_effort_score":null,
      "average_stroke_count":84,
      "average_total_work":18,
      "total_heart_rate_zone_durations":null
   },
   "class_types":[
      {
         "id":"db88920cc225430f9abc9d807197efb0",
         "name":"Warm Up / Cool Down (Rowing)"
      }
   ],
   "default_album_images":{
      "default_class_detail_image_url":"https://s3.amazonaws.com/peloton-ride-images/DEFAULT_ALBUM_ART_CLASS_DETAIL.svg",
      "default_in_class_image_url":"https://s3.amazonaws.com/peloton-ride-images/DEFAULT_ALBUM_ART_IN_CLASS.svg"
   },
   "disabled_leaderboard_filters":{
      "age_and_gender":false,
      "following":false,
      "just_me":false
   },
   "events":{
      "data":[

      ]
   },
   "excluded_platforms":[

   ],
   "instructor_cues":[

   ],
   "is_ftp_test":false,
   "lanebreak_info":null,
   "playlist":{
      "id":"6c88c616559f4bd1916b7022990a00b4",
      "is_in_class_music_shown":true,
      "is_playlist_shown":true,
      "is_top_artists_shown":true,
      "ride_id":"223a1974c664465382c230d816ee7153",
      "songs":[
         {
            "album":{
               "id":"311b1ac3247e4d04ba7956a80f383142",
               "image_url":"https://images.music.onepeloton.com/rr/albumimages/catalog/e6691a61-68f0-428c-873e-bf667dcd863b/product/73e2f127-04d6-437e-a564-5be1b6c8cb6f/big_A10301A0002940908D_T-109336180422_Image.jpg",
               "name":"For Lack of a Better Name (The Extended Mixes)"
            },
            "artists":[
               {
                  "artist_id":"f04c7835a5b94afdbe965ecc3bdf0bc6",
                  "artist_name":"deadmau5"
               },
               {
                  "artist_id":"8681dfe94f53423090f2d5312af3618e",
                  "artist_name":"deadmau5"
               },
               {
                  "artist_id":"8a14fb40538149e09b08af3d7bb87837",
                  "artist_name":"Rob Swire"
               }
            ],
            "cue_time_offset":60,
            "explicit_rating":0,
            "id":"8de9fbdeff844b959d80d92834c65386",
            "liked":false,
            "start_time_offset":60,
            "title":"Ghosts 'n' Stuff (feat. Rob Swire)"
         },
         {
            "album":{
               "id":"043b786ffe054d22bb826341bbdea1b7",
               "image_url":"https://images.music.onepeloton.com/rr/albumimages/catalog/eb20e7d5-68c6-48eb-8aed-9072d54246db/product/d41af0e2-6ee3-4eed-93f2-2245941cdec5/big_191018568016.jpg",
               "name":"The Creeps"
            },
            "artists":[
               {
                  "artist_id":"ef7b8e5611254b1faaebede32f7160fa",
                  "artist_name":"Camille Jones"
               },
               {
                  "artist_id":"3b999b79b49a4ca4aa0553d3f7cc25f6",
                  "artist_name":"Fedde Le Grand"
               }
            ],
            "cue_time_offset":389,
            "explicit_rating":0,
            "id":"3ab25b2f0620473c89749d72ad87816b",
            "liked":false,
            "start_time_offset":385,
            "title":"The Creeps (Radio Edit)"
         }
      ],
      "stream_id":"556096ee81b24bf19860f5c70d45ab92",
      "stream_url":null,
      "top_albums":[
         {
            "id":"043b786ffe054d22bb826341bbdea1b7",
            "image_url":"https://images.music.onepeloton.com/rr/albumimages/catalog/eb20e7d5-68c6-48eb-8aed-9072d54246db/product/d41af0e2-6ee3-4eed-93f2-2245941cdec5/big_191018568016.jpg",
            "name":"The Creeps"
         },
         {
            "id":"311b1ac3247e4d04ba7956a80f383142",
            "image_url":"https://images.music.onepeloton.com/rr/albumimages/catalog/e6691a61-68f0-428c-873e-bf667dcd863b/product/73e2f127-04d6-437e-a564-5be1b6c8cb6f/big_A10301A0002940908D_T-109336180422_Image.jpg",
            "name":"For Lack of a Better Name (The Extended Mixes)"
         }
      ],
      "top_artists":[
         {
            "artist_id":"3b999b79b49a4ca4aa0553d3f7cc25f6",
            "artist_name":"Fedde Le Grand"
         },
         {
            "artist_id":"f04c7835a5b94afdbe965ecc3bdf0bc6",
            "artist_name":"deadmau5"
         },
         {
            "artist_id":"8681dfe94f53423090f2d5312af3618e",
            "artist_name":"deadmau5"
         },
         {
            "artist_id":"8a14fb40538149e09b08af3d7bb87837",
            "artist_name":"Rob Swire"
         }
      ]
   },
   "related_rides":{

   },
   "ride":{
      "availability":{
         "is_available":true,
         "reason":null
      },
      "captions":[
         "en-US"
      ],
      "class_type_ids":[
         "db88920cc225430f9abc9d807197efb0"
      ],
      "content_availability":"available",
      "content_availability_level":"digital_and_above",
      "content_format":"video",
      "content_provider":"peloton",
      "description":"Wake up your muscles and increase your heart rate in this warm up row designed to help you maximize your workout.",
      "difficulty_estimate":4.455,
      "difficulty_level":null,
      "difficulty_rating_avg":4.455,
      "difficulty_rating_count":855,
      "distance":null,
      "distance_display_value":null,
      "distance_unit":null,
      "duration":300,
      "dynamic_video_recorded_speed_in_mph":0,
      "equipment_ids":[

      ],
      "equipment_tags":[

      ],
      "explicit_rating":0,
      "extra_images":[

      ],
      "fitness_discipline":"caesar",
      "fitness_discipline_display_name":"Rowing",
      "flags":[

      ],
      "free_for_limited_time":false,
      "has_closed_captions":true,
      "has_free_mode":false,
      "has_pedaling_metrics":false,
      "home_peloton_id":"2112b1bb18604b23b15cf1697085d5b9",
      "id":"223a1974c664465382c230d816ee7153",
      "image_url":"https://s3.amazonaws.com/peloton-ride-images/0c8c813a4566cef16d243e52d2c7b88fa6b6b410/img_1655328332_b5e83932096042efafea48a5fa84bf80.jpg",
      "individual_instructor_ids":[

      ],
      "instructor":{
         "about_image_url":"https://s3.amazonaws.com/workout-metric-images-prod/990dc23d1f7648f281f6bc4aa5e38b75",
         "background":"Working out should feel good! My goal is to empower people to form healthy habits to carry with them for the rest of their lives. I will challenge you, then hit you with positivity. At the end of the day, I want to bring you joy!",
         "bike_instructor_list_display_image_url":null,
         "bio":"Adrian is a powerhouse instructor with an unexpected tender side. A native New Yorker with bold Bronx energy, Adrian is a competitive sprinter—but he’s not all speed and strength. Adrian's lighthearted sense of humor is what really shines through his coaching. His goal is to encourage others and bring joy through fitness. When he’s not at the gym, you can find Adrian perfecting his craft behind the camera. Adrian is a passionate photographer and finds peace in the creative process.",
         "coach_type":"peloton_coach",
         "facebook_fan_page":"",
         "featured_profile":true,
         "film_link":"",
         "first_name":"Adrian",
         "fitness_disciplines":[
            "caesar",
            "caesar_bootcamp",
            "cardio",
            "circuit",
            "running",
            "strength",
            "stretching",
            "walking"
         ],
         "id":"f962a2b1b34d424cabab73bef81bc8db",
         "image_url":"https://s3.amazonaws.com/workout-metric-images-prod/0f70685076524186921aacf1dd37e548",
         "instagram_profile":"",
         "instructor_hero_image_url":"https://s3.amazonaws.com/workout-metric-images-prod/7709c62b521945c1af35e36dda2e9782",
         "ios_instructor_list_display_image_url":"https://s3.amazonaws.com/workout-metric-images-prod/cf86c09b52034f13bb04bb4bcfe2c90b",
         "is_announced":true,
         "is_filterable":true,
         "is_instructor_group":false,
         "is_visible":true,
         "jumbotron_url":null,
         "jumbotron_url_dark":"https://s3.amazonaws.com/workout-metric-images-prod/b675c44c734f4bf5bb5479f084b83aa3",
         "jumbotron_url_ios":"https://s3.amazonaws.com/workout-metric-images-prod/6487e119a3d342d482ed5c8853a20fe0",
         "last_name":"Williams",
         "life_style_image_url":"https://s3.amazonaws.com/workout-metric-images-prod/470ba0ef2d9d4cc5b9c2b08f0defa992",
         "list_order":11,
         "music_bio":"",
         "name":"Adrian Williams",
         "ordered_q_and_as":[
            [
               "How Do You Motivate?",
               "I encourage you to embrace being uncomfortable. That’s where growth happens. I try not to take myself too seriously, though. My workouts are tough, but I like to lead with humor. I want you to leave with a smile!"
            ],
            [
               "Outside of Peloton",
               "Photography has been a growing passion of mine. Fitness requires so much energy, and photography helps me slow down and appreciate small moments. I also love to cook too, because I love to eat!"
            ],
            [
               "",
               ""
            ]
         ],
         "quote":"“Never give up because great things take time.”",
         "short_bio":"Adrian is a powerhouse instructor with an unexpected tender side. A native New Yorker with bold Bronx energy, Adrian is a competitive sprinter—but he’s not all speed and strength. His lighthearted sense of humor shines through his coaching.",
         "spotify_playlist_uri":"spotify:playlist:0NsytVrJeDQ6jEQBZcHHGu",
         "strava_profile":"",
         "twitter_profile":"",
         "user_id":"8bb5f9c485a543c681e903bf9bb01019",
         "username":"nooneissafe",
         "web_instructor_list_display_image_url":"https://s3.amazonaws.com/workout-metric-images-prod/bfbc68a8483f4550896fb1f1a2420e8b",
         "web_instructor_list_gif_image_url":null,
         "workout_share_images":[
            {
               "fitness_discipline":"bike_bootcamp",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"caesar",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"caesar_bootcamp",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"cardio",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"circuit",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"cycling",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"meditation",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"running",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"strength",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"stretching",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"walking",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"yoga",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            }
         ]
      },
      "instructor_id":"f962a2b1b34d424cabab73bef81bc8db",
      "is_archived":true,
      "is_closed_caption_shown":true,
      "is_dynamic_video_eligible":false,
      "is_explicit":false,
      "is_favorite":false,
      "is_fixed_distance":false,
      "is_limited_ride":false,
      "is_live_in_studio_only":true,
      "join_tokens":{
         "on_demand":"eyJob21lX3BlbG90b25faWQiOiBudWxsLCAicmlkZV9pZCI6ICIyMjNhMTk3NGM2NjQ0NjUzODJjMjMwZDgxNmVlNzE1MyIsICJzdHVkaW9fcGVsb3Rvbl9pZCI6IG51bGwsICJ0eXBlIjogIm9uX2RlbWFuZCJ9"
      },
      "language":"english",
      "leaderboard_filter_type":null,
      "length":385,
      "live_stream_id":"223a1974c664465382c230d816ee7153-live",
      "live_stream_url":null,
      "location":"psny-studio-3",
      "membership_tiering_info":{
         "limited_classes_reset_date":null,
         "limited_classes_taken":null,
         "limited_classes_total":null,
         "tier_type":"all_access"
      },
      "metrics":[
         "heart_rate",
         "calories"
      ],
      "muscle_group_score":[
         {
            "bucket":1,
            "display_name":"Biceps",
            "muscle_group":"biceps",
            "percentage":4,
            "score":300
         },
         {
            "bucket":2,
            "display_name":"Core",
            "muscle_group":"core",
            "percentage":9,
            "score":600
         },
         {
            "bucket":3,
            "display_name":"Glutes",
            "muscle_group":"glutes",
            "percentage":13,
            "score":900
         },
         {
            "bucket":3,
            "display_name":"Hamstrings",
            "muscle_group":"hamstrings",
            "percentage":13,
            "score":900
         },
         {
            "bucket":2,
            "display_name":"Hips",
            "muscle_group":"hips",
            "percentage":9,
            "score":600
         },
         {
            "bucket":2,
            "display_name":"Lats",
            "muscle_group":"lats",
            "percentage":9,
            "score":600
         },
         {
            "bucket":2,
            "display_name":"Low Back",
            "muscle_group":"low_back",
            "percentage":9,
            "score":600
         },
         {
            "bucket":2,
            "display_name":"Mid Back",
            "muscle_group":"mid_back",
            "percentage":9,
            "score":600
         },
         {
            "bucket":2,
            "display_name":"Obliques",
            "muscle_group":"obliques",
            "percentage":8,
            "score":600
         },
         {
            "bucket":3,
            "display_name":"Quads",
            "muscle_group":"quads",
            "percentage":13,
            "score":900
         },
         {
            "bucket":1,
            "display_name":"Triceps",
            "muscle_group":"triceps",
            "percentage":4,
            "score":300
         }
      ],
      "origin_locale":"en-US",
      "original_air_time":1668092400,
      "overall_estimate":1,
      "overall_rating_avg":1,
      "overall_rating_count":1062,
      "pedaling_duration":300,
      "pedaling_end_offset":360,
      "pedaling_start_offset":60,
      "rating":0,
      "ride_type_id":"db88920cc225430f9abc9d807197efb0",
      "ride_type_ids":[
         "db88920cc225430f9abc9d807197efb0"
      ],
      "sample_preview_stream_url":null,
      "sample_vod_stream_url":null,
      "scheduled_start_time":1668092400,
      "series_id":"a6f5cc2645b7404eaa5485924168d5fb",
      "sold_out":false,
      "studio_peloton_id":"e4b60d0ab34f4105a2f800a5f4a3c46f",
      "thumbnail_location":null,
      "thumbnail_title":null,
      "title":"5 min Warm Up Row",
      "total_following_workouts":9,
      "total_in_progress_workouts":0,
      "total_ratings":0,
      "total_user_workouts":1,
      "total_workouts":5000,
      "vod_stream_id":"223a1974c664465382c230d816ee7153-vod",
      "vod_stream_url":"https://amd-vod.akamaized.net/classes/caesar/11-2022/223a1974c664465382c230d816ee7153/3/master.m3u8"
   },
   "sampled_top_tags":null,
   "segments":{
      "movements_by_weight_category":{

      },
      "segment_body_focus_distribution":{

      },
      "segment_category_distribution":{
         "Caesar Warm Up":"1.0"
      },
      "segment_list":[
         {
            "icon_name":"warmup",
            "icon_slug":"warmup",
            "icon_url":"https://s3.amazonaws.com/static-cdn.pelotoncycle.com/segment-icons/warmup.png",
            "id":"1e1a2c24d32f42588f95b3a876df4a38",
            "intensity_in_mets":1,
            "is_drill":false,
            "is_transition":false,
            "length":300,
            "metrics_type":"caesar",
            "name":"Warm Up",
            "start_time_offset":0,
            "subsegments_v2":[
               {
                  "display_name":"Easy Effort",
                  "id":"b157b87a3e0248e4a5343f8595ef425e",
                  "length":210,
                  "movements":[
                     {
                        "id":"159cab93b2554d1baad2e1350f2ee7f2",
                        "image_url":null,
                        "long_video_url":null,
                        "movement_videos":[

                        ],
                        "muscle_groups":[
                           {
                              "display_name":"Biceps",
                              "muscle_group":"biceps",
                              "ranking":1
                           },
                           {
                              "display_name":"Core",
                              "muscle_group":"core",
                              "ranking":2
                           },
                           {
                              "display_name":"Glutes",
                              "muscle_group":"glutes",
                              "ranking":3
                           },
                           {
                              "display_name":"Hamstrings",
                              "muscle_group":"hamstrings",
                              "ranking":3
                           },
                           {
                              "display_name":"Hips",
                              "muscle_group":"hips",
                              "ranking":2
                           },
                           {
                              "display_name":"Lats",
                              "muscle_group":"lats",
                              "ranking":2
                           },
                           {
                              "display_name":"Low Back",
                              "muscle_group":"low_back",
                              "ranking":2
                           },
                           {
                              "display_name":"Mid Back",
                              "muscle_group":"mid_back",
                              "ranking":2
                           },
                           {
                              "display_name":"Obliques",
                              "muscle_group":"obliques",
                              "ranking":2
                           },
                           {
                              "display_name":"Quads",
                              "muscle_group":"quads",
                              "ranking":3
                           },
                           {
                              "display_name":"Triceps",
                              "muscle_group":"triceps",
                              "ranking":1
                           }
                        ],
                        "name":"Easy Effort",
                        "note":null,
                        "short_video_url":null,
                        "skill_level":"beginner",
                        "slug":null,
                        "talkback_description":""
                     }
                  ],
                  "offset":0,
                  "rounds":null,
                  "scheduled_offset":0,
                  "trackable_movements_disabled":false,
                  "type":"movement"
               },
               {
                  "display_name":"Challenging Effort",
                  "id":"ad87bc99c5bc4600b97a4da52f0e85a9",
                  "length":30,
                  "movements":[
                     {
                        "id":"74e0b4047a0a468a904e8d3a685c78b0",
                        "image_url":null,
                        "long_video_url":null,
                        "movement_videos":[

                        ],
                        "muscle_groups":[
                           {
                              "display_name":"Biceps",
                              "muscle_group":"biceps",
                              "ranking":1
                           },
                           {
                              "display_name":"Core",
                              "muscle_group":"core",
                              "ranking":2
                           },
                           {
                              "display_name":"Glutes",
                              "muscle_group":"glutes",
                              "ranking":3
                           },
                           {
                              "display_name":"Hamstrings",
                              "muscle_group":"hamstrings",
                              "ranking":3
                           },
                           {
                              "display_name":"Hips",
                              "muscle_group":"hips",
                              "ranking":2
                           },
                           {
                              "display_name":"Lats",
                              "muscle_group":"lats",
                              "ranking":2
                           },
                           {
                              "display_name":"Low Back",
                              "muscle_group":"low_back",
                              "ranking":2
                           },
                           {
                              "display_name":"Mid Back",
                              "muscle_group":"mid_back",
                              "ranking":2
                           },
                           {
                              "display_name":"Obliques",
                              "muscle_group":"obliques",
                              "ranking":2
                           },
                           {
                              "display_name":"Quads",
                              "muscle_group":"quads",
                              "ranking":3
                           },
                           {
                              "display_name":"Triceps",
                              "muscle_group":"triceps",
                              "ranking":1
                           }
                        ],
                        "name":"Challenging Effort",
                        "note":null,
                        "short_video_url":null,
                        "skill_level":"advanced",
                        "slug":null,
                        "talkback_description":""
                     }
                  ],
                  "offset":210,
                  "rounds":null,
                  "scheduled_offset":210,
                  "trackable_movements_disabled":false,
                  "type":"movement"
               },
               {
                  "display_name":"Easy Effort",
                  "id":"7aee7a40c34d4bf68b8fb20cf80b3c79",
                  "length":30,
                  "movements":[
                     {
                        "id":"159cab93b2554d1baad2e1350f2ee7f2",
                        "image_url":null,
                        "long_video_url":null,
                        "movement_videos":[

                        ],
                        "muscle_groups":[
                           {
                              "display_name":"Biceps",
                              "muscle_group":"biceps",
                              "ranking":1
                           },
                           {
                              "display_name":"Core",
                              "muscle_group":"core",
                              "ranking":2
                           },
                           {
                              "display_name":"Glutes",
                              "muscle_group":"glutes",
                              "ranking":3
                           },
                           {
                              "display_name":"Hamstrings",
                              "muscle_group":"hamstrings",
                              "ranking":3
                           },
                           {
                              "display_name":"Hips",
                              "muscle_group":"hips",
                              "ranking":2
                           },
                           {
                              "display_name":"Lats",
                              "muscle_group":"lats",
                              "ranking":2
                           },
                           {
                              "display_name":"Low Back",
                              "muscle_group":"low_back",
                              "ranking":2
                           },
                           {
                              "display_name":"Mid Back",
                              "muscle_group":"mid_back",
                              "ranking":2
                           },
                           {
                              "display_name":"Obliques",
                              "muscle_group":"obliques",
                              "ranking":2
                           },
                           {
                              "display_name":"Quads",
                              "muscle_group":"quads",
                              "ranking":3
                           },
                           {
                              "display_name":"Triceps",
                              "muscle_group":"triceps",
                              "ranking":1
                           }
                        ],
                        "name":"Easy Effort",
                        "note":null,
                        "short_video_url":null,
                        "skill_level":"beginner",
                        "slug":null,
                        "talkback_description":""
                     }
                  ],
                  "offset":240,
                  "rounds":null,
                  "scheduled_offset":240,
                  "trackable_movements_disabled":false,
                  "type":"movement"
               },
               {
                  "display_name":"Challenging Effort",
                  "id":"ee1af83a41f9402eadb57809c5c8418a",
                  "length":30,
                  "movements":[
                     {
                        "id":"74e0b4047a0a468a904e8d3a685c78b0",
                        "image_url":null,
                        "long_video_url":null,
                        "movement_videos":[

                        ],
                        "muscle_groups":[
                           {
                              "display_name":"Biceps",
                              "muscle_group":"biceps",
                              "ranking":1
                           },
                           {
                              "display_name":"Core",
                              "muscle_group":"core",
                              "ranking":2
                           },
                           {
                              "display_name":"Glutes",
                              "muscle_group":"glutes",
                              "ranking":3
                           },
                           {
                              "display_name":"Hamstrings",
                              "muscle_group":"hamstrings",
                              "ranking":3
                           },
                           {
                              "display_name":"Hips",
                              "muscle_group":"hips",
                              "ranking":2
                           },
                           {
                              "display_name":"Lats",
                              "muscle_group":"lats",
                              "ranking":2
                           },
                           {
                              "display_name":"Low Back",
                              "muscle_group":"low_back",
                              "ranking":2
                           },
                           {
                              "display_name":"Mid Back",
                              "muscle_group":"mid_back",
                              "ranking":2
                           },
                           {
                              "display_name":"Obliques",
                              "muscle_group":"obliques",
                              "ranking":2
                           },
                           {
                              "display_name":"Quads",
                              "muscle_group":"quads",
                              "ranking":3
                           },
                           {
                              "display_name":"Triceps",
                              "muscle_group":"triceps",
                              "ranking":1
                           }
                        ],
                        "name":"Challenging Effort",
                        "note":null,
                        "short_video_url":null,
                        "skill_level":"advanced",
                        "slug":null,
                        "talkback_description":""
                     }
                  ],
                  "offset":270,
                  "rounds":null,
                  "scheduled_offset":270,
                  "trackable_movements_disabled":false,
                  "type":"movement"
               }
            ]
         }
      ]
   },
   "target_class_metrics":{

   },
   "target_metrics_data":{
      "pace_intensities":[
         {
            "display_name":"Easy",
            "pace_levels":[
               {
                  "display_name":"Level 1",
                  "fast_pace":4,
                  "slow_pace":4.3,
                  "slug":"level_1"
               },
               {
                  "display_name":"Level 4",
                  "fast_pace":2.5,
                  "slow_pace":3.2,
                  "slug":"level_4"
               },
               {
                  "display_name":"Level 6",
                  "fast_pace":2,
                  "slow_pace":2.3,
                  "slug":"level_6"
               },
               {
                  "display_name":"Level 2",
                  "fast_pace":3.2,
                  "slow_pace":3.5,
                  "slug":"level_2"
               },
               {
                  "display_name":"Level 5",
                  "fast_pace":2.1,
                  "slow_pace":2.4,
                  "slug":"level_5"
               },
               {
                  "display_name":"Level 3",
                  "fast_pace":3,
                  "slow_pace":3.3,
                  "slug":"level_3"
               }
            ],
            "value":0
         },
         {
            "display_name":"Moderate",
            "pace_levels":[
               {
                  "display_name":"Level 1",
                  "fast_pace":3.4,
                  "slow_pace":4,
                  "slug":"level_1"
               },
               {
                  "display_name":"Level 4",
                  "fast_pace":2.3,
                  "slow_pace":2.5,
                  "slug":"level_4"
               },
               {
                  "display_name":"Level 6",
                  "fast_pace":1.5,
                  "slow_pace":2,
                  "slug":"level_6"
               },
               {
                  "display_name":"Level 2",
                  "fast_pace":3,
                  "slow_pace":3.2,
                  "slug":"level_2"
               },
               {
                  "display_name":"Level 5",
                  "fast_pace":2,
                  "slow_pace":2.1,
                  "slug":"level_5"
               },
               {
                  "display_name":"Level 3",
                  "fast_pace":2.4,
                  "slow_pace":3,
                  "slug":"level_3"
               }
            ],
            "value":1
         },
         {
            "display_name":"Challenging",
            "pace_levels":[
               {
                  "display_name":"Level 1",
                  "fast_pace":3.2,
                  "slow_pace":3.4,
                  "slug":"level_1"
               },
               {
                  "display_name":"Level 4",
                  "fast_pace":2.1,
                  "slow_pace":2.3,
                  "slug":"level_4"
               },
               {
                  "display_name":"Level 6",
                  "fast_pace":1.4,
                  "slow_pace":1.5,
                  "slug":"level_6"
               },
               {
                  "display_name":"Level 2",
                  "fast_pace":2.4,
                  "slow_pace":3,
                  "slug":"level_2"
               },
               {
                  "display_name":"Level 5",
                  "fast_pace":1.5,
                  "slow_pace":2,
                  "slug":"level_5"
               },
               {
                  "display_name":"Level 3",
                  "fast_pace":2.2,
                  "slow_pace":2.4,
                  "slug":"level_3"
               }
            ],
            "value":2
         },
         {
            "display_name":"Max",
            "pace_levels":[
               {
                  "display_name":"Level 1",
                  "fast_pace":3,
                  "slow_pace":3.2,
                  "slug":"level_1"
               },
               {
                  "display_name":"Level 4",
                  "fast_pace":1.5,
                  "slow_pace":2.1,
                  "slug":"level_4"
               },
               {
                  "display_name":"Level 6",
                  "fast_pace":1.3,
                  "slow_pace":1.4,
                  "slug":"level_6"
               },
               {
                  "display_name":"Level 2",
                  "fast_pace":2.2,
                  "slow_pace":2.4,
                  "slug":"level_2"
               },
               {
                  "display_name":"Level 5",
                  "fast_pace":1.4,
                  "slow_pace":1.5,
                  "slug":"level_5"
               },
               {
                  "display_name":"Level 3",
                  "fast_pace":2,
                  "slow_pace":2.2,
                  "slug":"level_3"
               }
            ],
            "value":3
         }
      ],
      "target_metrics":[
         {
            "metrics":[
               {
                  "lower":20,
                  "name":"stroke_rate",
                  "upper":24
               },
               {
                  "lower":0,
                  "name":"pace_intensity",
                  "upper":0
               }
            ],
            "offsets":{
               "end":64,
               "start":60
            },
            "segment_type":"caesar"
         },
         {
            "metrics":[
               {
                  "lower":20,
                  "name":"stroke_rate",
                  "upper":24
               },
               {
                  "lower":0,
                  "name":"pace_intensity",
                  "upper":0
               }
            ],
            "offsets":{
               "end":271,
               "start":65
            },
            "segment_type":"caesar"
         },
         {
            "metrics":[
               {
                  "lower":24,
                  "name":"stroke_rate",
                  "upper":26
               },
               {
                  "lower":2,
                  "name":"pace_intensity",
                  "upper":2
               }
            ],
            "offsets":{
               "end":299,
               "start":272
            },
            "segment_type":"caesar"
         },
         {
            "metrics":[
               {
                  "lower":20,
                  "name":"stroke_rate",
                  "upper":24
               },
               {
                  "lower":0,
                  "name":"pace_intensity",
                  "upper":0
               }
            ],
            "offsets":{
               "end":330,
               "start":300
            },
            "segment_type":"caesar"
         },
         {
            "metrics":[
               {
                  "lower":24,
                  "name":"stroke_rate",
                  "upper":26
               },
               {
                  "lower":2,
                  "name":"pace_intensity",
                  "upper":2
               }
            ],
            "offsets":{
               "end":360,
               "start":331
            },
            "segment_type":"caesar"
         }
      ],
      "total_expected_output":{
         "expected_lower_output":10,
         "expected_upper_output":15
      }
   }
}

performance on finish


{
   "average_summaries":[

   ],
   "duration":300,
   "effort_zones":null,
   "has_apple_watch_metrics":false,
   "is_class_plan_shown":true,
   "is_location_data_accurate":null,
   "location_data":[

   ],
   "metrics":[

   ],
   "muscle_group_score":[

   ],
   "seconds_since_pedaling_start":[

   ],
   "segment_list":[
      {
         "icon_name":"warmup",
         "icon_slug":"warmup",
         "icon_url":"https://s3.amazonaws.com/static-cdn.pelotoncycle.com/segment-icons/warmup.png",
         "id":"1e1a2c24d32f42588f95b3a876df4a38",
         "intensity_in_mets":1,
         "is_drill":false,
         "length":300,
         "metrics_type":"caesar",
         "name":"Warm Up",
         "start_time_offset":0
      }
   ],
   "splits_data":{

   },
   "splits_metrics":{

   },
   "summaries":[

   ],
   "target_metrics_performance_data":{
      "target_metrics":[
         {
            "metrics":[
               {
                  "lower":20,
                  "name":"stroke_rate",
                  "upper":24
               },
               {
                  "lower":0,
                  "name":"pace_intensity",
                  "upper":0
               }
            ],
            "offsets":{
               "end":64,
               "start":60
            },
            "segment_type":"caesar"
         },
         {
            "metrics":[
               {
                  "lower":20,
                  "name":"stroke_rate",
                  "upper":24
               },
               {
                  "lower":0,
                  "name":"pace_intensity",
                  "upper":0
               }
            ],
            "offsets":{
               "end":271,
               "start":65
            },
            "segment_type":"caesar"
         },
         {
            "metrics":[
               {
                  "lower":24,
                  "name":"stroke_rate",
                  "upper":26
               },
               {
                  "lower":2,
                  "name":"pace_intensity",
                  "upper":2
               }
            ],
            "offsets":{
               "end":299,
               "start":272
            },
            "segment_type":"caesar"
         },
         {
            "metrics":[
               {
                  "lower":20,
                  "name":"stroke_rate",
                  "upper":24
               },
               {
                  "lower":0,
                  "name":"pace_intensity",
                  "upper":0
               }
            ],
            "offsets":{
               "end":330,
               "start":300
            },
            "segment_type":"caesar"
         },
         {
            "metrics":[
               {
                  "lower":24,
                  "name":"stroke_rate",
                  "upper":26
               },
               {
                  "lower":2,
                  "name":"pace_intensity",
                  "upper":2
               }
            ],
            "offsets":{
               "end":360,
               "start":331
            },
            "segment_type":"caesar"
         }
      ],
      "time_in_metric":[
         {
            "name":"stroke_rate",
            "value":0
         },
         {
            "name":"pace_intensity",
            "value":0
         }
      ]
   }
}
PugMamma commented 1 year ago
{
   "averages":{
      "average_avg_pace":28.96,
      "average_avg_power":65,
      "average_avg_stroke_rate":17,
      "average_calories":29,
      "average_distance":719.56,
      "average_effort_score":null,
      "average_stroke_count":84,
      "average_total_work":18,
      "total_heart_rate_zone_durations":null
   },
   "class_types":[
      {
         "id":"db88920cc225430f9abc9d807197efb0",
         "name":"Warm Up / Cool Down (Rowing)"
      }
   ],
   "default_album_images":{
      "default_class_detail_image_url":"https://s3.amazonaws.com/peloton-ride-images/DEFAULT_ALBUM_ART_CLASS_DETAIL.svg",
      "default_in_class_image_url":"https://s3.amazonaws.com/peloton-ride-images/DEFAULT_ALBUM_ART_IN_CLASS.svg"
   },
   "disabled_leaderboard_filters":{
      "age_and_gender":false,
      "following":false,
      "just_me":false
   },
   "events":{
      "data":[

      ]
   },
   "excluded_platforms":[

   ],
   "instructor_cues":[

   ],
   "is_ftp_test":false,
   "lanebreak_info":null,
   "playlist":{
      "id":"6c88c616559f4bd1916b7022990a00b4",
      "is_in_class_music_shown":true,
      "is_playlist_shown":true,
      "is_top_artists_shown":true,
      "ride_id":"223a1974c664465382c230d816ee7153",
      "songs":[
         {
            "album":{
               "id":"311b1ac3247e4d04ba7956a80f383142",
               "image_url":"https://images.music.onepeloton.com/rr/albumimages/catalog/e6691a61-68f0-428c-873e-bf667dcd863b/product/73e2f127-04d6-437e-a564-5be1b6c8cb6f/big_A10301A0002940908D_T-109336180422_Image.jpg",
               "name":"For Lack of a Better Name (The Extended Mixes)"
            },
            "artists":[
               {
                  "artist_id":"f04c7835a5b94afdbe965ecc3bdf0bc6",
                  "artist_name":"deadmau5"
               },
               {
                  "artist_id":"8681dfe94f53423090f2d5312af3618e",
                  "artist_name":"deadmau5"
               },
               {
                  "artist_id":"8a14fb40538149e09b08af3d7bb87837",
                  "artist_name":"Rob Swire"
               }
            ],
            "cue_time_offset":60,
            "explicit_rating":0,
            "id":"8de9fbdeff844b959d80d92834c65386",
            "liked":false,
            "start_time_offset":60,
            "title":"Ghosts 'n' Stuff (feat. Rob Swire)"
         },
         {
            "album":{
               "id":"043b786ffe054d22bb826341bbdea1b7",
               "image_url":"https://images.music.onepeloton.com/rr/albumimages/catalog/eb20e7d5-68c6-48eb-8aed-9072d54246db/product/d41af0e2-6ee3-4eed-93f2-2245941cdec5/big_191018568016.jpg",
               "name":"The Creeps"
            },
            "artists":[
               {
                  "artist_id":"ef7b8e5611254b1faaebede32f7160fa",
                  "artist_name":"Camille Jones"
               },
               {
                  "artist_id":"3b999b79b49a4ca4aa0553d3f7cc25f6",
                  "artist_name":"Fedde Le Grand"
               }
            ],
            "cue_time_offset":389,
            "explicit_rating":0,
            "id":"3ab25b2f0620473c89749d72ad87816b",
            "liked":false,
            "start_time_offset":385,
            "title":"The Creeps (Radio Edit)"
         }
      ],
      "stream_id":"556096ee81b24bf19860f5c70d45ab92",
      "stream_url":null,
      "top_albums":[
         {
            "id":"043b786ffe054d22bb826341bbdea1b7",
            "image_url":"https://images.music.onepeloton.com/rr/albumimages/catalog/eb20e7d5-68c6-48eb-8aed-9072d54246db/product/d41af0e2-6ee3-4eed-93f2-2245941cdec5/big_191018568016.jpg",
            "name":"The Creeps"
         },
         {
            "id":"311b1ac3247e4d04ba7956a80f383142",
            "image_url":"https://images.music.onepeloton.com/rr/albumimages/catalog/e6691a61-68f0-428c-873e-bf667dcd863b/product/73e2f127-04d6-437e-a564-5be1b6c8cb6f/big_A10301A0002940908D_T-109336180422_Image.jpg",
            "name":"For Lack of a Better Name (The Extended Mixes)"
         }
      ],
      "top_artists":[
         {
            "artist_id":"3b999b79b49a4ca4aa0553d3f7cc25f6",
            "artist_name":"Fedde Le Grand"
         },
         {
            "artist_id":"f04c7835a5b94afdbe965ecc3bdf0bc6",
            "artist_name":"deadmau5"
         },
         {
            "artist_id":"8681dfe94f53423090f2d5312af3618e",
            "artist_name":"deadmau5"
         },
         {
            "artist_id":"8a14fb40538149e09b08af3d7bb87837",
            "artist_name":"Rob Swire"
         }
      ]
   },
   "related_rides":{

   },
   "ride":{
      "availability":{
         "is_available":true,
         "reason":null
      },
      "captions":[
         "en-US"
      ],
      "class_type_ids":[
         "db88920cc225430f9abc9d807197efb0"
      ],
      "content_availability":"available",
      "content_availability_level":"digital_and_above",
      "content_format":"video",
      "content_provider":"peloton",
      "description":"Wake up your muscles and increase your heart rate in this warm up row designed to help you maximize your workout.",
      "difficulty_estimate":4.455,
      "difficulty_level":null,
      "difficulty_rating_avg":4.455,
      "difficulty_rating_count":855,
      "distance":null,
      "distance_display_value":null,
      "distance_unit":null,
      "duration":300,
      "dynamic_video_recorded_speed_in_mph":0,
      "equipment_ids":[

      ],
      "equipment_tags":[

      ],
      "explicit_rating":0,
      "extra_images":[

      ],
      "fitness_discipline":"caesar",
      "fitness_discipline_display_name":"Rowing",
      "flags":[

      ],
      "free_for_limited_time":false,
      "has_closed_captions":true,
      "has_free_mode":false,
      "has_pedaling_metrics":false,
      "home_peloton_id":"2112b1bb18604b23b15cf1697085d5b9",
      "id":"223a1974c664465382c230d816ee7153",
      "image_url":"https://s3.amazonaws.com/peloton-ride-images/0c8c813a4566cef16d243e52d2c7b88fa6b6b410/img_1655328332_b5e83932096042efafea48a5fa84bf80.jpg",
      "individual_instructor_ids":[

      ],
      "instructor":{
         "about_image_url":"https://s3.amazonaws.com/workout-metric-images-prod/990dc23d1f7648f281f6bc4aa5e38b75",
         "background":"Working out should feel good! My goal is to empower people to form healthy habits to carry with them for the rest of their lives. I will challenge you, then hit you with positivity. At the end of the day, I want to bring you joy!",
         "bike_instructor_list_display_image_url":null,
         "bio":"Adrian is a powerhouse instructor with an unexpected tender side. A native New Yorker with bold Bronx energy, Adrian is a competitive sprinter�but he�s not all speed and strength. Adrian's lighthearted sense of humor is what really shines through his coaching. His goal is to encourage others and bring joy through fitness. When he�s not at the gym, you can find Adrian perfecting his craft behind the camera. Adrian is a passionate photographer and finds peace in the creative process.",
         "coach_type":"peloton_coach",
         "facebook_fan_page":"",
         "featured_profile":true,
         "film_link":"",
         "first_name":"Adrian",
         "fitness_disciplines":[
            "caesar",
            "caesar_bootcamp",
            "cardio",
            "circuit",
            "running",
            "strength",
            "stretching",
            "walking"
         ],
         "id":"f962a2b1b34d424cabab73bef81bc8db",
         "image_url":"https://s3.amazonaws.com/workout-metric-images-prod/0f70685076524186921aacf1dd37e548",
         "instagram_profile":"",
         "instructor_hero_image_url":"https://s3.amazonaws.com/workout-metric-images-prod/7709c62b521945c1af35e36dda2e9782",
         "ios_instructor_list_display_image_url":"https://s3.amazonaws.com/workout-metric-images-prod/cf86c09b52034f13bb04bb4bcfe2c90b",
         "is_announced":true,
         "is_filterable":true,
         "is_instructor_group":false,
         "is_visible":true,
         "jumbotron_url":null,
         "jumbotron_url_dark":"https://s3.amazonaws.com/workout-metric-images-prod/b675c44c734f4bf5bb5479f084b83aa3",
         "jumbotron_url_ios":"https://s3.amazonaws.com/workout-metric-images-prod/6487e119a3d342d482ed5c8853a20fe0",
         "last_name":"Williams",
         "life_style_image_url":"https://s3.amazonaws.com/workout-metric-images-prod/470ba0ef2d9d4cc5b9c2b08f0defa992",
         "list_order":11,
         "music_bio":"",
         "name":"Adrian Williams",
         "ordered_q_and_as":[
            [
               "How Do You Motivate?",
               "I encourage you to embrace being uncomfortable. That�s where growth happens. I try not to take myself too seriously, though. My workouts are tough, but I like to lead with humor. I want you to leave with a smile!"
            ],
            [
               "Outside of Peloton",
               "Photography has been a growing passion of mine. Fitness requires so much energy, and photography helps me slow down and appreciate small moments. I also love to cook too, because I love to eat!"
            ],
            [
               "",
               ""
            ]
         ],
         "quote":"�Never give up because great things take time.�",
         "short_bio":"Adrian is a powerhouse instructor with an unexpected tender side. A native New Yorker with bold Bronx energy, Adrian is a competitive sprinter�but he�s not all speed and strength. His lighthearted sense of humor shines through his coaching.",
         "spotify_playlist_uri":"spotify:playlist:0NsytVrJeDQ6jEQBZcHHGu",
         "strava_profile":"",
         "twitter_profile":"",
         "user_id":"8bb5f9c485a543c681e903bf9bb01019",
         "username":"nooneissafe",
         "web_instructor_list_display_image_url":"https://s3.amazonaws.com/workout-metric-images-prod/bfbc68a8483f4550896fb1f1a2420e8b",
         "web_instructor_list_gif_image_url":null,
         "workout_share_images":[
            {
               "fitness_discipline":"bike_bootcamp",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"caesar",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"caesar_bootcamp",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"cardio",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"circuit",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"cycling",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"meditation",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"running",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"strength",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"stretching",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"walking",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            },
            {
               "fitness_discipline":"yoga",
               "image_url":"https://strava-default-images.s3-us-west-2.amazonaws.com/workout_share_image/default.png"
            }
         ]
      },
      "instructor_id":"f962a2b1b34d424cabab73bef81bc8db",
      "is_archived":true,
      "is_closed_caption_shown":true,
      "is_dynamic_video_eligible":false,
      "is_explicit":false,
      "is_favorite":false,
      "is_fixed_distance":false,
      "is_limited_ride":false,
      "is_live_in_studio_only":true,
      "join_tokens":{
         "on_demand":"eyJob21lX3BlbG90b25faWQiOiBudWxsLCAicmlkZV9pZCI6ICIyMjNhMTk3NGM2NjQ0NjUzODJjMjMwZDgxNmVlNzE1MyIsICJzdHVkaW9fcGVsb3Rvbl9pZCI6IG51bGwsICJ0eXBlIjogIm9uX2RlbWFuZCJ9"
      },
      "language":"english",
      "leaderboard_filter_type":null,
      "length":385,
      "live_stream_id":"223a1974c664465382c230d816ee7153-live",
      "live_stream_url":null,
      "location":"psny-studio-3",
      "membership_tiering_info":{
         "limited_classes_reset_date":null,
         "limited_classes_taken":null,
         "limited_classes_total":null,
         "tier_type":"all_access"
      },
      "metrics":[
         "heart_rate",
         "calories"
      ],
      "muscle_group_score":[
         {
            "bucket":1,
            "display_name":"Biceps",
            "muscle_group":"biceps",
            "percentage":4,
            "score":300
         },
         {
            "bucket":2,
            "display_name":"Core",
            "muscle_group":"core",
            "percentage":9,
            "score":600
         },
         {
            "bucket":3,
            "display_name":"Glutes",
            "muscle_group":"glutes",
            "percentage":13,
            "score":900
         },
         {
            "bucket":3,
            "display_name":"Hamstrings",
            "muscle_group":"hamstrings",
            "percentage":13,
            "score":900
         },
         {
            "bucket":2,
            "display_name":"Hips",
            "muscle_group":"hips",
            "percentage":9,
            "score":600
         },
         {
            "bucket":2,
            "display_name":"Lats",
            "muscle_group":"lats",
            "percentage":9,
            "score":600
         },
         {
            "bucket":2,
            "display_name":"Low Back",
            "muscle_group":"low_back",
            "percentage":9,
            "score":600
         },
         {
            "bucket":2,
            "display_name":"Mid Back",
            "muscle_group":"mid_back",
            "percentage":9,
            "score":600
         },
         {
            "bucket":2,
            "display_name":"Obliques",
            "muscle_group":"obliques",
            "percentage":8,
            "score":600
         },
         {
            "bucket":3,
            "display_name":"Quads",
            "muscle_group":"quads",
            "percentage":13,
            "score":900
         },
         {
            "bucket":1,
            "display_name":"Triceps",
            "muscle_group":"triceps",
            "percentage":4,
            "score":300
         }
      ],
      "origin_locale":"en-US",
      "original_air_time":1668092400,
      "overall_estimate":1,
      "overall_rating_avg":1,
      "overall_rating_count":1062,
      "pedaling_duration":300,
      "pedaling_end_offset":360,
      "pedaling_start_offset":60,
      "rating":0,
      "ride_type_id":"db88920cc225430f9abc9d807197efb0",
      "ride_type_ids":[
         "db88920cc225430f9abc9d807197efb0"
      ],
      "sample_preview_stream_url":null,
      "sample_vod_stream_url":null,
      "scheduled_start_time":1668092400,
      "series_id":"a6f5cc2645b7404eaa5485924168d5fb",
      "sold_out":false,
      "studio_peloton_id":"e4b60d0ab34f4105a2f800a5f4a3c46f",
      "thumbnail_location":null,
      "thumbnail_title":null,
      "title":"5 min Warm Up Row",
      "total_following_workouts":9,
      "total_in_progress_workouts":0,
      "total_ratings":0,
      "total_user_workouts":1,
      "total_workouts":5000,
      "vod_stream_id":"223a1974c664465382c230d816ee7153-vod",
      "vod_stream_url":"https://amd-vod.akamaized.net/classes/caesar/11-2022/223a1974c664465382c230d816ee7153/3/master.m3u8"
   },
   "sampled_top_tags":null,
   "segments":{
      "movements_by_weight_category":{

      },
      "segment_body_focus_distribution":{

      },
      "segment_category_distribution":{
         "Caesar Warm Up":"1.0"
      },
      "segment_list":[
         {
            "icon_name":"warmup",
            "icon_slug":"warmup",
            "icon_url":"https://s3.amazonaws.com/static-cdn.pelotoncycle.com/segment-icons/warmup.png",
            "id":"1e1a2c24d32f42588f95b3a876df4a38",
            "intensity_in_mets":1,
            "is_drill":false,
            "is_transition":false,
            "length":300,
            "metrics_type":"caesar",
            "name":"Warm Up",
            "start_time_offset":0,
            "subsegments_v2":[
               {
                  "display_name":"Easy Effort",
                  "id":"b157b87a3e0248e4a5343f8595ef425e",
                  "length":210,
                  "movements":[
                     {
                        "id":"159cab93b2554d1baad2e1350f2ee7f2",
                        "image_url":null,
                        "long_video_url":null,
                        "movement_videos":[

                        ],
                        "muscle_groups":[
                           {
                              "display_name":"Biceps",
                              "muscle_group":"biceps",
                              "ranking":1
                           },
                           {
                              "display_name":"Core",
                              "muscle_group":"core",
                              "ranking":2
                           },
                           {
                              "display_name":"Glutes",
                              "muscle_group":"glutes",
                              "ranking":3
                           },
                           {
                              "display_name":"Hamstrings",
                              "muscle_group":"hamstrings",
                              "ranking":3
                           },
                           {
                              "display_name":"Hips",
                              "muscle_group":"hips",
                              "ranking":2
                           },
                           {
                              "display_name":"Lats",
                              "muscle_group":"lats",
                              "ranking":2
                           },
                           {
                              "display_name":"Low Back",
                              "muscle_group":"low_back",
                              "ranking":2
                           },
                           {
                              "display_name":"Mid Back",
                              "muscle_group":"mid_back",
                              "ranking":2
                           },
                           {
                              "display_name":"Obliques",
                              "muscle_group":"obliques",
                              "ranking":2
                           },
                           {
                              "display_name":"Quads",
                              "muscle_group":"quads",
                              "ranking":3
                           },
                           {
                              "display_name":"Triceps",
                              "muscle_group":"triceps",
                              "ranking":1
                           }
                        ],
                        "name":"Easy Effort",
                        "note":null,
                        "short_video_url":null,
                        "skill_level":"beginner",
                        "slug":null,
                        "talkback_description":""
                     }
                  ],
                  "offset":0,
                  "rounds":null,
                  "scheduled_offset":0,
                  "trackable_movements_disabled":false,
                  "type":"movement"
               },
               {
                  "display_name":"Challenging Effort",
                  "id":"ad87bc99c5bc4600b97a4da52f0e85a9",
                  "length":30,
                  "movements":[
                     {
                        "id":"74e0b4047a0a468a904e8d3a685c78b0",
                        "image_url":null,
                        "long_video_url":null,
                        "movement_videos":[

                        ],
                        "muscle_groups":[
                           {
                              "display_name":"Biceps",
                              "muscle_group":"biceps",
                              "ranking":1
                           },
                           {
                              "display_name":"Core",
                              "muscle_group":"core",
                              "ranking":2
                           },
                           {
                              "display_name":"Glutes",
                              "muscle_group":"glutes",
                              "ranking":3
                           },
                           {
                              "display_name":"Hamstrings",
                              "muscle_group":"hamstrings",
                              "ranking":3
                           },
                           {
                              "display_name":"Hips",
                              "muscle_group":"hips",
                              "ranking":2
                           },
                           {
                              "display_name":"Lats",
                              "muscle_group":"lats",
                              "ranking":2
                           },
                           {
                              "display_name":"Low Back",
                              "muscle_group":"low_back",
                              "ranking":2
                           },
                           {
                              "display_name":"Mid Back",
                              "muscle_group":"mid_back",
                              "ranking":2
                           },
                           {
                              "display_name":"Obliques",
                              "muscle_group":"obliques",
                              "ranking":2
                           },
                           {
                              "display_name":"Quads",
                              "muscle_group":"quads",
                              "ranking":3
                           },
                           {
                              "display_name":"Triceps",
                              "muscle_group":"triceps",
                              "ranking":1
                           }
                        ],
                        "name":"Challenging Effort",
                        "note":null,
                        "short_video_url":null,
                        "skill_level":"advanced",
                        "slug":null,
                        "talkback_description":""
                     }
                  ],
                  "offset":210,
                  "rounds":null,
                  "scheduled_offset":210,
                  "trackable_movements_disabled":false,
                  "type":"movement"
               },
               {
                  "display_name":"Easy Effort",
                  "id":"7aee7a40c34d4bf68b8fb20cf80b3c79",
                  "length":30,
                  "movements":[
                     {
                        "id":"159cab93b2554d1baad2e1350f2ee7f2",
                        "image_url":null,
                        "long_video_url":null,
                        "movement_videos":[

                        ],
                        "muscle_groups":[
                           {
                              "display_name":"Biceps",
                              "muscle_group":"biceps",
                              "ranking":1
                           },
                           {
                              "display_name":"Core",
                              "muscle_group":"core",
                              "ranking":2
                           },
                           {
                              "display_name":"Glutes",
                              "muscle_group":"glutes",
                              "ranking":3
                           },
                           {
                              "display_name":"Hamstrings",
                              "muscle_group":"hamstrings",
                              "ranking":3
                           },
                           {
                              "display_name":"Hips",
                              "muscle_group":"hips",
                              "ranking":2
                           },
                           {
                              "display_name":"Lats",
                              "muscle_group":"lats",
                              "ranking":2
                           },
                           {
                              "display_name":"Low Back",
                              "muscle_group":"low_back",
                              "ranking":2
                           },
                           {
                              "display_name":"Mid Back",
                              "muscle_group":"mid_back",
                              "ranking":2
                           },
                           {
                              "display_name":"Obliques",
                              "muscle_group":"obliques",
                              "ranking":2
                           },
                           {
                              "display_name":"Quads",
                              "muscle_group":"quads",
                              "ranking":3
                           },
                           {
                              "display_name":"Triceps",
                              "muscle_group":"triceps",
                              "ranking":1
                           }
                        ],
                        "name":"Easy Effort",
                        "note":null,
                        "short_video_url":null,
                        "skill_level":"beginner",
                        "slug":null,
                        "talkback_description":""
                     }
                  ],
                  "offset":240,
                  "rounds":null,
                  "scheduled_offset":240,
                  "trackable_movements_disabled":false,
                  "type":"movement"
               },
               {
                  "display_name":"Challenging Effort",
                  "id":"ee1af83a41f9402eadb57809c5c8418a",
                  "length":30,
                  "movements":[
                     {
                        "id":"74e0b4047a0a468a904e8d3a685c78b0",
                        "image_url":null,
                        "long_video_url":null,
                        "movement_videos":[

                        ],
                        "muscle_groups":[
                           {
                              "display_name":"Biceps",
                              "muscle_group":"biceps",
                              "ranking":1
                           },
                           {
                              "display_name":"Core",
                              "muscle_group":"core",
                              "ranking":2
                           },
                           {
                              "display_name":"Glutes",
                              "muscle_group":"glutes",
                              "ranking":3
                           },
                           {
                              "display_name":"Hamstrings",
                              "muscle_group":"hamstrings",
                              "ranking":3
                           },
                           {
                              "display_name":"Hips",
                              "muscle_group":"hips",
                              "ranking":2
                           },
                           {
                              "display_name":"Lats",
                              "muscle_group":"lats",
                              "ranking":2
                           },
                           {
                              "display_name":"Low Back",
                              "muscle_group":"low_back",
                              "ranking":2
                           },
                           {
                              "display_name":"Mid Back",
                              "muscle_group":"mid_back",
                              "ranking":2
                           },
                           {
                              "display_name":"Obliques",
                              "muscle_group":"obliques",
                              "ranking":2
                           },
                           {
                              "display_name":"Quads",
                              "muscle_group":"quads",
                              "ranking":3
                           },
                           {
                              "display_name":"Triceps",
                              "muscle_group":"triceps",
                              "ranking":1
                           }
                        ],
                        "name":"Challenging Effort",
                        "note":null,
                        "short_video_url":null,
                        "skill_level":"advanced",
                        "slug":null,
                        "talkback_description":""
                     }
                  ],
                  "offset":270,
                  "rounds":null,
                  "scheduled_offset":270,
                  "trackable_movements_disabled":false,
                  "type":"movement"
               }
            ]
         }
      ]
   },
   "target_class_metrics":{

   },
   "target_metrics_data":{
      "pace_intensities":[
         {
            "display_name":"Easy",
            "pace_levels":[
               {
                  "display_name":"Level 1",
                  "fast_pace":4,
                  "slow_pace":4.3,
                  "slug":"level_1"
               },
               {
                  "display_name":"Level 4",
                  "fast_pace":2.5,
                  "slow_pace":3.2,
                  "slug":"level_4"
               },
               {
                  "display_name":"Level 6",
                  "fast_pace":2,
                  "slow_pace":2.3,
                  "slug":"level_6"
               },
               {
                  "display_name":"Level 2",
                  "fast_pace":3.2,
                  "slow_pace":3.5,
                  "slug":"level_2"
               },
               {
                  "display_name":"Level 5",
                  "fast_pace":2.1,
                  "slow_pace":2.4,
                  "slug":"level_5"
               },
               {
                  "display_name":"Level 3",
                  "fast_pace":3,
                  "slow_pace":3.3,
                  "slug":"level_3"
               }
            ],
            "value":0
         },
         {
            "display_name":"Moderate",
            "pace_levels":[
               {
                  "display_name":"Level 1",
                  "fast_pace":3.4,
                  "slow_pace":4,
                  "slug":"level_1"
               },
               {
                  "display_name":"Level 4",
                  "fast_pace":2.3,
                  "slow_pace":2.5,
                  "slug":"level_4"
               },
               {
                  "display_name":"Level 6",
                  "fast_pace":1.5,
                  "slow_pace":2,
                  "slug":"level_6"
               },
               {
                  "display_name":"Level 2",
                  "fast_pace":3,
                  "slow_pace":3.2,
                  "slug":"level_2"
               },
               {
                  "display_name":"Level 5",
                  "fast_pace":2,
                  "slow_pace":2.1,
                  "slug":"level_5"
               },
               {
                  "display_name":"Level 3",
                  "fast_pace":2.4,
                  "slow_pace":3,
                  "slug":"level_3"
               }
            ],
            "value":1
         },
         {
            "display_name":"Challenging",
            "pace_levels":[
               {
                  "display_name":"Level 1",
                  "fast_pace":3.2,
                  "slow_pace":3.4,
                  "slug":"level_1"
               },
               {
                  "display_name":"Level 4",
                  "fast_pace":2.1,
                  "slow_pace":2.3,
                  "slug":"level_4"
               },
               {
                  "display_name":"Level 6",
                  "fast_pace":1.4,
                  "slow_pace":1.5,
                  "slug":"level_6"
               },
               {
                  "display_name":"Level 2",
                  "fast_pace":2.4,
                  "slow_pace":3,
                  "slug":"level_2"
               },
               {
                  "display_name":"Level 5",
                  "fast_pace":1.5,
                  "slow_pace":2,
                  "slug":"level_5"
               },
               {
                  "display_name":"Level 3",
                  "fast_pace":2.2,
                  "slow_pace":2.4,
                  "slug":"level_3"
               }
            ],
            "value":2
         },
         {
            "display_name":"Max",
            "pace_levels":[
               {
                  "display_name":"Level 1",
                  "fast_pace":3,
                  "slow_pace":3.2,
                  "slug":"level_1"
               },
               {
                  "display_name":"Level 4",
                  "fast_pace":1.5,
                  "slow_pace":2.1,
                  "slug":"level_4"
               },
               {
                  "display_name":"Level 6",
                  "fast_pace":1.3,
                  "slow_pace":1.4,
                  "slug":"level_6"
               },
               {
                  "display_name":"Level 2",
                  "fast_pace":2.2,
                  "slow_pace":2.4,
                  "slug":"level_2"
               },
               {
                  "display_name":"Level 5",
                  "fast_pace":1.4,
                  "slow_pace":1.5,
                  "slug":"level_5"
               },
               {
                  "display_name":"Level 3",
                  "fast_pace":2,
                  "slow_pace":2.2,
                  "slug":"level_3"
               }
            ],
            "value":3
         }
      ],
      "target_metrics":[
         {
            "metrics":[
               {
                  "lower":20,
                  "name":"stroke_rate",
                  "upper":24
               },
               {
                  "lower":0,
                  "name":"pace_intensity",
                  "upper":0
               }
            ],
            "offsets":{
               "end":64,
               "start":60
            },
            "segment_type":"caesar"
         },
         {
            "metrics":[
               {
                  "lower":20,
                  "name":"stroke_rate",
                  "upper":24
               },
               {
                  "lower":0,
                  "name":"pace_intensity",
                  "upper":0
               }
            ],
            "offsets":{
               "end":271,
               "start":65
            },
            "segment_type":"caesar"
         },
         {
            "metrics":[
               {
                  "lower":24,
                  "name":"stroke_rate",
                  "upper":26
               },
               {
                  "lower":2,
                  "name":"pace_intensity",
                  "upper":2
               }
            ],
            "offsets":{
               "end":299,
               "start":272
            },
            "segment_type":"caesar"
         },
         {
            "metrics":[
               {
                  "lower":20,
                  "name":"stroke_rate",
                  "upper":24
               },
               {
                  "lower":0,
                  "name":"pace_intensity",
                  "upper":0
               }
            ],
            "offsets":{
               "end":330,
               "start":300
            },
            "segment_type":"caesar"
         },
         {
            "metrics":[
               {
                  "lower":24,
                  "name":"stroke_rate",
                  "upper":26
               },
               {
                  "lower":2,
                  "name":"pace_intensity",
                  "upper":2
               }
            ],
            "offsets":{
               "end":360,
               "start":331
            },
            "segment_type":"caesar"
         }
      ],
      "total_expected_output":{
         "expected_lower_output":10,
         "expected_upper_output":15
      }
   }
}

performance on finish


{
   "average_summaries":[

   ],
   "duration":300,
   "effort_zones":null,
   "has_apple_watch_metrics":false,
   "is_class_plan_shown":true,
   "is_location_data_accurate":null,
   "location_data":[

   ],
   "metrics":[

   ],
   "muscle_group_score":[

   ],
   "seconds_since_pedaling_start":[

   ],
   "segment_list":[
      {
         "icon_name":"warmup",
         "icon_slug":"warmup",
         "icon_url":"https://s3.amazonaws.com/static-cdn.pelotoncycle.com/segment-icons/warmup.png",
         "id":"1e1a2c24d32f42588f95b3a876df4a38",
         "intensity_in_mets":1,
         "is_drill":false,
         "length":300,
         "metrics_type":"caesar",
         "name":"Warm Up",
         "start_time_offset":0
      }
   ],
   "splits_data":{

   },
   "splits_metrics":{

   },
   "summaries":[

   ],
   "target_metrics_performance_data":{
      "target_metrics":[
         {
            "metrics":[
               {
                  "lower":20,
                  "name":"stroke_rate",
                  "upper":24
               },
               {
                  "lower":0,
                  "name":"pace_intensity",
                  "upper":0
               }
            ],
            "offsets":{
               "end":64,
               "start":60
            },
            "segment_type":"caesar"
         },
         {
            "metrics":[
               {
                  "lower":20,
                  "name":"stroke_rate",
                  "upper":24
               },
               {
                  "lower":0,
                  "name":"pace_intensity",
                  "upper":0
               }
            ],
            "offsets":{
               "end":271,
               "start":65
            },
            "segment_type":"caesar"
         },
         {
            "metrics":[
               {
                  "lower":24,
                  "name":"stroke_rate",
                  "upper":26
               },
               {
                  "lower":2,
                  "name":"pace_intensity",
                  "upper":2
               }
            ],
            "offsets":{
               "end":299,
               "start":272
            },
            "segment_type":"caesar"
         },
         {
            "metrics":[
               {
                  "lower":20,
                  "name":"stroke_rate",
                  "upper":24
               },
               {
                  "lower":0,
                  "name":"pace_intensity",
                  "upper":0
               }
            ],
            "offsets":{
               "end":330,
               "start":300
            },
            "segment_type":"caesar"
         },
         {
            "metrics":[
               {
                  "lower":24,
                  "name":"stroke_rate",
                  "upper":26
               },
               {
                  "lower":2,
                  "name":"pace_intensity",
                  "upper":2
               }
            ],
            "offsets":{
               "end":360,
               "start":331
            },
            "segment_type":"caesar"
         }
      ],
      "time_in_metric":[
         {
            "name":"stroke_rate",
            "value":0
         },
         {
            "name":"pace_intensity",
            "value":0
         }
      ]
   }
}

A new debug row file (know that it's the correct one vs I was using QZ so much yesterday changing settings for my row profile it was hard to keep track which one was for the actual workout). debug-Wed_May_24_07_28_33_2023.log

cagnulein commented 1 year ago

thanks @PugMamma I guess I have all the info now to proceed to the implementation. So i'm parsing the target stroke rate and also the target pace intensity. Maybe with the pace intensity I can change the resistance in the rower that can do this

PugMamma commented 1 year ago

A low side note. I've had to upload the fit files directly to Strava. I've had my Peloton account set up to send my workouts directly to Strava. Since I don't own the Peloton hardware, I just get my heart rate data as seen below. Peloton Row Strava

I've been deleting the row workout from Peloton in Strava so I can see all the information that QZ captured. QZ to Strava

I don't have this problem with my tread workouts (runs, walks, bootcamps). Only my QZ workout is sent to Strava and not those workout types from Peloton.

I can manually do the updating in Strava, but just wanted to have the problem recorded for now.

cagnulein commented 1 year ago

I don't have this problem with my tread workouts (runs, walks, bootcamps). Only my QZ workout is sent to Strava and not those workout types from Peloton.

I can manually do the updating in Strava, but just wanted to have the problem recorded for now.

maybe peloton in that case is slower to send the workout to strava. On strava, the first app that send the workout wins and blocks other apps to send the same workout.

cagnulein commented 1 year ago

@PugMamma implementation done. From the version 2.13.57 you will have target cadence for the rower class and also you will receive by email the training program for all the peloton workouts that you will do (bike, treadmill, rower...) so you can repeat them without peloton subscription if you want ;)

@Janabouc maybe you're also interested on this :)

cagnulein commented 1 year ago

also @marklogan17 is interested on

also you will receive by email the training program for all the peloton workouts that you will do (bike, treadmill, rower...) so you can repeat them without peloton subscription if you want ;)

marklogan17 commented 1 year ago

also @marklogan17 is interested on

also you will receive by email the training program for all the peloton workouts that you will do (bike, treadmill, rower...) so you can repeat them without peloton subscription if you want ;)

Nice.... :)

janabouc commented 1 year ago

This is great! Is this now in the latest beta? I'm excited to be able to see the targets in the app alongside the actual. I will add to my rowing profile tiles.

I am keeping my full peloton subscription so I won't need the training programs but for those who do it's wonderful.

cagnulein commented 1 year ago

Yes for android is already availabe, i'm building it for iOS.

Roberto Viola Software engineer and open source enthusiast http://robertoviola.cloud

Il giorno gio 25 mag 2023 alle ore 16:50 janabouc @.***> ha scritto:

This is great! Is this now in the latest beta? I'm excited to be able to see the targets in the app alongside the actual. I will add to my rowing profile tiles.

I am keeping my full peloton subscription so I won't need the training programs but for those who do it's wonderful.

— Reply to this email directly, view it on GitHub https://github.com/cagnulein/qdomyos-zwift/issues/1481#issuecomment-1563046429, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAALYWB4DBB77J2KCWS27M3XH5WTFANCNFSM6AAAAAAYMHPROM . You are receiving this because you were mentioned.Message ID: @.***>

janabouc commented 1 year ago

I installed the test flight beta 2.13 (538) but don't see these rower options yet. Is this one that will be sent by email or...?

janabouc commented 1 year ago

Sorry! Just saw your note. I'll download the latest android and use that for now.

cagnulein commented 1 year ago

@janabouc as I said i'm building it :) you will receive it in the next hour :) also there isn't any rower option, it will work automatically. just enable the target cadence tile and it should work! Let me know if it's not in case! Thanks

janabouc commented 1 year ago

I updated my android app but I'm not seeing settings, tiles or peloton options for rowing targets in 2.13.57

cagnulein commented 1 year ago

@janabouc as i said it's the target cadence the new tile for this. peloton just sends that metrics for a rower session. so enable the target cadence tile and you will see it :) of course all the already tiles for the rower are already available

janabouc commented 1 year ago

Oh! Ok. Great.❤️😁

cagnulein commented 1 year ago

@janabouc also ios beta sent!

janabouc commented 1 year ago

Got it and installed it. Which tiles show peloton rowing effort/intensity target and actual? Is it Resistance?

janabouc commented 1 year ago

Does Target Cadence = Target stroke rate?

cagnulein commented 1 year ago

Does Target Cadence = Target stroke rate?

exactly!

cagnulein commented 1 year ago

@PugMamma did you test it? does it work the target cadence tile?

PugMamma commented 1 year ago

@PugMamma did you test it? does it work the target cadence tile?

Yes the Target Cadence tile worked. If the instructor called out 20-24, the tile would show the average in big numbers at 22 and underneath, would show the low to high range of 20 & 24. Do you want us to send in any more debug files? I plan to take a rowing bootcamp later today if interested in the debug file for that class type.

cagnulein commented 1 year ago

nope if it worked I'm ok with this :) just let me know if you have any issue. I also fixed a small bug that prevents QZ to show the target cadence line in the charts, I didn't upload the fix yet. Thanks for the test!

cagnulein commented 1 year ago

@PugMamma in the 2.13.59 i parsed the pace intensity. I also added a new setting in the peloton settings in order to set the level (as in peloton). For now, i'm translating the pace intensity in the target speed tile, if the whole process will work (I did a TON of code for this) I will also add the target pace tile easily. Let me know when you will try it!

janabouc commented 1 year ago

I will try the new version tomorrow too--should i use android or is it in ios too?

In the classes i took yesterday the timing was off quite a bit after about halfway through. I figured it was a peloton coding problem. If it does it again tomorrow I'll send you a debug.

cagnulein commented 1 year ago

I will try the new version tomorrow too--should i use android or is it in ios too?

i'm building the android one now, I will build the ios version later today (i guess your tomorrow early afternoon :) )

In the classes i took yesterday the timing was off quite a bit after about halfway through. I figured it was a peloton coding problem. If it does it again tomorrow I'll send you a debug.

ok, let me know! i guess it's the same issue that you could have with bike classes. so also peloton offset tile works here

janabouc commented 1 year ago

Perfect! Thanks!

PugMamma commented 1 year ago

I enabled the Target Speed tile and Peloton Options set my rower level to 3. What was showing up in the Target speed didn't make any sense at -1800. Was I doing something wrong? Screenshot_20230529-151713 debug-Mon_May_29_14_52_17_2023.log

janabouc commented 1 year ago

I had the same results of a strange large number. But I think the difficulty target we are looking for is actually pace min/500m.

The attached chart shows to the breakdown for each user level and the corresponding pace for easy, moderate, challenging, max. Those are the pace numbers that need to be displayed as targets but first you have to identify your level by doing a test.

I saw a speed target (mph) but that wasn't useful.

image

janabouc commented 1 year ago

I did two 20-minute classes today but had a lot of trouble with QZ connecting to my PM5 and also not saving settings. I’m sure some was user error since I’m not a strong Android user. I had to finally reboot my tablet and do Reset Network settings and then go back in and redo those in order to get it to connect.

I had things set up nicely and it was working fine when I quit and reopened the app for the second class. Then when I went to test something this evening after getting PugMama’s message, it wouldn’t connect again and most of my tiles and settings were wrong. I tried redoing them, resaving the profile, reconnecting to the PM5 and Peloton. It said it was connected to both but I got nothing in the tiles and gave up.

I guess I’ll wait for the iOS version. Because of all the restarts I have too many bug logs to be able to figure out which ones might be helpful and I’m tired of fighting QZ and Android at the moment. I’m just happy I got a couple good rowing workouts in where I was able to work with the chart above for the pace target and see my actual pace and stroke rate.

ndesai510 commented 1 year ago

@cagnulein - Peloton has a page that describes what they mean by pace intensity and pace level. I haven't tried your most recent update yet, but is this what your tiles do? They have 6 levels of pace and 4 different intensities for each level.

https://support.onepeloton.com/hc/en-us/articles/9390710101012-Peloton-Row-In-Class-Metrics

PugMamma commented 1 year ago

@janabouc Under Advanced settings I set the Maual Device to the Concept2 PM5. This seems to help me connect to QZ faster. I had similar issues with my tiles/settings not saving Under my Rower Profile. Once I made all my preferred settings I saved the Profile again which that seemed to keep everything. Screenshot_20230529-180928

janabouc commented 1 year ago

@janabouc Under Advanced settings I set the Maual Device to the Concept2 PM5. This seems to help me connect to QZ faster. I had similar issues with my tiles/settings not saving Under my Rower Profile. Once I made all my preferred settings I saved the Profile again which that seemed to keep everything.

I did both of those things too, but it didn’t help. Since I’d already gotten in my workouts for the day and needed to do other things, I gave up. Next time I’ll reboot again. But if the changes didn’t save to my profile (again) I’m just going to wait for the iOS. I made a cheat sheet on paper with my level and pace targets and just followed along which worked ok.

janabouc commented 1 year ago

@cagnulein - Peloton has a page that describes what they mean by pace intensity and pace level. I haven't tried your most recent update yet, but is this what your tiles do? They have 6 levels of pace and 4 different intensities for each level.

https://support.onepeloton.com/hc/en-us/articles/9390710101012-Peloton-Row-In-Class-Metrics

Thanks for that. I posted a chart someone shared in another group in this thread but that page you shared was helpful and good to read how Peloton is using these metrics.

PugMamma commented 1 year ago

@janabouc I also noticed that for QZ to connect it needs to be on the menu page of the rower. You may have already noticed that but figured rather try and help troubleshoot.

janabouc commented 1 year ago

Hmmm. I don't think I noticed that. Thanks. But I think that happens naturally when you choose the menu Connect with QZ open and watch the pm5 show App connected.

I wonder if it scrambled something when i accidentally had qz open on my iphone and didn't notice. Wheni checked the phone and saw that I disconnected on the pm5 and quit qz on the phone and started over, thinking maybe the app it actually connected to was on the iPhone. But it still wouldn't connect.

cagnulein commented 1 year ago

I enabled the Target Speed tile and Peloton Options set my rower level to 3. What was showing up in the Target speed didn't make any sense at -1800. Was I doing something wrong?

Thanks! No it's not your fault, as I said I wrote a lot of code about this without trying anything (i don't have peloton and i don't have a rower so it's quite impossible for me to test something about this :) ). Anyway I already fixed the bugs thanks to your debug log! I will update the android build today @PugMamma Let me know when you will try this again! Thanks!

I had the same results of a strange large number. But I think the difficulty target we are looking for is actually pace min/500m.

Yes as I said i will add the target pace tile, but since I added a lot of code, i would like first to stabile the tiles that we already have (target speed) and then I will add the target pace one. The table is not needed because peloton, lucky for us, it's already providing it in the API @janabouc

@janabouc for the PM5 issue, send me a debug log and I will check it. I changed something about it for another user that has a PM5 with a different firmware so I would like to check that this didnd't break something for you.

@ndesai510 yes i'm doing the same, but for now i'm displaying this in mi/h then I will add also the target pace tile

cagnulein commented 1 year ago

2.13.61 with target pace tile is also available! Target pace tile is disabled by default, you have to enable it first Let me know!

PugMamma commented 1 year ago

I tested it this morning. The Target Pace seemed to show just the lower range to be in. Also for this class, QZ was off by a minute from the callouts on Peloton. Screenshot_20230530-072609 debug-Tue_May_30_07_19_02_2023.log

cagnulein commented 1 year ago

thanks @PugMamma one thing that i didn't tell you: peloton is providing by api the fast pace and slow pace for every intensity. since i have to choose which one show, i'm using the actual peloton difficulty setting to decide this.

since you have the average level, i'm doing a an average of the fast and the slow. you can try to stay with level 3 but putting the difficulty to the hardest one in qz so it should match the fast pace

i will check the delay in order to understand if it's a classic peloton metrics issue or a bug of qz

from my point of view, since i wrote so much code lines in these days , it's already a great success :)

PugMamma commented 1 year ago

Is there a way to show both paces eventually vs an average? For example, under the Target Pace speed, it could list the Low and High Range (similar on how the Pace tile shows AVG & MAX).

janabouc commented 1 year ago

Great work Roberto!!!

Since Target Intensity is a range of paces (eg 4:00-4:20) similar to power zones, where zone = a range of watts, could Target Intensity be handled similarly, like this:

cagnulein commented 1 year ago

Is there a way to show both paces eventually vs an average? For example, under the Target Pace speed, it could list the Low and High Range (similar on how the Pace tile shows AVG & MAX).

yeah i thought that you would have asked me this :) i would like to did this today but i already added so much code lines that I was scared to create other issues.

i will try to do tomorrow

cagnulein commented 1 year ago

Great work Roberto!!!

Since Target Intensity is a range of paces (eg 4:00-4:20) similar to power zones, where zone = a range of watts, could Target Intensity be handled similarly, like this:

  • (instead of FTP) user sets their Rowing ability level (1-5)
  • (instead of Target Zone tile) QZ has Target Intensity tile (that displays: "Easy/4:00-4:20").
  • (instead of current Zone tile) QZ has current Intensity tile (that displays "Easy") with color changes so that if you're in the target range it's green, or red if not, like zones.

thanks,

  1. yes it's already there
  2. i guess target pace is already doing this now. i just need to add the range and maybe the zone
  3. yes sure! i like it!
cagnulein commented 1 year ago

@PugMamma I checked the log about the delay and i found the issue! There is a new "free_mode" tag in the workout that you did! Let me handle this (free_mode i guess it's "do whatever you want" :D )


            {
                "metrics": [
                ],
                "offsets": {
                    "end": 183,
                    "start": 118
                },
                "segment_type": "free_mode"
            },
cagnulein commented 1 year ago

@PugMamma 2.13.63 has the fix of the 1 minute issue. I can't do anything else today, my daily job is killing me in these days I will let you know when I will do the other points

PugMamma commented 1 year ago

@cagnulein You are incredible. Thank you for the fix and just tested it out. QZ followed along with both classes wonderfully. I'm happy with everything QZ is doing now and no rush for the enhancements.