Measured buildings
Roof shapes, ridge and eave heights from the state survey, not extrapolated from storey counts. Where no survey exists, OSM footprints are extruded, and the result says so.
Shading · Layout · Yield
Shinetime takes the building and its neighbours from the official LoD2 models, computes the shading hour by hour across the year and places the modules where they really fit. Every assumption is stated next to the number.
In the browser, nothing to install. Any address, not just the precomputed cities.
16
German states connected with official LoD2 building models
8,760h
hours a year, computed for every module on its own
50km
of terrain horizon around the building, with earth curvature and refraction
4%
declared model gap to PVGIS, not calibrated away
How you work with it
Four steps, and you can step in between each: place a tree, move a module, rewire a string. Everything recalculates at once.
The building and its neighbours come from the official LoD2 models: real roof shapes, surveyed ridge and eave heights, the terrain beneath from the DGM1 elevation model. Trees from the cadastre and OpenStreetMap are already there; you place the rest yourself.
Drag time across the day or the year and see which neighbour falls on which roof face, and when. Behind the picture, the same astronomy that draws the shadow traces the ray to every module, hour by hour.
One click on the roof face and Shinetime lays out real modules: in rows along the eave, around the chimney and the skylight, with an edge clearance. Move, delete, place by hand; everything snaps. Every module gets its own year.
Strings on the MPP inputs, an inverter from the catalogue, optimisers and microinverters compared. Plus household, battery, feed-in rules, and at the end an A4 report with every assumption.
What is inside
Dense housing, a neighbour’s gable, trees, a slope. Where a flat shading discount either promises too much or gives too much away.
Roof shapes, ridge and eave heights from the state survey, not extrapolated from storey counts. Where no survey exists, OSM footprints are extruded, and the result says so.
The elevation model of the surroundings is included, and the horizon is sampled out to 50 km. A ridge 15 km away takes hours in winter, and those hours are missing from the number too.
Trees from the tree register and OpenStreetMap are already in the model. What is missing you place yourself: lime, oak, birch, maple, spruce, pine. Every ray is tested against the real crown, in winter against the bare branches.
The roof face does not get a number, every module gets its own. Cell strings with bypass diodes are modelled, the weakest module is named, and on the roof you see the modules coloured by yield.
Strings per roof plane, in parallel on the inputs, the smallest inverter in the catalogue that carries them. Voltage window checked at minus 10 and 70 degrees. Optimisers and microinverters compared in kWh and in euros.
Load profile, six battery sizes compared over twenty years, the EEG feed-in tariff by system size and the 60 percent cap without a smart meter computed hour by hour. The A4 report names every assumption.
Calculated, not estimated
The irradiance model is ported from pvlib so it can be tested against it: Perez diffuse model, Martin-Ruiz reflection, Faiman cell temperature, Huld power model with the PVGIS coefficients. The tests hold the results of pvlib and PVGIS as fixed values.
Berlin, 30° south, SARAH3 typical year. Total 1,081 kWh/kWp.
Jan: 28 kWh/kWp; Feb: 47 kWh/kWp; Mar: 90 kWh/kWp; Apr: 126 kWh/kWp; May: 146 kWh/kWp; Jun: 148 kWh/kWp; Jul: 150 kWh/kWp; Aug: 132 kWh/kWp; Sep: 100 kWh/kWp; Oct: 62 kWh/kWp; Nov: 30 kWh/kWp; Dec: 22 kWh/kWp
Example run on a baked weather cell. The monthly split is illustrative, the annual total is the computed one; PVGIS gives 1,041 for the same site.
| Category | kWh/kWp |
|---|---|
| Jan | 28 |
| Feb | 47 |
| Mar | 90 |
| Apr | 126 |
| May | 146 |
| Jun | 148 |
| Jul | 150 |
| Aug | 132 |
| Sep | 100 |
| Oct | 62 |
| Nov | 30 |
| Dec | 22 |
Berlin 2020, 30° south, tilted hourly series. Factor Shinetime / PVGIS.
Beam irradiance: Factor 0.9998; Diffuse irradiance: Factor 1.0300; Plane of array, total: Factor 1.0125; Final power: Factor 1.0410
Perez runs slightly high on the diffuse share; PVGIS uses Muneer and a spectral correction that is not modelled. The 4% at the end is the declared model gap.
| Quantity | Factor | Deviation |
|---|---|---|
| Beam irradiance | 0.9998 | -0.02% |
| Diffuse irradiance | 1.0300 | +3.0% |
| Plane of array, total | 1.0125 | +1.25% |
| Final power | 1.0410 | +4.1% |
The same modules, tight rows, loss against every module on its own.
Every module on its own: 0.0 %; One string per row: 0.9 %; One string for all: 3.8 %
Test case with rows deliberately set too close: individually 1,058, one string per row 1,049, one string across all 1,018 kWh/kWp. On an open roof, strings, optimisers and microinverters lie within one percent.
| Category | Loss in % |
|---|---|
| Every module on its own | 0.0 |
| One string per row | 0.9 |
| One string for all | 3.8 |
Frankly
A yield figure without its limits is worthless in a consultation, because you cannot defend it. So the limits are stated here and in the report.
See for yourself
Enter an address, click the roof, the modules are placed. What you see then, you can hand to your customer as it is.