Glycol control woes

I’ve got two fermenters, a 14g and a 7g running on two separate Spark BrewPis. The 14g works beautifully and is maintaining a +/- 0.1F beer temp on glycol. The 7g, however, is running +1.5/-2F swings. Elco had suggested I wait until I upgraded to the newest software before getting too concerned, but I’ve upgraded and it just seems to be performing very strange.

A few other items to note:
Room temp is a little over 90F so I can ferment a saison.
Glycol temp is 60
F because of the beer fermenting @ 65*F in the other fermenter.
Only beer and room temperature sensors are installed.
Beer sensor is in the thermowell of the conical.

The weirdest part of this is that it hits right where I think would make sense, but then keeps going several more cycles until its quite a bit colder than ideal. I read a few of the options and “tweaked” them, which seemed to improve things, but I’m just guessing at this point. I searched for anything that could really help me understand these settings, but I’m not sure I understand. Any help from the community is greatly appreciated!

Full ferment graph:

Detail graph (it’s still hard to see the cooling on because they are for very short bursts):

{
  "kind": "Control",
  "pids": [
    {
      "kind": "Pid",
      "name": "heater1",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "fridgeset",
        "value": 33.9922
      },
      "inputSensor": {
        "kind": "TempSensorFallback",
        "onBackupSensor": true,
        "sensor": {
          "kind": "TempSensor",
          "name": "beer1",
          "sensor": {
            "kind": "OneWireTempSensor",
            "value": 32.1875,
            "connected": true,
            "address": "2809FF35070000F2",
            "calibrationOffset": 0
          }
        }
      },
      "inputError": -1.8086,
      "Kp": 10,
      "Ti": 600,
      "Td": 60,
      "p": 18.0859,
      "i": 0,
      "d": 0.0391,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 18.125,
        "period": 4,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "waitTime": 0
          },
          "target": {
            "kind": "ActuatorNop",
            "state": false
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "heater2",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "beer2set",
        "value": null
      },
      "inputSensor": {
        "kind": "TempSensor",
        "name": "beer2",
        "sensor": {
          "kind": "OneWireTempSensor",
          "value": 33.625,
          "connected": true,
          "address": "28A877350700006C",
          "calibrationOffset": 0
        }
      },
      "inputError": null,
      "Kp": 10,
      "Ti": 600,
      "Td": 60,
      "p": 0,
      "i": 0,
      "d": 0,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 0,
        "period": 4,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "waitTime": 0
          },
          "target": {
            "kind": "ActuatorNop",
            "state": false
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "cooler",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "fridgeset",
        "value": 33.9922
      },
      "inputSensor": {
        "kind": "TempSensorFallback",
        "onBackupSensor": true,
        "sensor": {
          "kind": "TempSensor",
          "name": "beer1",
          "sensor": {
            "kind": "OneWireTempSensor",
            "value": 32.1875,
            "connected": true,
            "address": "2809FF35070000F2",
            "calibrationOffset": 0
          }
        }
      },
      "inputError": -1.8086,
      "Kp": 10,
      "Ti": 1800,
      "Td": 200,
      "p": 18.0859,
      "i": 0,
      "d": 0.0391,
      "actuatorIsNegative": true,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 0,
        "period": 60,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "waitTime": 0
          },
          "target": {
            "kind": "ActuatorTimeLimited",
            "minOnTime": 5,
            "minOffTime": 120,
            "maxOnTime": 65535,
            "state": false,
            "target": {
              "kind": "ActuatorPin",
              "state": false,
              "pin": 17,
              "invert": false
            }
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "beer2fridge",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "beer1set",
        "value": 32.2227
      },
      "inputSensor": {
        "kind": "TempSensor",
        "name": "beer1",
        "sensor": {
          "kind": "OneWireTempSensor",
          "value": 32.1875,
          "connected": true,
          "address": "2809FF35070000F2",
          "calibrationOffset": 0
        }
      },
      "inputError": -0.0391,
      "Kp": 2,
      "Ti": 14400,
      "Td": 0,
      "p": 0.0781,
      "i": 1.6914,
      "d": 0,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorSetPoint",
        "targetSetPoint": {
          "kind": "SetPointSimple",
          "name": "fridgeset",
          "value": 33.9922
        },
        "targetSensor": {
          "kind": "TempSensor",
          "name": "fridge",
          "sensor": {
            "kind": "TempSensorDisconnected",
            "value": null,
            "connected": false
          }
        },
        "referenceSetPoint": {
          "kind": "SetPointSimple",
          "name": "beer1set",
          "value": 32.2227
        },
        "output": 1.7695,
        "achieved": null,
        "minimum": -10,
        "maximum": 10
      }
    }
  ]
}

For the beer-to-fridge PID, set Kp, Kd and Ti to zero. Then your fridge setpoint will be equal to the beer setpoint and you won’t have that weird setpoint oscillation.

Perfect! I take it I should do this to the 14g even though it’s working much better than the 7g?

Yes, change it on both.
Then it will be only the cooler pid settings than influence the behavior.

Works great, thank you!