3D Roof Group
3D Group containing at the highest level a number of Racks or Rail Pairs
Object
id
string
Example:
group-001
name
string
Example:
G1
rows
integer
Example:
2
cols
integer
Example:
8
panel
Object
id
string
Example:
45a29071-b7b3-4dd7-b16f-5c00c0574707
name
string
Example:
Aiko 445W N-Type ABC All Black Rigid Solar Panel
specification
Object
width
number
Example:
113.4
height
number
Example:
190.9
depth
number
Example:
3.5
orientation
string
Enumeration:
PORTRAIT
LANDSCAPE
mounting
Object
h_gap
number
Horizontal Gap between panels
Example:
0.3
v_gap
number
Vertical Gap Between Panels
Example:
0.1
origin
Object
x
number
Example:
-39.45608554384457
y
number
Example:
0.5605582630405639
z
integer
settings
Object
max_rows
string
max_cols
string
width
number
height
number
Example 1
{
"id": "group-001",
"name": "G1",
"rows": 2,
"cols": 8,
"panel": {
"id": "45a29071-b7b3-4dd7-b16f-5c00c0574707",
"name": "Aiko 445W N-Type ABC All Black Rigid Solar Panel",
"specification": {
"width": 113.4,
"height": 190.9,
"depth": 3.5
},
"orientation": "LANDSCAPE",
"mounting": {
"h_gap": 0.3,
"v_gap": 0.1
}
},
"origin": {
"x": -39.45608554384457,
"y": 0.5605582630405639,
"z": 1
},
"racks": {
"mounting": {
"h_gap": 1
}
},
"settings": {
"max_rows": "",
"max_cols": "",
"width": 1,
"height": 1
}
}
Object
rack_id
string
Example:
R1
row
integer
Example:
1
offset
Object
x
integer
y
integer
z
integer
rack_type
string
Type of Racks
Enumeration:
FLUSH
TILT
DUAL_TILT
CANOPY
DUAL_CANOPY
GROUIND
panel_columns
integer
panels_per_col
integer
Example:
3
faces
integer
number of faces for the rack
rack_geometry
Object
face
integer
Example:
1
type
string
Example:
DUAL_TILT
base_length
number
Example:
6.804
height
number
Example:
0.6
hypotenuse_length
number
Example:
6.804
tilt
Object
rad
number
Example:
0.261799
deg
integer
Example:
15
azimuth
Object
rad
number
Example:
1.5708
deg
integer
Example:
90
dual_ridge
Object
gap
number
Example:
0.15
length_m
number
Example:
6.804
mounting
Object
h_gap
string
Horizontal gap between next rack
v_gap
string
Vertical Gap to next group
walkways
Array
Walkway Gap between vertical columns
Object
id
string
width
string
after_col
string
ballast
string
Ballast Weight
mounting_components
Array
Object
span
Object
face
integer
Example:
1
start_col
integer
Example:
1
end_col
integer
Example:
8
length_m
number
Example:
3.65
components
Array
Object
component_type
string
Example:
RAIL
product_id
string
Example:
5cf86dc2-ae72-11f0-abdb-42010a9a0021
sku
string
Example:
2004207
name
string
Example:
K2 SingleRail Connector
specification
Object
width
integer
Example:
8
height
number
Example:
3.6
weight
number
Example:
0.3
quantity
integer
Example:
8
mounting_group
Object
id
string
Example:
c363cac3-ade6-11f0-abdb-42010a9a0021
name
string
Example:
Rail Connector
Example 1
{
"rack_id": "R1",
"row": 1,
"offset": {
"x": 1,
"y": 1,
"z": 1
},
"rack_type": "FLUSH",
"panel_columns": 1,
"panels_per_col": 3,
"faces": 1,
"rack_geometry": {
"face": 1,
"type": "DUAL_TILT",
"base_length": 6.804,
"height": 0.6,
"hypotenuse_length": 6.804,
"tilt": {
"rad": 0.261799,
"deg": 15
},
"azimuth": {
"rad": 1.5708,
"deg": 90
}
},
"dual_ridge": {
"gap": 0.15,
"length_m": 6.804
},
"mounting": {
"h_gap": "",
"v_gap": "",
"walkways": [
{
"id": "",
"width": "",
"after_col": ""
}
],
"ballast": ""
},
"mounting_components": {
"span": {
"start_col": "",
"end_col": "",
"length": "",
"components": [
{
"component_type": "RAIL_ENUM",
"undefined": "5cf86dc2-ae72-11f0-abdb-42010a9a0021",
"sku": "2004207",
"name": "K2 SingleRail Connector",
"specification": {
"width": 8,
"height": 3.6,
"weight": 0.3
},
"quantity": 8,
"mounting_group": {
"id": "c363cac3-ade6-11f0-abdb-42010a9a0021",
"name": "Rail Connector"
}
}
]
}
}
}
Object
id
string
Example:
C1_1
row
integer
Example:
1
col
integer
Example:
1
rack_id
string
Example:
R1
rack_face
integer
Example:
1
present
boolean
removed_reason
string
Enumeration:
MANUAL
OBSTRUCTION
AUTO
NONE
obstruction_id
unknown
nullable
string_id
string
Example:
S1
shade_factor
integer
Example:
1
cache
Object
world
Object
x
number
Example:
-38.23
y
number
Example:
0.45
z
number
Example:
2.1
bounds
Object
w
number
Example:
1.134
h
number
Example:
1.909
Example 1
{
"id": "C1_1",
"row": 1,
"col": 1,
"rack_id": "R1",
"rack_face": 1,
"present": true,
"removed_reason": "AUTO",
"obstruction_id": null,
"string_id": "S1",
"shade_factor": 1,
"cache": {
"world": {
"x": -38.23,
"y": 0.45,
"z": 2.1
},
"bounds": {
"w": 1.134,
"h": 1.909
}
}
}
Object
id
string
Example:
S1
inverter_id
string
Example:
INV1
mppt_channel
integer
Example:
1
max_voltage
integer
Example:
600
max_current
integer
Example:
12
max_power
integer
Example:
6000
actual_voltage
integer
Example:
540
actual_current
integer
Example:
11
actual_power
integer
Example:
5940
cabling
Array
Object
rack_id
string
Example:
R1
face
integer
Example:
1
start
Object
row
integer
Example:
1
col
integer
Example:
1
end
Object
row
integer
Example:
1
col
integer
Example:
3
length_m
number
Example:
3.65
components
Array
Object
component_type
string
Example:
CABLE
product_id
string
Example:
5cf86dc2-ae72-11f0-abdb-42010a9a0021
sku
string
Example:
2004207
name
string
Example:
4mm DC Cable
quantity
integer
Example:
6
entry_point
Object
x
number
Example:
-38.23
y
number
Example:
0.45
z
number
Example:
2.1
lat
number
lon
number
cable_length_m
number
Example:
28.5
Example 1
{
"id": "S1",
"inverter_id": "INV1",
"mppt_channel": 1,
"max_voltage": 600,
"max_current": 12,
"max_power": 6000,
"actual_voltage": 540,
"actual_current": 11,
"actual_power": 5940,
"cabling": [
{
"rack_id": "R1",
"face": 1,
"start": {
"row": 1,
"col": 1
},
"end": {
"row": 1,
"col": 3
},
"length_m": 3.65,
"components": [
{
"component_type": "CABLE",
"product_id": "5cf86dc2-ae72-11f0-abdb-42010a9a0021",
"sku": "2004207",
"name": "4mm DC Cable",
"quantity": 6
}
]
}
],
"entry_point": {
"x": -38.23,
"y": 0.45,
"z": 2.1,
"lat": 1,
"lon": 1
},
"cable_length_m": 28.5
}
Object
group
racks
panel_cells
strings
Example 1
Sample Roof 2 x 8 with 2 panels removed
{
"group": {
"id": "group-001",
"name": "G1",
"rows": 2,
"cols": 8,
"panel": {
"id": "45a29071-b7b3-4dd7-b16f-5c00c0574707",
"name": "Aiko 445W N-Type ABC All Black Rigid Solar Panel",
"specification": {
"width": 113.4,
"height": 190.9,
"depth": 3.5
},
"orientation": "LANDSCAPE",
"mounting": {
"h_gap": 0.3,
"v_gap": 0.1
}
},
"origin": {
"x": -39.45608554384457,
"y": 0.5605582630405639,
"z": 1
},
"settings": {
"max_rows": "",
"max_cols": "",
"width": 1,
"height": 1
}
},
"racks": [
{
"rack_id": "R1",
"row": 1,
"offset": {
"x": 1,
"y": 1,
"z": 1
},
"rack_type": "DUAL_CANOPY",
"panel_columns": 1,
"panels_per_col": 3,
"faces": 1,
"rack_geometry": {
"face": 1,
"type": "DUAL_TILT",
"base_length": 6.804,
"height": 0.6,
"hypotenuse_length": 6.804,
"tilt": {
"rad": 0.261799,
"deg": 15
},
"azimuth": {
"rad": 1.5708,
"deg": 90
}
},
"dual_ridge": {
"gap": 0.15,
"length_m": 6.804
},
"mounting": {
"h_gap": "",
"v_gap": "",
"walkways": [
{
"id": "",
"width": "",
"after_col": ""
}
],
"ballast": ""
},
"mounting_components": [
{
"span": {
"face": 1,
"start_col": 1,
"end_col": 8,
"length_m": 3.65
},
"components": [
{
"component_type": "RAIL",
"product_id": "5cf86dc2-ae72-11f0-abdb-42010a9a0021",
"sku": "2004207",
"name": "K2 SingleRail Connector",
"specification": {
"width": 8,
"height": 3.6,
"weight": 0.3
},
"quantity": 8,
"mounting_group": {
"id": "c363cac3-ade6-11f0-abdb-42010a9a0021",
"name": "Rail Connector"
}
}
]
}
]
}
],
"panel_cells": [
{
"id": "C1_1",
"row": 1,
"col": 1,
"rack_id": "R1",
"rack_face": 1,
"present": true,
"removed_reason": "OBSTRUCTION",
"obstruction_id": null,
"string_id": "S1",
"shade_factor": 1,
"cache": {
"world": {
"x": -38.23,
"y": 0.45,
"z": 2.1
},
"bounds": {
"w": 1.134,
"h": 1.909
}
}
}
],
"strings": [
{
"id": "S1",
"inverter_id": "INV1",
"mppt_channel": 1,
"max_voltage": 600,
"max_current": 12,
"max_power": 6000,
"actual_voltage": 540,
"actual_current": 11,
"actual_power": 5940,
"cabling": [
{
"rack_id": "R1",
"face": 1,
"start": {
"row": 1,
"col": 1
},
"end": {
"row": 1,
"col": 3
},
"length_m": 3.65,
"components": [
{
"component_type": "CABLE",
"product_id": "5cf86dc2-ae72-11f0-abdb-42010a9a0021",
"sku": "2004207",
"name": "4mm DC Cable",
"quantity": 6
}
]
}
],
"entry_point": {
"x": -38.23,
"y": 0.45,
"z": 2.1,
"lat": 1,
"lon": 1
},
"cable_length_m": 28.5
}
]
}
{
"group": {
"id": "group-001",
"name": "G1",
"rows": 2,
"cols": 8,
"panel": {
"id": "45a29071-b7b3-4dd7-b16f-5c00c0574707",
"name": "Aiko 445W N-Type ABC All Black Rigid Solar Panel",
"specification": {
"width": 113.4,
"height": 190.9,
"depth": 3.5
},
"orientation": "LANDSCAPE",
"mounting": {
"h_gap": 0.3,
"v_gap": 0.1
}
},
"origin": { "x": -39.456, "y": 0.561, "z": 1 },
"settings": {
"max_rows": 2,
"max_cols": 8,
"width": 1,
"height": 1
}
},
"racks": [
{
"rack_id": "R1",
"row": 1,
"offset": { "x": 0, "y": 0, "z": 0 },
"rack_type": "FLUSH",
"panel_columns": 8,
"panels_per_col": 1,
"faces": 1,
"rack_geometry": {
"face": 1,
"type": "SINGLE_TILT",
"base_length": 3.5,
"height": 0,
"hypotenuse_length": 3.5,
"tilt": { "rad": 0, "deg": 0 },
"azimuth": { "rad": 1.5708, "deg": 90 }
},
"mounting": {
"h_gap": 0.3,
"v_gap": 0.1,
"walkways": [],
"ballast": ""
},
"mounting_components": [
{
"span": { "face": 1, "start_col": 1, "end_col": 3, "length": 3.5 },
"components": [
{
"component_type": "RAIL",
"product_id": "SR-3500",
"sku": "2003273",
"name": "K2 SingleRail 36 - 3.5 m",
"specification": { "width": 35, "height": 3.6, "weight": 4.5 },
"quantity": 2,
"mounting_group": { "id": "MG-RAIL", "name": "Rails" }
},
{
"component_type": "CONNECTOR",
"product_id": "SR-CONN",
"sku": "2004207",
"name": "K2 SingleRail Connector",
"specification": { "width": 8, "height": 3.6, "weight": 0.3 },
"quantity": 1,
"mounting_group": { "id": "MG-CONN", "name": "Rail Connector" }
}
]
},
{
"span": { "face": 1, "start_col": 6, "end_col": 8, "length": 3.5 },
"components": [
{
"component_type": "RAIL",
"product_id": "SR-3500",
"sku": "2003273",
"name": "K2 SingleRail 36 - 3.5 m",
"specification": { "width": 35, "height": 3.6, "weight": 4.5 },
"quantity": 2,
"mounting_group": { "id": "MG-RAIL", "name": "Rails" }
}
]
}
]
},
{
"rack_id": "R2",
"row": 2,
"offset": { "x": 0, "y": 2.1, "z": 0 },
"rack_type": "FLUSH",
"panel_columns": 8,
"panels_per_col": 1,
"faces": 1,
"rack_geometry": {
"face": 1,
"type": "SINGLE_TILT",
"base_length": 3.5,
"height": 0,
"hypotenuse_length": 3.5,
"tilt": { "rad": 0, "deg": 0 },
"azimuth": { "rad": 1.5708, "deg": 90 }
},
"mounting": {
"h_gap": 0.3,
"v_gap": 0.1,
"walkways": [],
"ballast": ""
},
"mounting_components": [
{
"span": { "face": 1, "start_col": 1, "end_col": 8, "length": 3.5 },
"components": [
{
"component_type": "RAIL",
"product_id": "SR-3500",
"sku": "2003273",
"name": "K2 SingleRail 36 - 3.5 m",
"specification": { "width": 35, "height": 3.6, "weight": 4.5 },
"quantity": 2,
"mounting_group": { "id": "MG-RAIL", "name": "Rails" }
}
]
}
]
}
],
"panel_cells": [
{ "id": "C1_1", "row": 1, "col": 1, "rack_id": "R1", "rack_face": 1, "present": true, "removed_reason": "NONE", "string_id": "S1", "shade_factor": 1, "cache": { "world": { "x": -38.23, "y": 0.45, "z": 2.1 }, "bounds": { "w": 1.134, "h": 1.909 } } },
{ "id": "C1_2", "row": 1, "col": 2, "rack_id": "R1", "rack_face": 1, "present": true, "removed_reason": "NONE", "string_id": "S1", "shade_factor": 1, "cache": { "world": { "x": -37.1, "y": 0.45, "z": 2.1 }, "bounds": { "w": 1.134, "h": 1.909 } } },
{ "id": "C1_3", "row": 1, "col": 3, "rack_id": "R1", "rack_face": 1, "present": true, "removed_reason": "NONE", "string_id": "S1", "shade_factor": 1, "cache": { "world": { "x": -35.9, "y": 0.45, "z": 2.1 }, "bounds": { "w": 1.134, "h": 1.909 } } },
{ "id": "C1_4", "row": 1, "col": 4, "rack_id": "R1", "rack_face": 1, "present": false, "removed_reason": "OBSTRUCTION", "string_id": null, "shade_factor": 0, "cache": { "world": { "x": -34.7, "y": 0.45, "z": 2.1 }, "bounds": { "w": 1.134, "h": 1.909 } } },
{ "id": "C1_5", "row": 1, "col": 5, "rack_id": "R1", "rack_face": 1, "present": false, "removed_reason": "OBSTRUCTION", "string_id": null, "shade_factor": 0, "cache": { "world": { "x": -33.5, "y": 0.45, "z": 2.1 }, "bounds": { "w": 1.134, "h": 1.909 } } },
{ "id": "C1_6", "row": 1, "col": 6, "rack_id": "R1", "rack_face": 1, "present": true, "removed_reason": "NONE", "string_id": "S1", "shade_factor": 1, "cache": { "world": { "x": -32.3, "y": 0.45, "z": 2.1 }, "bounds": { "w": 1.134, "h": 1.909 } } },
{ "id": "C1_7", "row": 1, "col": 7, "rack_id": "R1", "rack_face": 1, "present": true, "removed_reason": "NONE", "string_id": "S1", "shade_factor": 1, "cache": { "world": { "x": -31.1, "y": 0.45, "z": 2.1 }, "bounds": { "w": 1.134, "h": 1.909 } } },
{ "id": "C1_8", "row": 1, "col": 8, "rack_id": "R1", "rack_face": 1, "present": true, "removed_reason": "NONE", "string_id": "S1", "shade_factor": 1, "cache": { "world": { "x": -29.9, "y": 0.45, "z": 2.1 }, "bounds": { "w": 1.134, "h": 1.909 } } },
{ "id": "C2_1", "row": 2, "col": 1, "rack_id": "R2", "rack_face": 1, "present": true, "removed_reason": "NONE", "string_id": "S2", "shade_factor": 1, "cache": { "world": { "x": -38.23, "y": 2.55, "z": 2.1 }, "bounds": { "w": 1.134, "h": 1.909 } } },
{ "id": "C2_2", "row": 2, "col": 2, "rack_id": "R2", "rack_face": 1, "present": true, "removed_reason": "NONE", "string_id": "S2", "shade_factor": 1, "cache": { "world": { "x": -37.1, "y": 2.55, "z": 2.1 }, "bounds": { "w": 1.134, "h": 1.909 } } },
{ "id": "C2_3", "row": 2, "col": 3, "rack_id": "R2", "rack_face": 1, "present": true, "removed_reason": "NONE", "string_id": "S2", "shade_factor": 1, "cache": { "world": { "x": -35.9, "y": 2.55, "z": 2.1 }, "bounds": { "w": 1.134, "h": 1.909 } } },
{ "id": "C2_4", "row": 2, "col": 4, "rack_id": "R2", "rack_face": 1, "present": true, "removed_reason": "NONE", "string_id": "S2", "shade_factor": 1, "cache": { "world": { "x": -34.7, "y": 2.55, "z": 2.1 }, "bounds": { "w": 1.134, "h": 1.909 } } },
{ "id": "C2_5", "row": 2, "col": 5, "rack_id": "R2", "rack_face": 1, "present": true, "removed_reason": "NONE", "string_id": "S2", "shade_factor": 1, "cache": { "world": { "x": -33.5, "y": 2.55, "z": 2.1 }, "bounds": { "w": 1.134, "h": 1.909 } } },
{ "id": "C2_6", "row": 2, "col": 6, "rack_id": "R2", "rack_face": 1, "present": true, "removed_reason": "NONE", "string_id": "S2", "shade_factor": 1, "cache": { "world": { "x": -32.3, "y": 2.55, "z": 2.1 }, "bounds": { "w": 1.134, "h": 1.909 } } },
{ "id": "C2_7", "row": 2, "col": 7, "rack_id": "R2", "rack_face": 1, "present": true, "removed_reason": "NONE", "string_id": "S2", "shade_factor": 1, "cache": { "world": { "x": -31.1, "y": 2.55, "z": 2.1 }, "bounds": { "w": 1.134, "h": 1.909 } } },
{ "id": "C2_8", "row": 2, "col": 8, "rack_id": "R2", "rack_face": 1, "present": true, "removed_reason": "NONE", "string_id": "S2", "shade_factor": 1, "cache": { "world": { "x": -29.9, "y": 2.55, "z": 2.1 }, "bounds": { "w": 1.134, "h": 1.909 } } }
],
"strings": [
{
"id": "S1",
"inverter_id": "INV1",
"mppt_channel": 1,
"max_voltage": 600,
"max_current": 12,
"max_power": 6000,
"actual_voltage": 540,
"actual_current": 11,
"actual_power": 5940,
"cabling": [
{
"rack_id": "R1",
"face": 1,
"start": { "row": 1, "col": 1 },
"end": { "row": 1, "col": 3 },
"length_m": 3.5,
"components": [
{
"component_type": "CABLE",
"product_id": "DC4",
"sku": "2004207",
"name": "4mm DC Cable",
"quantity": 6
}
]
},
{
"rack_id": "R1",
"face": 1,
"start": { "row": 1, "col": 6 },
"end": { "row": 1, "col": 8 },
"length_m": 3.5,
"components": [
{
"component_type": "CABLE",
"product_id": "DC4",
"sku": "2004207",
"name": "4mm DC Cable",
"quantity": 6
}
]
}
],
"entry_point": { "x": -38.23, "y": 0.45, "z": 2.1, "lat": 51.5, "lon": -0.12 },
"cable_length_m": 28.5
},
{
"id": "S2",
"inverter_id": "INV1",
"mppt_channel": 2,
"max_voltage": 600,
"max_current": 12,
"max_power": 6000,
"actual_voltage": 540,
"actual_current": 11,
"actual_power": 5940,
"cabling": [
{
"rack_id": "R2",
"face": 1,
"start": { "row": 2, "col": 1 },
"end": { "row": 2, "col": 8 },
"length_m": 3.5,
"components": [
{
"component_type": "CABLE",
"product_id": "DC4",
"sku": "2004207",
"name": "4mm DC Cable",
"quantity": 16
}
]
}
],
"entry_point": { "x": -38.23, "y": 2.45, "z": 2.1, "lat": 51.5, "lon": -0.12 },
"cable_length_m": 20
}
]
}
Object
span
Object
span_start
Object
row
string
col
string
span_end
Object
row
string
col
string
width
number
components
Array
Object
product_id
string
Example:
5cf86dc2-ae72-11f0-abdb-42010a9a0021
sku
string
Example:
2004207
name
string
Example:
K2 SingleRail Connector
specification
Object
width
integer
Example:
8
height
number
Example:
3.6
weight
number
Example:
0.3
quantity
integer
Example:
8
mounting_group
Object
id
string
Example:
c363cac3-ade6-11f0-abdb-42010a9a0021
name
string
Example:
Rail Connector
component_type
string
parent
Object
id
string
name
string
component_type
string
Example 1
Example 2
{
"span": {
"span_start": {
"row": "",
"col": ""
},
"span_end": {
"row": "",
"col": ""
},
"width": 1,
"components": [
{
"product_id": "5cf86dc2-ae72-11f0-abdb-42010a9a0021",
"sku": "2004207",
"name": "K2 SingleRail Connector",
"specification": {
"width": 8,
"height": 3.6,
"weight": 0.3
},
"quantity": 8,
"mounting_group": {
"id": "c363cac3-ade6-11f0-abdb-42010a9a0021",
"name": "Rail Connector",
"component_type": "",
"parent": {
"id": "",
"name": "",
"component_type": ""
}
}
}
]
}
}
{
"group": {
"id": "group-big-dual",
"name": "G1",
"rows": 13,
"cols": 20,
"panel": {
"id": "45a29071-b7b3-4dd7-b16f-5c00c0574707",
"name": "Aiko 445W N-Type ABC All Black Rigid Solar Panel",
"specification": {
"width": 113.4,
"height": 190.9,
"depth": 3.5
},
"orientation": "LANDSCAPE",
"mounting": {
"h_gap": 0.01,
"v_gap": 0.20
}
},
"origin": {
"x": -17.70885231350297,
"y": -2.7544326212497587,
"z": 0.0
},
"settings": {
"max_rows": 13,
"max_cols": 20
}
},
"racks": [
{
"rack_id": "R1",
"row": 1,
"rack_type": "DUAL_TILT",
"faces": 2,
"panel_columns": 20,
"rack_geometry": {
"type": "DUAL_TILT",
"base_length": 2.2407,
"height": 0.6,
"hypotenuse_length": 2.32,
"tilt": { "rad": 0.261799, "deg": 15 },
"azimuth_face_1": { "deg": 85 },
"azimuth_face_2": { "deg": 265 }
},
"mounting": { "h_gap": 0.2, "v_gap": 0.1 }
},
{
"rack_id": "R2",
"row": 2,
"rack_type": "DUAL_TILT",
"faces": 2,
"panel_columns": 20,
"rack_geometry": {
"type": "DUAL_TILT",
"base_length": 2.2407,
"height": 0.6,
"hypotenuse_length": 2.32,
"tilt": { "rad": 0.261799, "deg": 15 },
"azimuth_face_1": { "deg": 85 },
"azimuth_face_2": { "deg": 265 }
},
"mounting": { "h_gap": 0.2, "v_gap": 0.1 }
},
{
"rack_id": "R3",
"row": 3,
"rack_type": "DUAL_TILT",
"faces": 2,
"panel_columns": 20,
"rack_geometry": {
"type": "DUAL_TILT",
"base_length": 2.2407,
"height": 0.6,
"hypotenuse_length": 2.32,
"tilt": { "rad": 0.261799, "deg": 15 },
"azimuth_face_1": { "deg": 85 },
"azimuth_face_2": { "deg": 265 }
},
"mounting": { "h_gap": 0.2, "v_gap": 0.1 }
},
{
"rack_id": "R4",
"row": 4,
"rack_type": "DUAL_TILT",
"faces": 2,
"panel_columns": 20,
"rack_geometry": {
"type": "DUAL_TILT",
"base_length": 2.2407,
"height": 0.6,
"hypotenuse_length": 2.32,
"tilt": { "rad": 0.261799, "deg": 15 },
"azimuth_face_1": { "deg": 85 },
"azimuth_face_2": { "deg": 265 }
},
"mounting": { "h_gap": 0.2, "v_gap": 0.1 }
},
{
"rack_id": "R5",
"row": 5,
"rack_type": "DUAL_TILT",
"faces": 2,
"panel_columns": 20,
"rack_geometry": {
"type": "DUAL_TILT",
"base_length": 2.2407,
"height": 0.6,
"hypotenuse_length": 2.32,
"tilt": { "rad": 0.261799, "deg": 15 },
"azimuth_face_1": { "deg": 85 },
"azimuth_face_2": { "deg": 265 }
},
"mounting": { "h_gap": 0.2, "v_gap": 0.1 }
},
{
"rack_id": "R6",
"row": 6,
"rack_type": "DUAL_TILT",
"faces": 2,
"panel_columns": 20,
"rack_geometry": {
"type": "DUAL_TILT",
"base_length": 2.2407,
"height": 0.6,
"hypotenuse_length": 2.32,
"tilt": { "rad": 0.261799, "deg": 15 },
"azimuth_face_1": { "deg": 85 },
"azimuth_face_2": { "deg": 265 }
},
"mounting": { "h_gap": 0.2, "v_gap": 0.1 }
},
{
"rack_id": "R7",
"row": 7,
"rack_type": "DUAL_TILT",
"faces": 2,
"panel_columns": 20,
"rack_geometry": {
"type": "DUAL_TILT",
"base_length": 2.2407,
"height": 0.6,
"hypotenuse_length": 2.32,
"tilt": { "rad": 0.261799, "deg": 15 },
"azimuth_face_1": { "deg": 85 },
"azimuth_face_2": { "deg": 265 }
},
"mounting": { "h_gap": 0.2, "v_gap": 0.1 }
},
{
"rack_id": "R8",
"row": 8,
"rack_type": "DUAL_TILT",
"faces": 2,
"panel_columns": 20,
"rack_geometry": {
"type": "DUAL_TILT",
"base_length": 2.2407,
"height": 0.6,
"hypotenuse_length": 2.32,
"tilt": { "rad": 0.261799, "deg": 15 },
"azimuth_face_1": { "deg": 85 },
"azimuth_face_2": { "deg": 265 }
},
"mounting": { "h_gap": 0.2, "v_gap": 0.1 }
},
{
"rack_id": "R9",
"row": 9,
"rack_type": "DUAL_TILT",
"faces": 2,
"panel_columns": 20,
"rack_geometry": {
"type": "DUAL_TILT",
"base_length": 2.2407,
"height": 0.6,
"hypotenuse_length": 2.32,
"tilt": { "rad": 0.261799, "deg": 15 },
"azimuth_face_1": { "deg": 85 },
"azimuth_face_2": { "deg": 265 }
},
"mounting": { "h_gap": 0.2, "v_gap": 0.1 }
},
{
"rack_id": "R10",
"row": 10,
"rack_type": "DUAL_TILT",
"faces": 2,
"panel_columns": 20,
"rack_geometry": {
"type": "DUAL_TILT",
"base_length": 2.2407,
"height": 0.6,
"hypotenuse_length": 2.32,
"tilt": { "rad": 0.261799, "deg": 15 },
"azimuth_face_1": { "deg": 85 },
"azimuth_face_2": { "deg": 265 }
},
"mounting": { "h_gap": 0.2, "v_gap": 0.1 }
},
{
"rack_id": "R11",
"row": 11,
"rack_type": "DUAL_TILT",
"faces": 2,
"panel_columns": 20,
"rack_geometry": {
"type": "DUAL_TILT",
"base_length": 2.2407,
"height": 0.6,
"hypotenuse_length": 2.32,
"tilt": { "rad": 0.261799, "deg": 15 },
"azimuth_face_1": { "deg": 85 },
"azimuth_face_2": { "deg": 265 }
},
"mounting": { "h_gap": 0.2, "v_gap": 0.1 }
},
{
"rack_id": "R12",
"row": 12,
"rack_type": "DUAL_TILT",
"faces": 2,
"panel_columns": 20,
"rack_geometry": {
"type": "DUAL_TILT",
"base_length": 2.2407,
"height": 0.6,
"hypotenuse_length": 2.32,
"tilt": { "rad": 0.261799, "deg": 15 },
"azimuth_face_1": { "deg": 85 },
"azimuth_face_2": { "deg": 265 }
},
"mounting": { "h_gap": 0.2, "v_gap": 0.1 }
},
{
"rack_id": "R13",
"row": 13,
"rack_type": "DUAL_TILT",
"faces": 2,
"panel_columns": 20,
"rack_geometry": {
"type": "DUAL_TILT",
"base_length": 2.2407,
"height": 0.6,
"hypotenuse_length": 2.32,
"tilt": { "rad": 0.261799, "deg": 15 },
"azimuth_face_1": { "deg": 85 },
"azimuth_face_2": { "deg": 265 }
},
"mounting": { "h_gap": 0.2, "v_gap": 0.1 }
}
],
"panel_cells": [
/* total 520 panels (13 racks × 20 cols × 2 faces) */
{ "id": "C1_1_F1", "row": 1, "col": 1, "face": 1, "rack_id": "R1", "present": true },
{ "id": "C1_1_F2", "row": 1, "col": 1, "face": 2, "rack_id": "R1", "present": true },
{ "id": "C1_2_F1", "row": 1, "col": 2, "face": 1, "rack_id": "R1", "present": true },
{ "id": "C1_2_F2", "row": 1, "col": 2, "face": 2, "rack_id": "R1", "present": true }
/* ... continue programmatically for 20 cols × 13 rows × 2 faces ... */
],
"strings": [
{
"id": "S1",
"inverter_id": "INV1",
"mppt_channel": 1,
"face": 1,
"racks": ["R1", "R2", "R3", "R4", "R5", "R6", "R7"],
"entry_point": { "x": -17.7, "y": -2.75, "z": 1, "lat": 51.5, "lon": -0.12 }
},
{
"id": "S2",
"inverter_id": "INV1",
"mppt_channel": 2,
"face": 2,
"racks": ["R8", "R9", "R10", "R11", "R12", "R13"],
"entry_point": { "x": -17.7, "y": -2.75, "z": 1, "lat": 51.5, "lon": -0.12 }
}
]
}