{
  "version": "1.0",
  "calculator": {
    "id": "solar-pv-system-size",
    "title": "What size solar system do I need?",
    "summary": "Works out the array a home needs — capacity, panels, battery and what it saves — from a postcode, a roof direction and a year of electricity use.",
    "tier": "simple",
    "description": "Work out the solar PV system a UK home needs: the capacity in kWp, the number of\npanels, the battery to go with it, and what it would do to the electricity bill.\n\nThis runs the MCS arithmetic backwards. The other solar calculators here each answer one question\nabout a system somebody has already specified. This one starts from what a household uses and\narrives at the system that covers it, which is the question a householder actually has.\n\nThe chain is short and every link is published. Annual consumption sets the generation the array has\nto make. The MCS irradiance dataset behind MIS 3002 says what one kWp makes on that roof, which gives\na capacity. Capacity divided by panel size gives a panel count, rounded up, because panels come whole.\nThe MGD 003 tables then say how much of that generation the household will use and how much it will export.\n\nOnly the postcode and the roof direction are required. Direction is a compass point, not an angle:\n'S', 'SE', 'SW', 'E', 'W', 'NE', 'NW' or 'N'. Give the annual consumption from a bill if it is known,\nsince the 3,500 kWh default is only the British average. Shading can be described in words instead of\nmeasured, and a roof area caps the panel count where the roof is the constraint.\n\nNo cost is assumed. Installed prices vary far too much between houses to guess at, so a payback figure\nappears only when a cost from a real quotation is supplied.\n\nUse this to size a system or to sanity-check a quotation. Use 'solar_pv_output' instead when the\ncapacity is already known and the question is only what it will generate.",
    "standard": "MIS 3002",
    "category": "solar-pv",
    "webPath": "/calculators/solar-pv-system-size",
    "example": {
      "postcode": "BS1 5TR",
      "direction": "SW",
      "annualConsumptionKwh": 3600,
      "occupancy": "in_half_the_day",
      "shading": "light",
      "includeBattery": true,
      "electricityPricePerKwh": 0.27,
      "exportPricePerKwh": 0.15
    },
    "reference": {
      "directions": [
        {
          "key": "S",
          "label": "South",
          "orientation": 0
        },
        {
          "key": "SE",
          "label": "South-east",
          "orientation": 45
        },
        {
          "key": "SW",
          "label": "South-west",
          "orientation": 45
        },
        {
          "key": "E",
          "label": "East",
          "orientation": 90
        },
        {
          "key": "W",
          "label": "West",
          "orientation": 90
        },
        {
          "key": "NE",
          "label": "North-east",
          "orientation": 135
        },
        {
          "key": "NW",
          "label": "North-west",
          "orientation": 135
        },
        {
          "key": "N",
          "label": "North",
          "orientation": 180
        }
      ],
      "occupancyArchetypes": [
        {
          "value": "home_all_day",
          "label": "Home all day",
          "description": "At least one person is in the house between 9am and 5pm on weekdays."
        },
        {
          "value": "in_half_the_day",
          "label": "In half the day",
          "description": "The house is empty for about half of each weekday, either the morning or the afternoon."
        },
        {
          "value": "out_all_day",
          "label": "Out all day",
          "description": "The house is empty on weekdays."
        }
      ],
      "shadingLevels": [
        {
          "key": "none",
          "label": "Nothing in the way",
          "sunpathSegments": 0,
          "shadeFactor": 1,
          "description": "A clear horizon: no trees, chimneys or neighbouring buildings between the roof and the southern sky."
        },
        {
          "key": "light",
          "label": "A little",
          "sunpathSegments": 5,
          "shadeFactor": 0.95,
          "description": "A chimney, an aerial, or something distant that clips the array early or late in the day."
        },
        {
          "key": "moderate",
          "label": "Some",
          "sunpathSegments": 12,
          "shadeFactor": 0.88,
          "description": "A neighbouring roof, or trees that take a corner of the array for part of the day."
        },
        {
          "key": "heavy",
          "label": "A lot",
          "sunpathSegments": 20,
          "shadeFactor": 0.8,
          "description": "Tall trees or buildings across the southern side. At this level a proper assessment is worth doing before anything else."
        }
      ]
    },
    "inputSchema": {
      "type": "object",
      "properties": {
        "postcode": {
          "type": "string",
          "description": "UK postcode of the property, for example 'BS1 5TR'. Only the outward code matters. Required."
        },
        "direction": {
          "type": "string",
          "description": "Compass point the roof faces: 'S', 'SE', 'SW', 'E', 'W', 'NE', 'NW' or 'N'. Required."
        },
        "annualConsumptionKwh": {
          "type": "number",
          "description": "The household's electricity use in kWh a year, from a bill. Defaults to 3500, which is the British average and the figure MGD 003 falls back on, but a real bill sharpens the answer considerably."
        },
        "occupancy": {
          "type": "string",
          "description": "Weekday occupancy: 'home_all_day', 'in_half_the_day' or 'out_all_day'. Decides how much of the generation is used at home instead of exported. Defaults to 'in_half_the_day'."
        },
        "shading": {
          "type": "string",
          "description": "How much shading the roof has, in words: 'none', 'light', 'moderate' or 'heavy'. Defaults to 'none'. Use 'shadeFactor' instead if a proper MGD 005 assessment has been done."
        },
        "shadeFactor": {
          "type": "number",
          "description": "A measured shade factor between 0.5 and 1 from an MGD 005 assessment. Overrides 'shading' when given."
        },
        "inclination": {
          "type": "number",
          "description": "Roof pitch in degrees from horizontal. Defaults to 35, which is typical of a British pitched roof. A flat roof is 0."
        },
        "includeBattery": {
          "type": "boolean",
          "description": "Whether to size a battery alongside the panels. Defaults to false."
        },
        "roofAreaM2": {
          "type": "number",
          "description": "Shade-free roof area available for panels, in square metres. Optional; when given it caps the number of panels."
        },
        "panelWatts": {
          "type": "number",
          "description": "Nameplate rating of a single panel in watts. Defaults to 440, which is typical of a current domestic module."
        },
        "batteryModuleKwh": {
          "type": "number",
          "description": "Nominal capacity of one battery module in kWh. Batteries are sold in whole modules, so the answer rounds up to one. Defaults to 5."
        },
        "electricityPricePerKwh": {
          "type": "number",
          "description": "What the household pays for a unit, in pounds. Optional; supplying it puts a value on the answer."
        },
        "exportPricePerKwh": {
          "type": "number",
          "description": "What the household is paid for a unit exported, in pounds. Optional."
        },
        "installedCost": {
          "type": "number",
          "description": "The installed cost of the system in pounds, from a quotation. Optional; supplying it gives a payback period. No cost is assumed if it is left out, because prices vary too much to guess at."
        }
      },
      "required": [
        "postcode",
        "direction"
      ],
      "additionalProperties": false
    },
    "outputSchema": {
      "type": "object",
      "properties": {
        "zone": {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "city": {
              "type": "string"
            }
          },
          "required": [
            "code",
            "city"
          ],
          "additionalProperties": false
        },
        "postcodeUsed": {
          "type": "string"
        },
        "direction": {
          "type": "object",
          "properties": {
            "key": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "orientation": {
              "type": "number",
              "description": "Degrees from due south, as MIS 3002 measures it."
            }
          },
          "required": [
            "key",
            "label",
            "orientation"
          ],
          "additionalProperties": false
        },
        "inclination": {
          "type": "number"
        },
        "shading": {
          "type": [
            "null",
            "object"
          ],
          "properties": {
            "key": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "sunpathSegments": {
              "type": "integer",
              "description": "The equivalent count on the MGD 005 sunpath chart, out of 84."
            },
            "shadeFactor": {
              "type": "number"
            },
            "description": {
              "type": "string"
            }
          },
          "description": "The shading description used, when one was chosen in place of a measured factor.",
          "required": [
            "key",
            "label",
            "sunpathSegments",
            "shadeFactor",
            "description"
          ],
          "additionalProperties": false
        },
        "shadeFactor": {
          "type": "number"
        },
        "annualConsumptionKwh": {
          "type": "number"
        },
        "consumptionAssumed": {
          "type": "boolean",
          "description": "True when the 3500 kWh default stood in for a figure the caller did not give."
        },
        "capacityKwp": {
          "type": "number",
          "description": "The installed capacity: the panel count multiplied by the panel rating."
        },
        "panels": {
          "type": "integer"
        },
        "panelWatts": {
          "type": "number"
        },
        "idealCapacityKwp": {
          "type": "number",
          "description": "The capacity that would exactly cover a year of consumption, before rounding up to whole panels."
        },
        "roofAreaNeededM2": {
          "type": "number"
        },
        "roofLimited": {
          "type": "boolean",
          "description": "True when the roof area given, not consumption, set the size."
        },
        "specificYieldKwhPerKwp": {
          "type": "number",
          "description": "Kk: the kWh a kWp produces in a year at this zone, pitch and orientation."
        },
        "annualGenerationKwh": {
          "type": "number"
        },
        "selfConsumedKwh": {
          "type": "number"
        },
        "exportedKwh": {
          "type": "number"
        },
        "importedKwh": {
          "type": "number",
          "description": "Units still bought from the grid over a year."
        },
        "selfConsumptionPercent": {
          "type": "number"
        },
        "gridIndependencePercent": {
          "type": "number",
          "description": "The share of the household's own use met by the system."
        },
        "occupancyLabel": {
          "type": "string"
        },
        "generationAsPercentOfUse": {
          "type": "number",
          "description": "Annual generation as a percentage of annual consumption. Above 100 means the system makes more over a year than the house uses, though not at the same times."
        },
        "battery": {
          "type": [
            "null",
            "object"
          ],
          "properties": {
            "modules": {
              "type": "integer"
            },
            "moduleKwh": {
              "type": "number"
            },
            "nominalKwh": {
              "type": "number"
            },
            "usableKwh": {
              "type": "number",
              "description": "What the battery will actually give back, which is what MGD 003 is indexed on."
            },
            "averageDailyConsumptionKwh": {
              "type": "number"
            },
            "selfConsumptionGainPercent": {
              "type": "number",
              "description": "Percentage points of self-consumption the battery adds."
            },
            "extraKwhKeptAtHome": {
              "type": "number"
            }
          },
          "required": [
            "modules",
            "moduleKwh",
            "nominalKwh",
            "usableKwh",
            "averageDailyConsumptionKwh",
            "selfConsumptionGainPercent",
            "extraKwhKeptAtHome"
          ],
          "additionalProperties": false
        },
        "currentAnnualCost": {
          "type": "number"
        },
        "newAnnualCost": {
          "type": "number"
        },
        "annualBillSaving": {
          "type": "number"
        },
        "annualExportIncome": {
          "type": "number"
        },
        "annualBenefit": {
          "type": "number",
          "description": "Bill saving plus export income."
        },
        "installedCost": {
          "type": "number"
        },
        "paybackYears": {
          "type": "number",
          "description": "Installed cost divided by the annual benefit. Only present when a cost was supplied."
        },
        "method": {
          "type": "string"
        },
        "references": {
          "type": [
            "null",
            "array"
          ],
          "items": {
            "type": "object",
            "properties": {
              "document": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "url": {
                "type": "string"
              },
              "clause": {
                "type": "string"
              }
            },
            "required": [
              "document",
              "title",
              "url"
            ],
            "additionalProperties": false
          }
        },
        "notes": {
          "type": [
            "null",
            "array"
          ],
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "zone",
        "postcodeUsed",
        "direction",
        "inclination",
        "shadeFactor",
        "annualConsumptionKwh",
        "consumptionAssumed",
        "capacityKwp",
        "panels",
        "panelWatts",
        "idealCapacityKwp",
        "roofAreaNeededM2",
        "roofLimited",
        "specificYieldKwhPerKwp",
        "annualGenerationKwh",
        "selfConsumedKwh",
        "exportedKwh",
        "importedKwh",
        "selfConsumptionPercent",
        "gridIndependencePercent",
        "occupancyLabel",
        "generationAsPercentOfUse",
        "method",
        "references",
        "notes"
      ],
      "additionalProperties": false
    }
  },
  "url": "https://ampworth.com/api/v1/calculators/solar-pv-system-size",
  "webUrl": "https://ampworth.com/calculators/solar-pv-system-size",
  "exampleUrl": "https://ampworth.com/api/v1/calculators/solar-pv-system-size?postcode=BS1+5TR\u0026direction=SW\u0026annualConsumptionKwh=3600\u0026occupancy=in_half_the_day\u0026shading=light\u0026includeBattery=true\u0026electricityPricePerKwh=0.27\u0026exportPricePerKwh=0.15",
  "method": "POST",
  "contentType": "application/json",
  "notice": "These calculators follow the published MCS methods, for understanding a system and checking a quotation. Anything that gets installed still needs a design and a site survey from a certified installer."
}
