"""Test RainMachine diagnostics."""
from regenmaschine.errors import RainMachineError

from homeassistant.components.diagnostics import REDACTED
from homeassistant.core import HomeAssistant

from tests.components.diagnostics import get_diagnostics_for_config_entry
from tests.typing import ClientSessionGenerator


async def test_entry_diagnostics(
    hass: HomeAssistant,
    config_entry,
    hass_client: ClientSessionGenerator,
    setup_rainmachine,
) -> None:
    """Test config entry diagnostics."""
    assert await get_diagnostics_for_config_entry(hass, hass_client, config_entry) == {
        "entry": {
            "entry_id": config_entry.entry_id,
            "version": 2,
            "domain": "rainmachine",
            "title": "Mock Title",
            "data": {
                "ip_address": "192.168.1.100",
                "password": REDACTED,
                "port": 8080,
                "ssl": True,
            },
            "options": {"use_app_run_times": False},
            "pref_disable_new_entities": False,
            "pref_disable_polling": False,
            "source": "user",
            "unique_id": REDACTED,
            "disabled_by": None,
        },
        "data": {
            "coordinator": {
                "api.versions": {"apiVer": "4.6.1", "hwVer": "3", "swVer": "4.0.1144"},
                "machine.firmware_update_status": {
                    "lastUpdateCheckTimestamp": 1657825288,
                    "packageDetails": [],
                    "update": False,
                    "lastUpdateCheck": "2022-07-14 13:01:28",
                    "updateStatus": 1,
                },
                "programs": [
                    {
                        "uid": 1,
                        "name": "Morning",
                        "active": True,
                        "startTime": "06:00",
                        "cycles": 0,
                        "soak": 0,
                        "cs_on": False,
                        "delay": 0,
                        "delay_on": False,
                        "status": 0,
                        "startTimeParams": {
                            "offsetSign": 0,
                            "type": 0,
                            "offsetMinutes": 0,
                        },
                        "frequency": {"type": 0, "param": "0"},
                        "coef": 0,
                        "ignoreInternetWeather": False,
                        "futureField1": 0,
                        "freq_modified": 0,
                        "useWaterSense": False,
                        "nextRun": "2018-06-04",
                        "startDate": "2018-04-28",
                        "endDate": None,
                        "yearlyRecurring": True,
                        "simulationExpired": False,
                        "wateringTimes": [
                            {
                                "id": 1,
                                "order": -1,
                                "name": "Landscaping",
                                "duration": 0,
                                "active": True,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 2,
                                "order": -1,
                                "name": "Flower Box",
                                "duration": 0,
                                "active": True,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 3,
                                "order": -1,
                                "name": "TEST",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 4,
                                "order": -1,
                                "name": "Zone 4",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 5,
                                "order": -1,
                                "name": "Zone 5",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 6,
                                "order": -1,
                                "name": "Zone 6",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 7,
                                "order": -1,
                                "name": "Zone 7",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 8,
                                "order": -1,
                                "name": "Zone 8",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 9,
                                "order": -1,
                                "name": "Zone 9",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 10,
                                "order": -1,
                                "name": "Zone 10",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 11,
                                "order": -1,
                                "name": "Zone 11",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 12,
                                "order": -1,
                                "name": "Zone 12",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                        ],
                    },
                    {
                        "uid": 2,
                        "name": "Evening",
                        "active": False,
                        "startTime": "06:00",
                        "cycles": 0,
                        "soak": 0,
                        "cs_on": False,
                        "delay": 0,
                        "delay_on": False,
                        "status": 0,
                        "startTimeParams": {
                            "offsetSign": 0,
                            "type": 0,
                            "offsetMinutes": 0,
                        },
                        "frequency": {"type": 0, "param": "0"},
                        "coef": 0,
                        "ignoreInternetWeather": False,
                        "futureField1": 0,
                        "freq_modified": 0,
                        "useWaterSense": False,
                        "nextRun": "2018-06-04",
                        "startDate": "2018-04-28",
                        "endDate": None,
                        "yearlyRecurring": True,
                        "simulationExpired": False,
                        "wateringTimes": [
                            {
                                "id": 1,
                                "order": -1,
                                "name": "Landscaping",
                                "duration": 0,
                                "active": True,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 2,
                                "order": -1,
                                "name": "Flower Box",
                                "duration": 0,
                                "active": True,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 3,
                                "order": -1,
                                "name": "TEST",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 4,
                                "order": -1,
                                "name": "Zone 4",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 5,
                                "order": -1,
                                "name": "Zone 5",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 6,
                                "order": -1,
                                "name": "Zone 6",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 7,
                                "order": -1,
                                "name": "Zone 7",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 8,
                                "order": -1,
                                "name": "Zone 8",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 9,
                                "order": -1,
                                "name": "Zone 9",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 10,
                                "order": -1,
                                "name": "Zone 10",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 11,
                                "order": -1,
                                "name": "Zone 11",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 12,
                                "order": -1,
                                "name": "Zone 12",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                        ],
                    },
                ],
                "provision.settings": {
                    "system": {
                        "httpEnabled": True,
                        "rainSensorSnoozeDuration": 0,
                        "uiUnitsMetric": False,
                        "programZonesShowInactive": False,
                        "programSingleSchedule": False,
                        "standaloneMode": False,
                        "masterValveAfter": 0,
                        "touchSleepTimeout": 10,
                        "selfTest": False,
                        "useSoftwareRainSensor": False,
                        "defaultZoneWateringDuration": 300,
                        "maxLEDBrightness": 40,
                        "simulatorHistorySize": 0,
                        "vibration": False,
                        "masterValveBefore": 0,
                        "touchProgramToRun": None,
                        "useRainSensor": False,
                        "wizardHasRun": True,
                        "waterLogHistorySize": 365,
                        "netName": "Home",
                        "softwareRainSensorMinQPF": 5,
                        "touchAdvanced": False,
                        "useBonjourService": True,
                        "hardwareVersion": 3,
                        "touchLongPressTimeout": 3,
                        "showRestrictionsOnLed": False,
                        "parserDataSizeInDays": 6,
                        "programListShowInactive": True,
                        "parserHistorySize": 365,
                        "allowAlexaDiscovery": False,
                        "automaticUpdates": True,
                        "minLEDBrightness": 0,
                        "minWateringDurationThreshold": 0,
                        "localValveCount": 12,
                        "touchAuthAPSeconds": 60,
                        "useCommandLineArguments": False,
                        "databasePath": "/rainmachine-app/DB/Default",
                        "touchCyclePrograms": True,
                        "zoneListShowInactive": True,
                        "rainSensorRainStart": None,
                        "zoneDuration": [
                            300,
                            300,
                            300,
                            300,
                            300,
                            300,
                            300,
                            300,
                            300,
                            300,
                            300,
                            300,
                        ],
                        "rainSensorIsNormallyClosed": True,
                        "useCorrectionForPast": True,
                        "useMasterValve": False,
                        "runParsersBeforePrograms": True,
                        "maxWateringCoef": 2,
                        "mixerHistorySize": 365,
                    },
                    "location": {
                        "elevation": REDACTED,
                        "doyDownloaded": True,
                        "zip": None,
                        "windSensitivity": 0.5,
                        "krs": 0.16,
                        "stationID": REDACTED,
                        "stationSource": REDACTED,
                        "et0Average": 6.578,
                        "latitude": REDACTED,
                        "state": "Default",
                        "stationName": REDACTED,
                        "wsDays": 2,
                        "stationDownloaded": True,
                        "address": "Default",
                        "rainSensitivity": 0.8,
                        "timezone": REDACTED,
                        "longitude": REDACTED,
                        "name": "Home",
                    },
                },
                "restrictions.current": {
                    "hourly": False,
                    "freeze": False,
                    "month": False,
                    "weekDay": False,
                    "rainDelay": False,
                    "rainDelayCounter": -1,
                    "rainSensor": False,
                },
                "restrictions.universal": {
                    "hotDaysExtraWatering": False,
                    "freezeProtectEnabled": True,
                    "freezeProtectTemp": 2,
                    "noWaterInWeekDays": "0000000",
                    "noWaterInMonths": "000000000000",
                    "rainDelayStartTime": 1524854551,
                    "rainDelayDuration": 0,
                },
                "zones": [
                    {
                        "uid": 1,
                        "name": "Landscaping",
                        "state": 0,
                        "active": True,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 4,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 2,
                        "name": "Flower Box",
                        "state": 0,
                        "active": True,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 5,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 3,
                        "name": "TEST",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 9,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 4,
                        "name": "Zone 4",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 5,
                        "name": "Zone 5",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 6,
                        "name": "Zone 6",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 7,
                        "name": "Zone 7",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 8,
                        "name": "Zone 8",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 9,
                        "name": "Zone 9",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 10,
                        "name": "Zone 10",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 11,
                        "name": "Zone 11",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 12,
                        "name": "Zone 12",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                ],
            },
            "controller_diagnostics": {
                "hasWifi": True,
                "uptime": "3 days, 18:14:14",
                "uptimeSeconds": 324854,
                "memUsage": 16196,
                "networkStatus": True,
                "bootCompleted": True,
                "lastCheckTimestamp": 1659895175,
                "wizardHasRun": True,
                "standaloneMode": False,
                "cpuUsage": 1,
                "lastCheck": "2022-08-07 11:59:35",
                "softwareVersion": "4.0.1144",
                "internetStatus": True,
                "locationStatus": True,
                "timeStatus": True,
                "wifiMode": None,
                "gatewayAddress": "172.16.20.1",
                "cloudStatus": 0,
                "weatherStatus": True,
            },
        },
    }


async def test_entry_diagnostics_failed_controller_diagnostics(
    hass: HomeAssistant,
    config_entry,
    controller,
    hass_client: ClientSessionGenerator,
    setup_rainmachine,
) -> None:
    """Test config entry diagnostics when the controller diagnostics API call fails."""
    controller.diagnostics.current.side_effect = RainMachineError
    assert await get_diagnostics_for_config_entry(hass, hass_client, config_entry) == {
        "entry": {
            "entry_id": config_entry.entry_id,
            "version": 2,
            "domain": "rainmachine",
            "title": "Mock Title",
            "data": {
                "ip_address": "192.168.1.100",
                "password": REDACTED,
                "port": 8080,
                "ssl": True,
            },
            "options": {"use_app_run_times": False},
            "pref_disable_new_entities": False,
            "pref_disable_polling": False,
            "source": "user",
            "unique_id": REDACTED,
            "disabled_by": None,
        },
        "data": {
            "coordinator": {
                "api.versions": {"apiVer": "4.6.1", "hwVer": "3", "swVer": "4.0.1144"},
                "machine.firmware_update_status": {
                    "lastUpdateCheckTimestamp": 1657825288,
                    "packageDetails": [],
                    "update": False,
                    "lastUpdateCheck": "2022-07-14 13:01:28",
                    "updateStatus": 1,
                },
                "programs": [
                    {
                        "uid": 1,
                        "name": "Morning",
                        "active": True,
                        "startTime": "06:00",
                        "cycles": 0,
                        "soak": 0,
                        "cs_on": False,
                        "delay": 0,
                        "delay_on": False,
                        "status": 0,
                        "startTimeParams": {
                            "offsetSign": 0,
                            "type": 0,
                            "offsetMinutes": 0,
                        },
                        "frequency": {"type": 0, "param": "0"},
                        "coef": 0,
                        "ignoreInternetWeather": False,
                        "futureField1": 0,
                        "freq_modified": 0,
                        "useWaterSense": False,
                        "nextRun": "2018-06-04",
                        "startDate": "2018-04-28",
                        "endDate": None,
                        "yearlyRecurring": True,
                        "simulationExpired": False,
                        "wateringTimes": [
                            {
                                "id": 1,
                                "order": -1,
                                "name": "Landscaping",
                                "duration": 0,
                                "active": True,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 2,
                                "order": -1,
                                "name": "Flower Box",
                                "duration": 0,
                                "active": True,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 3,
                                "order": -1,
                                "name": "TEST",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 4,
                                "order": -1,
                                "name": "Zone 4",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 5,
                                "order": -1,
                                "name": "Zone 5",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 6,
                                "order": -1,
                                "name": "Zone 6",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 7,
                                "order": -1,
                                "name": "Zone 7",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 8,
                                "order": -1,
                                "name": "Zone 8",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 9,
                                "order": -1,
                                "name": "Zone 9",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 10,
                                "order": -1,
                                "name": "Zone 10",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 11,
                                "order": -1,
                                "name": "Zone 11",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 12,
                                "order": -1,
                                "name": "Zone 12",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                        ],
                    },
                    {
                        "uid": 2,
                        "name": "Evening",
                        "active": False,
                        "startTime": "06:00",
                        "cycles": 0,
                        "soak": 0,
                        "cs_on": False,
                        "delay": 0,
                        "delay_on": False,
                        "status": 0,
                        "startTimeParams": {
                            "offsetSign": 0,
                            "type": 0,
                            "offsetMinutes": 0,
                        },
                        "frequency": {"type": 0, "param": "0"},
                        "coef": 0,
                        "ignoreInternetWeather": False,
                        "futureField1": 0,
                        "freq_modified": 0,
                        "useWaterSense": False,
                        "nextRun": "2018-06-04",
                        "startDate": "2018-04-28",
                        "endDate": None,
                        "yearlyRecurring": True,
                        "simulationExpired": False,
                        "wateringTimes": [
                            {
                                "id": 1,
                                "order": -1,
                                "name": "Landscaping",
                                "duration": 0,
                                "active": True,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 2,
                                "order": -1,
                                "name": "Flower Box",
                                "duration": 0,
                                "active": True,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 3,
                                "order": -1,
                                "name": "TEST",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 4,
                                "order": -1,
                                "name": "Zone 4",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 5,
                                "order": -1,
                                "name": "Zone 5",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 6,
                                "order": -1,
                                "name": "Zone 6",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 7,
                                "order": -1,
                                "name": "Zone 7",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 8,
                                "order": -1,
                                "name": "Zone 8",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 9,
                                "order": -1,
                                "name": "Zone 9",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 10,
                                "order": -1,
                                "name": "Zone 10",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 11,
                                "order": -1,
                                "name": "Zone 11",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                            {
                                "id": 12,
                                "order": -1,
                                "name": "Zone 12",
                                "duration": 0,
                                "active": False,
                                "userPercentage": 1,
                                "minRuntimeCoef": 1,
                            },
                        ],
                    },
                ],
                "provision.settings": {
                    "system": {
                        "httpEnabled": True,
                        "rainSensorSnoozeDuration": 0,
                        "uiUnitsMetric": False,
                        "programZonesShowInactive": False,
                        "programSingleSchedule": False,
                        "standaloneMode": False,
                        "masterValveAfter": 0,
                        "touchSleepTimeout": 10,
                        "selfTest": False,
                        "useSoftwareRainSensor": False,
                        "defaultZoneWateringDuration": 300,
                        "maxLEDBrightness": 40,
                        "simulatorHistorySize": 0,
                        "vibration": False,
                        "masterValveBefore": 0,
                        "touchProgramToRun": None,
                        "useRainSensor": False,
                        "wizardHasRun": True,
                        "waterLogHistorySize": 365,
                        "netName": "Home",
                        "softwareRainSensorMinQPF": 5,
                        "touchAdvanced": False,
                        "useBonjourService": True,
                        "hardwareVersion": 3,
                        "touchLongPressTimeout": 3,
                        "showRestrictionsOnLed": False,
                        "parserDataSizeInDays": 6,
                        "programListShowInactive": True,
                        "parserHistorySize": 365,
                        "allowAlexaDiscovery": False,
                        "automaticUpdates": True,
                        "minLEDBrightness": 0,
                        "minWateringDurationThreshold": 0,
                        "localValveCount": 12,
                        "touchAuthAPSeconds": 60,
                        "useCommandLineArguments": False,
                        "databasePath": "/rainmachine-app/DB/Default",
                        "touchCyclePrograms": True,
                        "zoneListShowInactive": True,
                        "rainSensorRainStart": None,
                        "zoneDuration": [
                            300,
                            300,
                            300,
                            300,
                            300,
                            300,
                            300,
                            300,
                            300,
                            300,
                            300,
                            300,
                        ],
                        "rainSensorIsNormallyClosed": True,
                        "useCorrectionForPast": True,
                        "useMasterValve": False,
                        "runParsersBeforePrograms": True,
                        "maxWateringCoef": 2,
                        "mixerHistorySize": 365,
                    },
                    "location": {
                        "elevation": REDACTED,
                        "doyDownloaded": True,
                        "zip": None,
                        "windSensitivity": 0.5,
                        "krs": 0.16,
                        "stationID": REDACTED,
                        "stationSource": REDACTED,
                        "et0Average": 6.578,
                        "latitude": REDACTED,
                        "state": "Default",
                        "stationName": REDACTED,
                        "wsDays": 2,
                        "stationDownloaded": True,
                        "address": "Default",
                        "rainSensitivity": 0.8,
                        "timezone": REDACTED,
                        "longitude": REDACTED,
                        "name": "Home",
                    },
                },
                "restrictions.current": {
                    "hourly": False,
                    "freeze": False,
                    "month": False,
                    "weekDay": False,
                    "rainDelay": False,
                    "rainDelayCounter": -1,
                    "rainSensor": False,
                },
                "restrictions.universal": {
                    "hotDaysExtraWatering": False,
                    "freezeProtectEnabled": True,
                    "freezeProtectTemp": 2,
                    "noWaterInWeekDays": "0000000",
                    "noWaterInMonths": "000000000000",
                    "rainDelayStartTime": 1524854551,
                    "rainDelayDuration": 0,
                },
                "zones": [
                    {
                        "uid": 1,
                        "name": "Landscaping",
                        "state": 0,
                        "active": True,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 4,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 2,
                        "name": "Flower Box",
                        "state": 0,
                        "active": True,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 5,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 3,
                        "name": "TEST",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 9,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 4,
                        "name": "Zone 4",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 5,
                        "name": "Zone 5",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 6,
                        "name": "Zone 6",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 7,
                        "name": "Zone 7",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 8,
                        "name": "Zone 8",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 9,
                        "name": "Zone 9",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 10,
                        "name": "Zone 10",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 11,
                        "name": "Zone 11",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                    {
                        "uid": 12,
                        "name": "Zone 12",
                        "state": 0,
                        "active": False,
                        "userDuration": 0,
                        "machineDuration": 0,
                        "remaining": 0,
                        "cycle": 0,
                        "noOfCycles": 0,
                        "restriction": False,
                        "type": 2,
                        "master": False,
                        "waterSense": False,
                    },
                ],
            },
            "controller_diagnostics": None,
        },
    }