{
    "oat_control_contract": "1.0",
    "generated_at": "2026-06-19T12:32:36+00:00",
    "recipe": {
        "slug": "oat-ks-tomato-bundle",
        "name": "Tomato — master grow recipe (keystone draft)",
        "cultivar": "Tomato",
        "weeks": 15
    },
    "time_model": {
        "step_unit": "week",
        "steps": 15
    },
    "executor": "edge",
    "semantics": "Per control point, per step: hold `setpoint`; warn_low/warn_high is the deadband (advisory); alarm_low/alarm_high are trip thresholds. Steps are 0-based weeks; `stages` give the timeline. Same four-band thresholds the human SOP renders as aim/OK/act-if. measurable_via/controllable_via (when present) hint sensors/actuators.",
    "stages": [
        {
            "label": "Vegetative",
            "start_step": 0,
            "end_step": 4,
            "params": {
                "trigger": "calendar",
                "detail": null,
                "duration_days": 35
            }
        },
        {
            "label": "Fruiting",
            "start_step": 5,
            "end_step": 14,
            "params": {
                "trigger": "observation",
                "detail": "first flower set",
                "duration_days": 70
            }
        }
    ],
    "control_points": [
        {
            "key": "dli_canopy",
            "zone": "aerial",
            "engine": "light",
            "label": "Daily light (DLI)",
            "unit": "mol/m2/d",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 25,
                    "warn_low": 17,
                    "warn_high": 34.5,
                    "alarm_low": 14,
                    "alarm_high": 39
                },
                {
                    "step": 1,
                    "setpoint": 25,
                    "warn_low": 17,
                    "warn_high": 34.5,
                    "alarm_low": 14,
                    "alarm_high": 39
                },
                {
                    "step": 2,
                    "setpoint": 25,
                    "warn_low": 17,
                    "warn_high": 34.5,
                    "alarm_low": 14,
                    "alarm_high": 39
                },
                {
                    "step": 3,
                    "setpoint": 25,
                    "warn_low": 17,
                    "warn_high": 34.5,
                    "alarm_low": 14,
                    "alarm_high": 39
                },
                {
                    "step": 4,
                    "setpoint": 25,
                    "warn_low": 17,
                    "warn_high": 34.5,
                    "alarm_low": 14,
                    "alarm_high": 39
                },
                {
                    "step": 5,
                    "setpoint": 30,
                    "warn_low": 21.25,
                    "warn_high": 40.25,
                    "alarm_low": 17.5,
                    "alarm_high": 45.5
                },
                {
                    "step": 6,
                    "setpoint": 30,
                    "warn_low": 21.25,
                    "warn_high": 40.25,
                    "alarm_low": 17.5,
                    "alarm_high": 45.5
                },
                {
                    "step": 7,
                    "setpoint": 30,
                    "warn_low": 21.25,
                    "warn_high": 40.25,
                    "alarm_low": 17.5,
                    "alarm_high": 45.5
                },
                {
                    "step": 8,
                    "setpoint": 30,
                    "warn_low": 21.25,
                    "warn_high": 40.25,
                    "alarm_low": 17.5,
                    "alarm_high": 45.5
                },
                {
                    "step": 9,
                    "setpoint": 30,
                    "warn_low": 21.25,
                    "warn_high": 40.25,
                    "alarm_low": 17.5,
                    "alarm_high": 45.5
                },
                {
                    "step": 10,
                    "setpoint": 30,
                    "warn_low": 21.25,
                    "warn_high": 40.25,
                    "alarm_low": 17.5,
                    "alarm_high": 45.5
                },
                {
                    "step": 11,
                    "setpoint": 30,
                    "warn_low": 21.25,
                    "warn_high": 40.25,
                    "alarm_low": 17.5,
                    "alarm_high": 45.5
                },
                {
                    "step": 12,
                    "setpoint": 30,
                    "warn_low": 21.25,
                    "warn_high": 40.25,
                    "alarm_low": 17.5,
                    "alarm_high": 45.5
                },
                {
                    "step": 13,
                    "setpoint": 30,
                    "warn_low": 21.25,
                    "warn_high": 40.25,
                    "alarm_low": 17.5,
                    "alarm_high": 45.5
                },
                {
                    "step": 14,
                    "setpoint": 30,
                    "warn_low": 21.25,
                    "warn_high": 40.25,
                    "alarm_low": 17.5,
                    "alarm_high": 45.5
                }
            ]
        },
        {
            "key": "photoperiod_hours",
            "zone": "aerial",
            "engine": "light",
            "label": "Photoperiod",
            "unit": "h",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 16,
                    "warn_low": null,
                    "warn_high": null,
                    "alarm_low": null,
                    "alarm_high": null
                },
                {
                    "step": 1,
                    "setpoint": 16,
                    "warn_low": null,
                    "warn_high": null,
                    "alarm_low": null,
                    "alarm_high": null
                },
                {
                    "step": 2,
                    "setpoint": 16,
                    "warn_low": null,
                    "warn_high": null,
                    "alarm_low": null,
                    "alarm_high": null
                },
                {
                    "step": 3,
                    "setpoint": 16,
                    "warn_low": null,
                    "warn_high": null,
                    "alarm_low": null,
                    "alarm_high": null
                },
                {
                    "step": 4,
                    "setpoint": 16,
                    "warn_low": null,
                    "warn_high": null,
                    "alarm_low": null,
                    "alarm_high": null
                },
                {
                    "step": 5,
                    "setpoint": 14,
                    "warn_low": null,
                    "warn_high": null,
                    "alarm_low": null,
                    "alarm_high": null
                },
                {
                    "step": 6,
                    "setpoint": 14,
                    "warn_low": null,
                    "warn_high": null,
                    "alarm_low": null,
                    "alarm_high": null
                },
                {
                    "step": 7,
                    "setpoint": 14,
                    "warn_low": null,
                    "warn_high": null,
                    "alarm_low": null,
                    "alarm_high": null
                },
                {
                    "step": 8,
                    "setpoint": 14,
                    "warn_low": null,
                    "warn_high": null,
                    "alarm_low": null,
                    "alarm_high": null
                },
                {
                    "step": 9,
                    "setpoint": 14,
                    "warn_low": null,
                    "warn_high": null,
                    "alarm_low": null,
                    "alarm_high": null
                },
                {
                    "step": 10,
                    "setpoint": 14,
                    "warn_low": null,
                    "warn_high": null,
                    "alarm_low": null,
                    "alarm_high": null
                },
                {
                    "step": 11,
                    "setpoint": 14,
                    "warn_low": null,
                    "warn_high": null,
                    "alarm_low": null,
                    "alarm_high": null
                },
                {
                    "step": 12,
                    "setpoint": 14,
                    "warn_low": null,
                    "warn_high": null,
                    "alarm_low": null,
                    "alarm_high": null
                },
                {
                    "step": 13,
                    "setpoint": 14,
                    "warn_low": null,
                    "warn_high": null,
                    "alarm_low": null,
                    "alarm_high": null
                },
                {
                    "step": 14,
                    "setpoint": 14,
                    "warn_low": null,
                    "warn_high": null,
                    "alarm_low": null,
                    "alarm_high": null
                }
            ]
        },
        {
            "key": "air_temperature_day",
            "zone": "aerial",
            "engine": "environment",
            "label": "Air temp — day",
            "unit": "°C",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 23.5,
                    "warn_low": 17.85,
                    "warn_high": 29.9,
                    "alarm_low": 14.7,
                    "alarm_high": 33.8
                },
                {
                    "step": 1,
                    "setpoint": 23.5,
                    "warn_low": 17.85,
                    "warn_high": 29.9,
                    "alarm_low": 14.7,
                    "alarm_high": 33.8
                },
                {
                    "step": 2,
                    "setpoint": 23.5,
                    "warn_low": 17.85,
                    "warn_high": 29.9,
                    "alarm_low": 14.7,
                    "alarm_high": 33.8
                },
                {
                    "step": 3,
                    "setpoint": 23.5,
                    "warn_low": 17.85,
                    "warn_high": 29.9,
                    "alarm_low": 14.7,
                    "alarm_high": 33.8
                },
                {
                    "step": 4,
                    "setpoint": 23.5,
                    "warn_low": 17.85,
                    "warn_high": 29.9,
                    "alarm_low": 14.7,
                    "alarm_high": 33.8
                },
                {
                    "step": 5,
                    "setpoint": 24,
                    "warn_low": 18.7,
                    "warn_high": 29.9,
                    "alarm_low": 15.4,
                    "alarm_high": 33.8
                },
                {
                    "step": 6,
                    "setpoint": 24,
                    "warn_low": 18.7,
                    "warn_high": 29.9,
                    "alarm_low": 15.4,
                    "alarm_high": 33.8
                },
                {
                    "step": 7,
                    "setpoint": 24,
                    "warn_low": 18.7,
                    "warn_high": 29.9,
                    "alarm_low": 15.4,
                    "alarm_high": 33.8
                },
                {
                    "step": 8,
                    "setpoint": 24,
                    "warn_low": 18.7,
                    "warn_high": 29.9,
                    "alarm_low": 15.4,
                    "alarm_high": 33.8
                },
                {
                    "step": 9,
                    "setpoint": 24,
                    "warn_low": 18.7,
                    "warn_high": 29.9,
                    "alarm_low": 15.4,
                    "alarm_high": 33.8
                },
                {
                    "step": 10,
                    "setpoint": 24,
                    "warn_low": 18.7,
                    "warn_high": 29.9,
                    "alarm_low": 15.4,
                    "alarm_high": 33.8
                },
                {
                    "step": 11,
                    "setpoint": 24,
                    "warn_low": 18.7,
                    "warn_high": 29.9,
                    "alarm_low": 15.4,
                    "alarm_high": 33.8
                },
                {
                    "step": 12,
                    "setpoint": 24,
                    "warn_low": 18.7,
                    "warn_high": 29.9,
                    "alarm_low": 15.4,
                    "alarm_high": 33.8
                },
                {
                    "step": 13,
                    "setpoint": 24,
                    "warn_low": 18.7,
                    "warn_high": 29.9,
                    "alarm_low": 15.4,
                    "alarm_high": 33.8
                },
                {
                    "step": 14,
                    "setpoint": 24,
                    "warn_low": 18.7,
                    "warn_high": 29.9,
                    "alarm_low": 15.4,
                    "alarm_high": 33.8
                }
            ]
        },
        {
            "key": "air_temperature_night",
            "zone": "aerial",
            "engine": "environment",
            "label": "Air temp — night",
            "unit": "°C",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 17,
                    "warn_low": 13.6,
                    "warn_high": 20.7,
                    "alarm_low": 11.2,
                    "alarm_high": 23.4
                },
                {
                    "step": 1,
                    "setpoint": 17,
                    "warn_low": 13.6,
                    "warn_high": 20.7,
                    "alarm_low": 11.2,
                    "alarm_high": 23.4
                },
                {
                    "step": 2,
                    "setpoint": 17,
                    "warn_low": 13.6,
                    "warn_high": 20.7,
                    "alarm_low": 11.2,
                    "alarm_high": 23.4
                },
                {
                    "step": 3,
                    "setpoint": 17,
                    "warn_low": 13.6,
                    "warn_high": 20.7,
                    "alarm_low": 11.2,
                    "alarm_high": 23.4
                },
                {
                    "step": 4,
                    "setpoint": 17,
                    "warn_low": 13.6,
                    "warn_high": 20.7,
                    "alarm_low": 11.2,
                    "alarm_high": 23.4
                },
                {
                    "step": 5,
                    "setpoint": 17,
                    "warn_low": 13.6,
                    "warn_high": 20.7,
                    "alarm_low": 11.2,
                    "alarm_high": 23.4
                },
                {
                    "step": 6,
                    "setpoint": 17,
                    "warn_low": 13.6,
                    "warn_high": 20.7,
                    "alarm_low": 11.2,
                    "alarm_high": 23.4
                },
                {
                    "step": 7,
                    "setpoint": 17,
                    "warn_low": 13.6,
                    "warn_high": 20.7,
                    "alarm_low": 11.2,
                    "alarm_high": 23.4
                },
                {
                    "step": 8,
                    "setpoint": 17,
                    "warn_low": 13.6,
                    "warn_high": 20.7,
                    "alarm_low": 11.2,
                    "alarm_high": 23.4
                },
                {
                    "step": 9,
                    "setpoint": 17,
                    "warn_low": 13.6,
                    "warn_high": 20.7,
                    "alarm_low": 11.2,
                    "alarm_high": 23.4
                },
                {
                    "step": 10,
                    "setpoint": 17,
                    "warn_low": 13.6,
                    "warn_high": 20.7,
                    "alarm_low": 11.2,
                    "alarm_high": 23.4
                },
                {
                    "step": 11,
                    "setpoint": 17,
                    "warn_low": 13.6,
                    "warn_high": 20.7,
                    "alarm_low": 11.2,
                    "alarm_high": 23.4
                },
                {
                    "step": 12,
                    "setpoint": 17,
                    "warn_low": 13.6,
                    "warn_high": 20.7,
                    "alarm_low": 11.2,
                    "alarm_high": 23.4
                },
                {
                    "step": 13,
                    "setpoint": 17,
                    "warn_low": 13.6,
                    "warn_high": 20.7,
                    "alarm_low": 11.2,
                    "alarm_high": 23.4
                },
                {
                    "step": 14,
                    "setpoint": 17,
                    "warn_low": 13.6,
                    "warn_high": 20.7,
                    "alarm_low": 11.2,
                    "alarm_high": 23.4
                }
            ]
        },
        {
            "key": "relative_humidity",
            "zone": "aerial",
            "engine": "environment",
            "label": "Humidity",
            "unit": "%",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 67.5,
                    "warn_low": 51,
                    "warn_high": 86.25,
                    "alarm_low": 42,
                    "alarm_high": 97.5
                },
                {
                    "step": 1,
                    "setpoint": 67.5,
                    "warn_low": 51,
                    "warn_high": 86.25,
                    "alarm_low": 42,
                    "alarm_high": 97.5
                },
                {
                    "step": 2,
                    "setpoint": 67.5,
                    "warn_low": 51,
                    "warn_high": 86.25,
                    "alarm_low": 42,
                    "alarm_high": 97.5
                },
                {
                    "step": 3,
                    "setpoint": 67.5,
                    "warn_low": 51,
                    "warn_high": 86.25,
                    "alarm_low": 42,
                    "alarm_high": 97.5
                },
                {
                    "step": 4,
                    "setpoint": 67.5,
                    "warn_low": 51,
                    "warn_high": 86.25,
                    "alarm_low": 42,
                    "alarm_high": 97.5
                },
                {
                    "step": 5,
                    "setpoint": 65,
                    "warn_low": 51,
                    "warn_high": 80.5,
                    "alarm_low": 42,
                    "alarm_high": 91
                },
                {
                    "step": 6,
                    "setpoint": 65,
                    "warn_low": 51,
                    "warn_high": 80.5,
                    "alarm_low": 42,
                    "alarm_high": 91
                },
                {
                    "step": 7,
                    "setpoint": 65,
                    "warn_low": 51,
                    "warn_high": 80.5,
                    "alarm_low": 42,
                    "alarm_high": 91
                },
                {
                    "step": 8,
                    "setpoint": 65,
                    "warn_low": 51,
                    "warn_high": 80.5,
                    "alarm_low": 42,
                    "alarm_high": 91
                },
                {
                    "step": 9,
                    "setpoint": 65,
                    "warn_low": 51,
                    "warn_high": 80.5,
                    "alarm_low": 42,
                    "alarm_high": 91
                },
                {
                    "step": 10,
                    "setpoint": 65,
                    "warn_low": 51,
                    "warn_high": 80.5,
                    "alarm_low": 42,
                    "alarm_high": 91
                },
                {
                    "step": 11,
                    "setpoint": 65,
                    "warn_low": 51,
                    "warn_high": 80.5,
                    "alarm_low": 42,
                    "alarm_high": 91
                },
                {
                    "step": 12,
                    "setpoint": 65,
                    "warn_low": 51,
                    "warn_high": 80.5,
                    "alarm_low": 42,
                    "alarm_high": 91
                },
                {
                    "step": 13,
                    "setpoint": 65,
                    "warn_low": 51,
                    "warn_high": 80.5,
                    "alarm_low": 42,
                    "alarm_high": 91
                },
                {
                    "step": 14,
                    "setpoint": 65,
                    "warn_low": 51,
                    "warn_high": 80.5,
                    "alarm_low": 42,
                    "alarm_high": 91
                }
            ]
        },
        {
            "key": "vpd_air",
            "zone": "aerial",
            "engine": "environment",
            "label": "VPD",
            "unit": "kPa",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 0.8,
                    "warn_low": 0.51,
                    "warn_high": 1.15,
                    "alarm_low": 0.42,
                    "alarm_high": 1.3
                },
                {
                    "step": 1,
                    "setpoint": 0.8,
                    "warn_low": 0.51,
                    "warn_high": 1.15,
                    "alarm_low": 0.42,
                    "alarm_high": 1.3
                },
                {
                    "step": 2,
                    "setpoint": 0.8,
                    "warn_low": 0.51,
                    "warn_high": 1.15,
                    "alarm_low": 0.42,
                    "alarm_high": 1.3
                },
                {
                    "step": 3,
                    "setpoint": 0.8,
                    "warn_low": 0.51,
                    "warn_high": 1.15,
                    "alarm_low": 0.42,
                    "alarm_high": 1.3
                },
                {
                    "step": 4,
                    "setpoint": 0.8,
                    "warn_low": 0.51,
                    "warn_high": 1.15,
                    "alarm_low": 0.42,
                    "alarm_high": 1.3
                },
                {
                    "step": 5,
                    "setpoint": 1,
                    "warn_low": 0.68,
                    "warn_high": 1.38,
                    "alarm_low": 0.56,
                    "alarm_high": 1.56
                },
                {
                    "step": 6,
                    "setpoint": 1,
                    "warn_low": 0.68,
                    "warn_high": 1.38,
                    "alarm_low": 0.56,
                    "alarm_high": 1.56
                },
                {
                    "step": 7,
                    "setpoint": 1,
                    "warn_low": 0.68,
                    "warn_high": 1.38,
                    "alarm_low": 0.56,
                    "alarm_high": 1.56
                },
                {
                    "step": 8,
                    "setpoint": 1,
                    "warn_low": 0.68,
                    "warn_high": 1.38,
                    "alarm_low": 0.56,
                    "alarm_high": 1.56
                },
                {
                    "step": 9,
                    "setpoint": 1,
                    "warn_low": 0.68,
                    "warn_high": 1.38,
                    "alarm_low": 0.56,
                    "alarm_high": 1.56
                },
                {
                    "step": 10,
                    "setpoint": 1,
                    "warn_low": 0.68,
                    "warn_high": 1.38,
                    "alarm_low": 0.56,
                    "alarm_high": 1.56
                },
                {
                    "step": 11,
                    "setpoint": 1,
                    "warn_low": 0.68,
                    "warn_high": 1.38,
                    "alarm_low": 0.56,
                    "alarm_high": 1.56
                },
                {
                    "step": 12,
                    "setpoint": 1,
                    "warn_low": 0.68,
                    "warn_high": 1.38,
                    "alarm_low": 0.56,
                    "alarm_high": 1.56
                },
                {
                    "step": 13,
                    "setpoint": 1,
                    "warn_low": 0.68,
                    "warn_high": 1.38,
                    "alarm_low": 0.56,
                    "alarm_high": 1.56
                },
                {
                    "step": 14,
                    "setpoint": 1,
                    "warn_low": 0.68,
                    "warn_high": 1.38,
                    "alarm_low": 0.56,
                    "alarm_high": 1.56
                }
            ]
        },
        {
            "key": "co2_air",
            "zone": "aerial",
            "engine": "environment",
            "label": "CO₂",
            "unit": "ppm",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 900,
                    "warn_low": 680,
                    "warn_high": 1150,
                    "alarm_low": 560,
                    "alarm_high": 1300
                },
                {
                    "step": 1,
                    "setpoint": 900,
                    "warn_low": 680,
                    "warn_high": 1150,
                    "alarm_low": 560,
                    "alarm_high": 1300
                },
                {
                    "step": 2,
                    "setpoint": 900,
                    "warn_low": 680,
                    "warn_high": 1150,
                    "alarm_low": 560,
                    "alarm_high": 1300
                },
                {
                    "step": 3,
                    "setpoint": 900,
                    "warn_low": 680,
                    "warn_high": 1150,
                    "alarm_low": 560,
                    "alarm_high": 1300
                },
                {
                    "step": 4,
                    "setpoint": 900,
                    "warn_low": 680,
                    "warn_high": 1150,
                    "alarm_low": 560,
                    "alarm_high": 1300
                },
                {
                    "step": 5,
                    "setpoint": 900,
                    "warn_low": 680,
                    "warn_high": 1150,
                    "alarm_low": 560,
                    "alarm_high": 1300
                },
                {
                    "step": 6,
                    "setpoint": 900,
                    "warn_low": 680,
                    "warn_high": 1150,
                    "alarm_low": 560,
                    "alarm_high": 1300
                },
                {
                    "step": 7,
                    "setpoint": 900,
                    "warn_low": 680,
                    "warn_high": 1150,
                    "alarm_low": 560,
                    "alarm_high": 1300
                },
                {
                    "step": 8,
                    "setpoint": 900,
                    "warn_low": 680,
                    "warn_high": 1150,
                    "alarm_low": 560,
                    "alarm_high": 1300
                },
                {
                    "step": 9,
                    "setpoint": 900,
                    "warn_low": 680,
                    "warn_high": 1150,
                    "alarm_low": 560,
                    "alarm_high": 1300
                },
                {
                    "step": 10,
                    "setpoint": 900,
                    "warn_low": 680,
                    "warn_high": 1150,
                    "alarm_low": 560,
                    "alarm_high": 1300
                },
                {
                    "step": 11,
                    "setpoint": 900,
                    "warn_low": 680,
                    "warn_high": 1150,
                    "alarm_low": 560,
                    "alarm_high": 1300
                },
                {
                    "step": 12,
                    "setpoint": 900,
                    "warn_low": 680,
                    "warn_high": 1150,
                    "alarm_low": 560,
                    "alarm_high": 1300
                },
                {
                    "step": 13,
                    "setpoint": 900,
                    "warn_low": 680,
                    "warn_high": 1150,
                    "alarm_low": 560,
                    "alarm_high": 1300
                },
                {
                    "step": 14,
                    "setpoint": 900,
                    "warn_low": 680,
                    "warn_high": 1150,
                    "alarm_low": 560,
                    "alarm_high": 1300
                }
            ]
        },
        {
            "key": "air_circulation",
            "zone": "aerial",
            "engine": "environment",
            "label": "Air changes",
            "unit": "ACH",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 37.5,
                    "warn_low": 21.25,
                    "warn_high": 57.5,
                    "alarm_low": 17.5,
                    "alarm_high": 65
                },
                {
                    "step": 1,
                    "setpoint": 37.5,
                    "warn_low": 21.25,
                    "warn_high": 57.5,
                    "alarm_low": 17.5,
                    "alarm_high": 65
                },
                {
                    "step": 2,
                    "setpoint": 37.5,
                    "warn_low": 21.25,
                    "warn_high": 57.5,
                    "alarm_low": 17.5,
                    "alarm_high": 65
                },
                {
                    "step": 3,
                    "setpoint": 37.5,
                    "warn_low": 21.25,
                    "warn_high": 57.5,
                    "alarm_low": 17.5,
                    "alarm_high": 65
                },
                {
                    "step": 4,
                    "setpoint": 37.5,
                    "warn_low": 21.25,
                    "warn_high": 57.5,
                    "alarm_low": 17.5,
                    "alarm_high": 65
                },
                {
                    "step": 5,
                    "setpoint": 37.5,
                    "warn_low": 21.25,
                    "warn_high": 57.5,
                    "alarm_low": 17.5,
                    "alarm_high": 65
                },
                {
                    "step": 6,
                    "setpoint": 37.5,
                    "warn_low": 21.25,
                    "warn_high": 57.5,
                    "alarm_low": 17.5,
                    "alarm_high": 65
                },
                {
                    "step": 7,
                    "setpoint": 37.5,
                    "warn_low": 21.25,
                    "warn_high": 57.5,
                    "alarm_low": 17.5,
                    "alarm_high": 65
                },
                {
                    "step": 8,
                    "setpoint": 37.5,
                    "warn_low": 21.25,
                    "warn_high": 57.5,
                    "alarm_low": 17.5,
                    "alarm_high": 65
                },
                {
                    "step": 9,
                    "setpoint": 37.5,
                    "warn_low": 21.25,
                    "warn_high": 57.5,
                    "alarm_low": 17.5,
                    "alarm_high": 65
                },
                {
                    "step": 10,
                    "setpoint": 37.5,
                    "warn_low": 21.25,
                    "warn_high": 57.5,
                    "alarm_low": 17.5,
                    "alarm_high": 65
                },
                {
                    "step": 11,
                    "setpoint": 37.5,
                    "warn_low": 21.25,
                    "warn_high": 57.5,
                    "alarm_low": 17.5,
                    "alarm_high": 65
                },
                {
                    "step": 12,
                    "setpoint": 37.5,
                    "warn_low": 21.25,
                    "warn_high": 57.5,
                    "alarm_low": 17.5,
                    "alarm_high": 65
                },
                {
                    "step": 13,
                    "setpoint": 37.5,
                    "warn_low": 21.25,
                    "warn_high": 57.5,
                    "alarm_low": 17.5,
                    "alarm_high": 65
                },
                {
                    "step": 14,
                    "setpoint": 37.5,
                    "warn_low": 21.25,
                    "warn_high": 57.5,
                    "alarm_low": 17.5,
                    "alarm_high": 65
                }
            ]
        },
        {
            "key": "element_n_total",
            "zone": "root",
            "engine": "chemistry",
            "label": "Nitrogen (N)",
            "unit": "ppm",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 1,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 2,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 3,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 4,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 5,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 6,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 7,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 8,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 9,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 10,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 11,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 12,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 13,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 14,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                }
            ]
        },
        {
            "key": "element_p",
            "zone": "root",
            "engine": "chemistry",
            "label": "Phosphorus (P)",
            "unit": "ppm",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 1,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 2,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 3,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 4,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 5,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 6,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 7,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 8,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 9,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 10,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 11,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 12,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 13,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 14,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                }
            ]
        },
        {
            "key": "element_k",
            "zone": "root",
            "engine": "chemistry",
            "label": "Potassium (K)",
            "unit": "ppm",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 250,
                    "warn_low": 170,
                    "warn_high": 345,
                    "alarm_low": 140,
                    "alarm_high": 390
                },
                {
                    "step": 1,
                    "setpoint": 250,
                    "warn_low": 170,
                    "warn_high": 345,
                    "alarm_low": 140,
                    "alarm_high": 390
                },
                {
                    "step": 2,
                    "setpoint": 250,
                    "warn_low": 170,
                    "warn_high": 345,
                    "alarm_low": 140,
                    "alarm_high": 390
                },
                {
                    "step": 3,
                    "setpoint": 250,
                    "warn_low": 170,
                    "warn_high": 345,
                    "alarm_low": 140,
                    "alarm_high": 390
                },
                {
                    "step": 4,
                    "setpoint": 250,
                    "warn_low": 170,
                    "warn_high": 345,
                    "alarm_low": 140,
                    "alarm_high": 390
                },
                {
                    "step": 5,
                    "setpoint": 350,
                    "warn_low": 255,
                    "warn_high": 460,
                    "alarm_low": 210,
                    "alarm_high": 520
                },
                {
                    "step": 6,
                    "setpoint": 350,
                    "warn_low": 255,
                    "warn_high": 460,
                    "alarm_low": 210,
                    "alarm_high": 520
                },
                {
                    "step": 7,
                    "setpoint": 350,
                    "warn_low": 255,
                    "warn_high": 460,
                    "alarm_low": 210,
                    "alarm_high": 520
                },
                {
                    "step": 8,
                    "setpoint": 350,
                    "warn_low": 255,
                    "warn_high": 460,
                    "alarm_low": 210,
                    "alarm_high": 520
                },
                {
                    "step": 9,
                    "setpoint": 350,
                    "warn_low": 255,
                    "warn_high": 460,
                    "alarm_low": 210,
                    "alarm_high": 520
                },
                {
                    "step": 10,
                    "setpoint": 350,
                    "warn_low": 255,
                    "warn_high": 460,
                    "alarm_low": 210,
                    "alarm_high": 520
                },
                {
                    "step": 11,
                    "setpoint": 350,
                    "warn_low": 255,
                    "warn_high": 460,
                    "alarm_low": 210,
                    "alarm_high": 520
                },
                {
                    "step": 12,
                    "setpoint": 350,
                    "warn_low": 255,
                    "warn_high": 460,
                    "alarm_low": 210,
                    "alarm_high": 520
                },
                {
                    "step": 13,
                    "setpoint": 350,
                    "warn_low": 255,
                    "warn_high": 460,
                    "alarm_low": 210,
                    "alarm_high": 520
                },
                {
                    "step": 14,
                    "setpoint": 350,
                    "warn_low": 255,
                    "warn_high": 460,
                    "alarm_low": 210,
                    "alarm_high": 520
                }
            ]
        },
        {
            "key": "element_ca",
            "zone": "root",
            "engine": "chemistry",
            "label": "Calcium (Ca)",
            "unit": "ppm",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 1,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 2,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 3,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 4,
                    "setpoint": 175,
                    "warn_low": 127.5,
                    "warn_high": 230,
                    "alarm_low": 105,
                    "alarm_high": 260
                },
                {
                    "step": 5,
                    "setpoint": 185,
                    "warn_low": 127.5,
                    "warn_high": 253,
                    "alarm_low": 105,
                    "alarm_high": 286
                },
                {
                    "step": 6,
                    "setpoint": 185,
                    "warn_low": 127.5,
                    "warn_high": 253,
                    "alarm_low": 105,
                    "alarm_high": 286
                },
                {
                    "step": 7,
                    "setpoint": 185,
                    "warn_low": 127.5,
                    "warn_high": 253,
                    "alarm_low": 105,
                    "alarm_high": 286
                },
                {
                    "step": 8,
                    "setpoint": 185,
                    "warn_low": 127.5,
                    "warn_high": 253,
                    "alarm_low": 105,
                    "alarm_high": 286
                },
                {
                    "step": 9,
                    "setpoint": 185,
                    "warn_low": 127.5,
                    "warn_high": 253,
                    "alarm_low": 105,
                    "alarm_high": 286
                },
                {
                    "step": 10,
                    "setpoint": 185,
                    "warn_low": 127.5,
                    "warn_high": 253,
                    "alarm_low": 105,
                    "alarm_high": 286
                },
                {
                    "step": 11,
                    "setpoint": 185,
                    "warn_low": 127.5,
                    "warn_high": 253,
                    "alarm_low": 105,
                    "alarm_high": 286
                },
                {
                    "step": 12,
                    "setpoint": 185,
                    "warn_low": 127.5,
                    "warn_high": 253,
                    "alarm_low": 105,
                    "alarm_high": 286
                },
                {
                    "step": 13,
                    "setpoint": 185,
                    "warn_low": 127.5,
                    "warn_high": 253,
                    "alarm_low": 105,
                    "alarm_high": 286
                },
                {
                    "step": 14,
                    "setpoint": 185,
                    "warn_low": 127.5,
                    "warn_high": 253,
                    "alarm_low": 105,
                    "alarm_high": 286
                }
            ]
        },
        {
            "key": "element_mg",
            "zone": "root",
            "engine": "chemistry",
            "label": "Magnesium (Mg)",
            "unit": "ppm",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 1,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 2,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 3,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 4,
                    "setpoint": 50,
                    "warn_low": 34,
                    "warn_high": 69,
                    "alarm_low": 28,
                    "alarm_high": 78
                },
                {
                    "step": 5,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 6,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 7,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 8,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 9,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 10,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 11,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 12,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 13,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 14,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                }
            ]
        },
        {
            "key": "element_s",
            "zone": "root",
            "engine": "chemistry",
            "label": "Sulfur (S)",
            "unit": "ppm",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 80,
                    "warn_low": 51,
                    "warn_high": 115,
                    "alarm_low": 42,
                    "alarm_high": 130
                },
                {
                    "step": 1,
                    "setpoint": 80,
                    "warn_low": 51,
                    "warn_high": 115,
                    "alarm_low": 42,
                    "alarm_high": 130
                },
                {
                    "step": 2,
                    "setpoint": 80,
                    "warn_low": 51,
                    "warn_high": 115,
                    "alarm_low": 42,
                    "alarm_high": 130
                },
                {
                    "step": 3,
                    "setpoint": 80,
                    "warn_low": 51,
                    "warn_high": 115,
                    "alarm_low": 42,
                    "alarm_high": 130
                },
                {
                    "step": 4,
                    "setpoint": 80,
                    "warn_low": 51,
                    "warn_high": 115,
                    "alarm_low": 42,
                    "alarm_high": 130
                },
                {
                    "step": 5,
                    "setpoint": 100,
                    "warn_low": 68,
                    "warn_high": 138,
                    "alarm_low": 56,
                    "alarm_high": 156
                },
                {
                    "step": 6,
                    "setpoint": 100,
                    "warn_low": 68,
                    "warn_high": 138,
                    "alarm_low": 56,
                    "alarm_high": 156
                },
                {
                    "step": 7,
                    "setpoint": 100,
                    "warn_low": 68,
                    "warn_high": 138,
                    "alarm_low": 56,
                    "alarm_high": 156
                },
                {
                    "step": 8,
                    "setpoint": 100,
                    "warn_low": 68,
                    "warn_high": 138,
                    "alarm_low": 56,
                    "alarm_high": 156
                },
                {
                    "step": 9,
                    "setpoint": 100,
                    "warn_low": 68,
                    "warn_high": 138,
                    "alarm_low": 56,
                    "alarm_high": 156
                },
                {
                    "step": 10,
                    "setpoint": 100,
                    "warn_low": 68,
                    "warn_high": 138,
                    "alarm_low": 56,
                    "alarm_high": 156
                },
                {
                    "step": 11,
                    "setpoint": 100,
                    "warn_low": 68,
                    "warn_high": 138,
                    "alarm_low": 56,
                    "alarm_high": 156
                },
                {
                    "step": 12,
                    "setpoint": 100,
                    "warn_low": 68,
                    "warn_high": 138,
                    "alarm_low": 56,
                    "alarm_high": 156
                },
                {
                    "step": 13,
                    "setpoint": 100,
                    "warn_low": 68,
                    "warn_high": 138,
                    "alarm_low": 56,
                    "alarm_high": 156
                },
                {
                    "step": 14,
                    "setpoint": 100,
                    "warn_low": 68,
                    "warn_high": 138,
                    "alarm_low": 56,
                    "alarm_high": 156
                }
            ]
        },
        {
            "key": "root_zone_temp",
            "zone": "root",
            "engine": "substrate",
            "label": "Root-zone temp",
            "unit": "°C",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 20,
                    "warn_low": 15.3,
                    "warn_high": 25.3,
                    "alarm_low": 12.6,
                    "alarm_high": 28.6
                },
                {
                    "step": 1,
                    "setpoint": 20,
                    "warn_low": 15.3,
                    "warn_high": 25.3,
                    "alarm_low": 12.6,
                    "alarm_high": 28.6
                },
                {
                    "step": 2,
                    "setpoint": 20,
                    "warn_low": 15.3,
                    "warn_high": 25.3,
                    "alarm_low": 12.6,
                    "alarm_high": 28.6
                },
                {
                    "step": 3,
                    "setpoint": 20,
                    "warn_low": 15.3,
                    "warn_high": 25.3,
                    "alarm_low": 12.6,
                    "alarm_high": 28.6
                },
                {
                    "step": 4,
                    "setpoint": 20,
                    "warn_low": 15.3,
                    "warn_high": 25.3,
                    "alarm_low": 12.6,
                    "alarm_high": 28.6
                },
                {
                    "step": 5,
                    "setpoint": 20,
                    "warn_low": 15.3,
                    "warn_high": 25.3,
                    "alarm_low": 12.6,
                    "alarm_high": 28.6
                },
                {
                    "step": 6,
                    "setpoint": 20,
                    "warn_low": 15.3,
                    "warn_high": 25.3,
                    "alarm_low": 12.6,
                    "alarm_high": 28.6
                },
                {
                    "step": 7,
                    "setpoint": 20,
                    "warn_low": 15.3,
                    "warn_high": 25.3,
                    "alarm_low": 12.6,
                    "alarm_high": 28.6
                },
                {
                    "step": 8,
                    "setpoint": 20,
                    "warn_low": 15.3,
                    "warn_high": 25.3,
                    "alarm_low": 12.6,
                    "alarm_high": 28.6
                },
                {
                    "step": 9,
                    "setpoint": 20,
                    "warn_low": 15.3,
                    "warn_high": 25.3,
                    "alarm_low": 12.6,
                    "alarm_high": 28.6
                },
                {
                    "step": 10,
                    "setpoint": 20,
                    "warn_low": 15.3,
                    "warn_high": 25.3,
                    "alarm_low": 12.6,
                    "alarm_high": 28.6
                },
                {
                    "step": 11,
                    "setpoint": 20,
                    "warn_low": 15.3,
                    "warn_high": 25.3,
                    "alarm_low": 12.6,
                    "alarm_high": 28.6
                },
                {
                    "step": 12,
                    "setpoint": 20,
                    "warn_low": 15.3,
                    "warn_high": 25.3,
                    "alarm_low": 12.6,
                    "alarm_high": 28.6
                },
                {
                    "step": 13,
                    "setpoint": 20,
                    "warn_low": 15.3,
                    "warn_high": 25.3,
                    "alarm_low": 12.6,
                    "alarm_high": 28.6
                },
                {
                    "step": 14,
                    "setpoint": 20,
                    "warn_low": 15.3,
                    "warn_high": 25.3,
                    "alarm_low": 12.6,
                    "alarm_high": 28.6
                }
            ]
        },
        {
            "key": "dissolved_oxygen_root",
            "zone": "root",
            "engine": "substrate",
            "label": "Dissolved O₂",
            "unit": "mg/L",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 7,
                    "warn_low": 5.1,
                    "warn_high": 9.2,
                    "alarm_low": 4.2,
                    "alarm_high": 10.4
                },
                {
                    "step": 1,
                    "setpoint": 7,
                    "warn_low": 5.1,
                    "warn_high": 9.2,
                    "alarm_low": 4.2,
                    "alarm_high": 10.4
                },
                {
                    "step": 2,
                    "setpoint": 7,
                    "warn_low": 5.1,
                    "warn_high": 9.2,
                    "alarm_low": 4.2,
                    "alarm_high": 10.4
                },
                {
                    "step": 3,
                    "setpoint": 7,
                    "warn_low": 5.1,
                    "warn_high": 9.2,
                    "alarm_low": 4.2,
                    "alarm_high": 10.4
                },
                {
                    "step": 4,
                    "setpoint": 7,
                    "warn_low": 5.1,
                    "warn_high": 9.2,
                    "alarm_low": 4.2,
                    "alarm_high": 10.4
                },
                {
                    "step": 5,
                    "setpoint": 7,
                    "warn_low": 5.1,
                    "warn_high": 9.2,
                    "alarm_low": 4.2,
                    "alarm_high": 10.4
                },
                {
                    "step": 6,
                    "setpoint": 7,
                    "warn_low": 5.1,
                    "warn_high": 9.2,
                    "alarm_low": 4.2,
                    "alarm_high": 10.4
                },
                {
                    "step": 7,
                    "setpoint": 7,
                    "warn_low": 5.1,
                    "warn_high": 9.2,
                    "alarm_low": 4.2,
                    "alarm_high": 10.4
                },
                {
                    "step": 8,
                    "setpoint": 7,
                    "warn_low": 5.1,
                    "warn_high": 9.2,
                    "alarm_low": 4.2,
                    "alarm_high": 10.4
                },
                {
                    "step": 9,
                    "setpoint": 7,
                    "warn_low": 5.1,
                    "warn_high": 9.2,
                    "alarm_low": 4.2,
                    "alarm_high": 10.4
                },
                {
                    "step": 10,
                    "setpoint": 7,
                    "warn_low": 5.1,
                    "warn_high": 9.2,
                    "alarm_low": 4.2,
                    "alarm_high": 10.4
                },
                {
                    "step": 11,
                    "setpoint": 7,
                    "warn_low": 5.1,
                    "warn_high": 9.2,
                    "alarm_low": 4.2,
                    "alarm_high": 10.4
                },
                {
                    "step": 12,
                    "setpoint": 7,
                    "warn_low": 5.1,
                    "warn_high": 9.2,
                    "alarm_low": 4.2,
                    "alarm_high": 10.4
                },
                {
                    "step": 13,
                    "setpoint": 7,
                    "warn_low": 5.1,
                    "warn_high": 9.2,
                    "alarm_low": 4.2,
                    "alarm_high": 10.4
                },
                {
                    "step": 14,
                    "setpoint": 7,
                    "warn_low": 5.1,
                    "warn_high": 9.2,
                    "alarm_low": 4.2,
                    "alarm_high": 10.4
                }
            ]
        },
        {
            "key": "substrate_moisture",
            "zone": "root",
            "engine": "substrate",
            "label": "Substrate moisture",
            "unit": "%",
            "schedule": [
                {
                    "step": 0,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 1,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 2,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 3,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 4,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 5,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 6,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 7,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 8,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 9,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 10,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 11,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 12,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 13,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                },
                {
                    "step": 14,
                    "setpoint": 60,
                    "warn_low": 42.5,
                    "warn_high": 80.5,
                    "alarm_low": 35,
                    "alarm_high": 91
                }
            ]
        }
    ]
}