Skip to content

Migrating from V1 to V2

Version 2 of P2G is a complete rewrite of Version 1 into dotnet. Version 2 has feature parity with Version 1 and additional new features. One of the key benefits of Version 2 over Version 1 is the ability to generate and upload FIT files. FIT files are able to capture more data than the TCX format used in Version 1.

Version 2 will not interfere with your Version 1 install, so if anything doesn't work for you on V2, you can always return to using V1.

Steps

1. Backup your current config

  1. Navigate to where you currently have version 1 installed
  2. Rename the folder to something like p2g_v1

2. Download v2

  1. Download and install v2, see Install

3. Migrate your config

  1. Find your original v1 config.ini file and open it
  2. In a new window, find the v2 configuration.local.json file and open it
  3. Below walks through section by section how the old config maps to the new config values.

Peloton section

[PELOTON]
Email = pelotonEmail@example.com
Password = pelotonPassword
WorkoutTypes = cycling, strength 
Property New Config Notes
Email Peloton Config.Email
Password Peloton Config.Password
WorkoutTypes Peloton Config.ExcludeWorkoutTypes In v1 this was a list of workout types to include, in v2 this changes to a list of workout types to exclude.

Garmin section

[GARMIN]
UploadEnabled = false
Email = garminEmail@example.com
Password = garminPassword
Property New Config Notes
Email Garmin Config.Email
Password Garmin Config.Password
UploadEnabled Garmin Config.Upload You will additionally need to specify FormatToUpload if you have this enabled.

PTOG Section

[PTOG]
EnablePolling = false
PollingIntervalSeconds = 600
Property New Config Notes
EnablePolling App Config.EnablePolling
PollingIntervalSeconds App Config.PollingIntervalSeconds

Output Section

[OUTPUT]
Directory = Output
WorkingDirectory = Working
ArchiveDirectory = Archive
RetainFiles = true
ArchiveFiles = true
SkipDownload = true
ArchiveByType = true
Property New Config Notes
Directory none
WorkingDirectory App Config.WorkingDirectory
ArchiveDirectory App Config.OutputDirectory
RetainFiles Format Config.SaveLocalCopy
ArchiveFiles none
SkipDownload none
ArchiveByType Format Config.[Fit,Tcx,Json] Set the formats you want to save to true and then set SaveLocalCopy: true

Logger Section

[LOGGER]
LogFile = peloton-to-garmin.log
LogLevel = INFO
Property New Config Notes
LogFile Observability Config.Serilog.WriteTo.Args.Path
LogLevel Observability Config.Serilog.MinimumLevel

For the general use case, the below config should be sufficient.

"Observability": {

    "Serilog": {
      "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
      "MinimumLevel": "Information",
      "WriteTo": [
        { "Name": "Console" },
        {
          "Name": "File",
          "Args": {
            "path": "./peloton-to-garmin.txt",
            "rollingInterval": "Day",
            "retainedFileCountLimit": 7
          }
        }
      ]
    }
  }

Debug Section

[DEBUG]
PauseOnFinish = true
Property New Config Notes
PauseOnFinish App Config.CloseWindowOnFinish