[APP][Pro] PV Forecast: solar forecast that measures your roof and learns from your panels
PV Forecast tells you what your solar panels will produce today and tomorrow, every 15 minutes and for every roof plane apart. It measures your roof from public height data, reads your inverter, and keeps comparing its forecast with what your panels really do and with the sunlight a satellite saw on your roof. The longer it runs, the closer it gets.
Free, no account, no API key, no cloud of its own: everything runs on your Homey.
App Store: PV Forecast | Homey
Test version (new versions before they reach the store): PV Forecast | Homey
My other apps
MCP AI Bridge: control Homey with any AI assistant (Claude, ChatGPT, Gemini, Copilot, Cursor or Mistral)
Recycle België: Belgian waste collection calendar with Flow cards, iCal export and quiet hours
MG iSMART: battery, range, charging and climate of your MG in Homey
Why I built it
My roof has an east plane and a west plane, one string each. The forecast app I used treated it as one roof facing one way, and I had to guess the tilt and direction myself. On sunny days it was off by a third, every day, and it never noticed. A forecast you can’t trust is useless for the decisions that matter: charging the car, running the dishwasher, filling the home battery from the grid at night or not.
So PV Forecast starts from the roof itself, and it keeps checking itself against what your panels actually produce.
What it does
Measures your roof
- Tilt and direction of every roof plane from public LiDAR height data, together with the trees and buildings around the roof that block the low sun:
- Belgium: Flanders and Brussels (Digitaal Vlaanderen)
- the Netherlands (PDOK: AHN and BAG)
- Germany: North Rhine-Westphalia, Hesse, Saxony-Anhalt, Mecklenburg-Western Pomerania and Brandenburg
- France, where IGN’s LiDAR HD is ready
- Austria: Tyrol and Styria
- Norway (Kartverket), Czechia (ČÚZK) and England (Environment Agency)
- Everywhere else the direction comes from the building outline in OpenStreetMap and you fill in the tilt. Not sure? Tap one of the example roofs (10°, 20°, 35° or 45°), and after a week the app works it out from your own production.
- Finds your address in your own country, or by coordinates or a Google Maps link when an address is not found.
- Up to eight roof planes per installation, and as many installations as you have.
Forecasts for your panels
- Every 15 minutes from Open-Meteo, calculated on the tilt and direction of each roof plane separately.
- Several weather models at once. The models that turn out closest for your roof get more weight, and that per weather type: the model that does best under broken clouds weighs most on a cloudy hour.
- Panel temperature, the inverter limit and snow on the panels are part of the forecast.
- The trees and buildings around your roof lower the forecast when the sun is behind them.
- Three values for tomorrow: expected, cautious (reached 9 days out of 10) and optimistic.
- How sunny a day will be, as a share of a clear day. 40 % is grey in every season, so one Flow works the whole year.
- Works with other energy apps: Homey EMS and other apps that read meter_power.today and meter_power.tomorrow can use PV Forecast as their forecast source.
Learns from your own production
- Reads your inverter directly: the power of each string (PV1, PV2…) or voltage and current. Works with Huawei, SolarEdge, Growatt, SMA, Fronius, Enphase, Deye via SolarAssistant and any other inverter that shows its values in Homey. Several inverters are added up. String readings are taken after the inverter loss, so they compare fairly with the forecast.
- No inverter in Homey? The app reads the solar power from Homey Energy, or you send it with a Flow card.
- Corrects itself per position of the sun, not per hour of the day. A tree that shades your roof at 3 pm in March shades it at 4 pm in June, and the correction moves along with the seasons. It starts after three days and gets sharper every sunny day.
- Per weather type too: clear, broken clouds or grey. Weather models are often too sunny under broken clouds; that bias is taken out without touching clear days.
- Learns from the forecast that counts: the one of the evening before, which is what your evening Flows decide on.
- Checks itself against the satellite: the sunlight that actually reached your roof, measured from space every 10 minutes. That shows whether a miss came from the weather or from the panels.
- Nowcast: what the panels did in the last hour steers the next hours. A grey morning the weather models didn’t see coming is corrected within the hour.
- Checks your settings: after two or three clear days it suggests the peak power, after a week the tilt and direction, it spots the limit of your inverter, and it tells you when PV1 and PV2 look swapped.
- No AI involved: plain statistics, and every number can be checked in the Log.
How accurate is it?
You see it yourself, in two values on the device: the accuracy of the forecast of the evening before and of the forecast of that morning, each over the last seven days. The app settings show it per day, per month and per season.
A forecast for one address can’t be equally good all year. Grey winter days are harder than summer days, so each season has its own aim:
summer 85 to 95 %
spring 80 to 90 %
autumn 70 to 85 %
winter 60 to 80 %
These are guide values, not a promise for your roof. A single grey day can score much lower: on a day with 4 kWh, a miss of 1 kWh is already 25 %. Judge it on a week, and give the app two or three weeks to learn.
Keeps an eye on your panels
- A string drops out or one roof plane makes much less than the others: an alarm and a Flow trigger with the name of the roof plane.
- Clearly less than expected today: a Flow trigger, so you can act on it. When the satellite shows the sun itself was weak, the alarm clears by itself.
- A day below normal: at 22:30, when the panels made clearly less than they normally make in the sunlight that actually reached your roof, a Flow trigger fires. Bad weather never sets this one off.
- Slow loss of yield over weeks of fine weather: time to clean the panels.
- A linked meter that is not your panels, such as a grid meter, a plug or a value in kW instead of W: the checklist tells you.
Surplus and home battery
Link your P1 meter (or let the app use the one in Homey Energy) and your home battery:
- Expected surplus now and for the rest of today: forecast minus what your house normally uses at that hour.
- Battery plan: will the battery be full today, at what time, and how many kWh it still misses to be full by tomorrow evening.
- Battery plan on the cautious forecast: the same, counting on the value that is reached 9 days out of 10. Use it when a wrong guess costs money, such as charging from the grid at night.
- A lowest charge per battery, such as the 10 % many inverters keep, so the plan never counts on charge the battery won’t give.
- Several batteries count as one, also batteries that report charging and discharging separately (Huawei, for one).
The sun on your house
- When the sun shines on a roof plane, and when it leaves it.
- When the sun goes behind the trees or buildings around your roof, measured from the height map.
- When direct sunlight falls on a window or wall of your choice: the sun has to be in front of it, not behind an obstacle, and your panels have to show it is really sunny. Made for sunscreens.
- Minutes on every card, so a passing cloud does not move the sunscreen up and down. The count carries on through an app update.
Easy to fix afterwards
- Repair: open the device, tap the gear icon, then Maintenance, Repair. The setup screen opens again with everything filled in: change the address, the roof planes or the inverter limit, and what the app learned is kept. Names and string links move along with their roof plane.
- Restore previous: applied a roof by mistake? One button puts the previous roof, location and inverter limit back, with what the app had learned then.
Installing it, step by step
- Install the app from the App Store.
- Open Devices, tap +, choose PV Forecast and then Solar installation.
- Where are your panels? The app looks up the roof at your Homey’s location by itself and tells you which services it asks. Panels somewhere else? Type that address and pick it from the list. Not found? Paste the coordinates of your roof (long-press it in a map app) or a Google Maps link, or tap I’ll fill it in myself.
- Your panels. Each roof plane gets a card with its tilt and direction, and a name if you like (Main roof, Garage). Enter the peak power per plane: 10 panels of 440 Wp make 4.4 kWp, you find it on your quote or invoice. Leave a plane empty when it has no panels. The expected production for today and tomorrow shows while you type.
- Your inverter (optional). The app looks for it among your Homey devices and proposes which string (PV1, PV2) belongs to which roof plane, using the position of the sun. Check it, and enter the maximum power of your inverter if you know it.
- Name it and save.
- Open the app settings (Apps, PV Forecast, Settings). The checklist at the top of the Overview tab shows what is set and what is still open. Not linked your inverter yet? Do it on the Measurement tab. A home battery or P1 meter goes there too.
- Put a widget on your dashboard and make your first Flow. The Help tab has five step by step examples with the exact card names.
Good to know while you set it up
- One device per inverter. An east and a west roof on one inverter are two roof planes in the same Solar installation, not two installations.
- All installations is only for two or more installations, for example a second inverter on the garage. It adds them up and has its own Flow cards. With one installation you can skip it.
- Without any measurement the forecast still works, it just doesn’t learn.
- Everything can be changed later with Repair, in the device settings or in the app settings.
Flow cards
72 cards in all. The ones of a Solar installation work per roof, the ones of All installations on the sum of your roofs.
Solar installation: When (19)
- The forecast was updated
- Expected power goes above or below a level
- Today’s best window starts
- One of today’s sunniest hours starts
- What is still to come today drops below a level
- Tomorrow’s forecast changed
- Expected surplus goes above a level
- Measured power stays above or below a level, for a number of minutes
- Today’s measured production reaches a level
- The panels start or stop producing
- The sun starts or stops shining on a roof plane
- The sun goes behind or comes out from behind an obstacle
- Direct sunlight starts or stops on a window or wall
- A roof plane makes much less than the others
- The panels produce clearly less than expected
- The panels did worse than normal today
- The panels may need cleaning
- Snow on the panels is expected, or they are clear again
- Daily report, with a ready sentence for a push message
Solar installation: And (18)
- Tomorrow’s production is above a level (expected, cautious or optimistic)
- Tomorrow morning or afternoon is above a level
- A day reaches a share of a clear day
- What is still to come today is above a level
- Production between two times is above a level
- Expected power now is above a level
- Measured power is above or below a level, for at least a number of minutes
- More than a level was measured today
- It is within today’s best window
- The current hour is one of today’s sunniest hours
- Expected surplus stays above a level for a while
- The home battery will be full today
- The sun shines on a roof plane
- The sun is behind an obstacle
- Direct sunlight falls on a window or wall
- A roof plane makes much less than the others
- The panels produce less than expected
- Snow is expected on the panels
Solar installation: Then (16)
- Find the best window
- Find the best start for an appliance
- Find the cheapest start for an appliance (sun and price)
- Battery plan
- Battery plan on the cautious forecast
- Get expected production for the coming hours
- Get expected production between two times
- Get how sunny a day will be
- Get the position of the sun
- Get the forecast as JSON
- Report measured solar power
- Report solar energy meter
- Report measured power of one roof plane
- Report voltage and current of one roof plane
- Refresh the forecast now
- Forget what was learned
All installations (19)
When
- Total expected power goes above or below a level
- Measured power stays above or below a level
- Today’s measured production reaches a level
- What is still to come today drops below a level
- Today’s best window starts
- Daily report of all installations, at a time you choose
And
- Tomorrow’s total production is above a level
- Tomorrow morning or afternoon is above a level
- A day reaches a share of a clear day
- What is still to come today is above a level
- Expected power now is above a level
- Measured power is above or below a level
- More than a level was measured today
- It is within today’s best window
- An installation makes clearly less than expected
Then
- Find the best window for all installations
- Find the best start for an appliance over all installations
- Get the expected production of all installations for the next hours
- Get the expected production of all installations between two times
A few ideas to start with
Start the dishwasher in the best 2-hour window for 2000 W.
Charge the car once the measured power has been above 2000 W for 10 minutes.
At 22:00, charge the home battery from the grid when the battery plan on the cautious forecast still misses more than 3 kWh.
Lower the sunscreen when direct sunlight has been falling on the south-west window for 15 minutes.
Raise it again when the sun goes behind the trees of the neighbours.
A push message when a roof plane lags behind, with its name and percentage.
A push message when the panels did worse than normal today, to check the inverter.
A push message at 20:00 with today’s result and tomorrow’s expectation.
On the dashboard and on the device
Six widgets:
- Forecast: today and tomorrow per hour, stacked per roof plane, with the likely range and what was measured, plus the last week.
- Today: one big number and what is still to come, with a countdown to the best window.
- Roof planes: expected against measured per plane, red when one falls behind.
- Week: seven days of expected against measured, with the accuracy.
- Home battery: the expected charge until tomorrow evening, with a cautious line for a grey day and the time it gets full.
- Sun on the roof: per roof plane when the sun stands on it today, with a marker for now and the moments it is behind trees or buildings.
And on the device itself:
charts of today, tomorrow, yesterday and the last 7 days, with the likely range, the forecast and what was measured. All installations has them too, added up. Your Homey draws them itself, so no figures go to an outside chart service.
App settings
- Overview:
- the setup checklist
- expected against measured per day
- the accuracy per day, against the aim of the season
- a season overview, with the same season a year earlier
- a month overview with the best and weakest day
- a monthly report, including how your panels did in the sunlight the satellite saw
- the horizon, surplus and battery, and hourly data to copy
- Measurement: which inverter, meter and battery feed the app, with the live value next to every option and a short guide.
- Check roof: suggestions for tilt, direction, peak power and inverter limit from your measurements, applied in one click.
- Address and roof: look up the roof of an address again, and restore the previous roof.
- Log: what was fetched, what it learned, what went wrong.
- Help: short answers to the usual questions (also “I filled something in wrong, how do I fix it?” and “What do the accuracy figures mean?”) and five Flow examples.
If something looks off, copy the diagnostics into a reply here. Device names are left out of that copy and the location is rounded to about 1 km.
Good to know
- Homey Pro (firmware 12.1 or newer).
- English, Dutch, German, French, Norwegian, Swedish and Danish.
- The app asks for access to your devices only to read the inverter, meters and home battery you choose, and Homey Energy. It never switches or changes anything.
- What leaves your Homey: the location, rounded to about 1 km, goes to Open-Meteo for the weather and the satellite data. Only when you look up a roof does the address or location go to OpenStreetMap and to the open height map of your region (the Help tab lists them). No tracking, no statistics.
- Weather data by Open-Meteo.com (CC BY 4.0), satellite data from EUMETSAT and DWD through Open-Meteo. Height and building data from Digitaal Vlaanderen (DHM Vlaanderen II, GRB), PDOK (AHN, BAG), Geobasis NRW, HVBG Hessen, © GeoBasis-DE / LVermGeo LSA, © GeoBasis-DE/M-V, © GeoBasis-DE/LGB, IGN (LiDAR HD), Land Tirol, Land Steiermark, © Kartverket, © ČÚZK and the Environment Agency (contains Environment Agency data, © Crown copyright). Addresses and building outlines © OpenStreetMap contributors (ODbL).
- Free and staying free. No account, no subscription.
Coming from another forecast app?
Add PV Forecast next to it and let both run for two or three weeks. The week widget and the accuracy values show you how close each one gets. Your Flows can switch over one card at a time.
Changelog
Show all versions
2.4.1
- Now in the Homey App Store.
- After the roof is measured, the setup screen says it comes from height data of the building, not from your panels, and how to point it to another building (address, Google Maps link or coordinates).
- The optimistic estimate is no longer higher than your panels can give under a clear sky.
- New photos and a shorter description in the App Store, and the Solar installation driver has its own icon.
2.4.0
- Charts on the device itself: today, tomorrow, yesterday and the last 7 days, drawn on your Homey. Also on All installations.
- The widgets have less space on the sides and top, and the bottom is no longer cut off.
2.3.0
- Learns per weather type and from the forecast of the evening before, weighs the weather models per weather type and checks itself against satellite measurements of the real sun.
- String readings are taken after the inverter loss, so the learning no longer treats that loss as a forecast error.
- A second accuracy value for the morning forecast, a chart of the accuracy per day against an aim per season, and a season overview next to the month overview, with the same season a year earlier.
- New widgets: home battery and sun on the roof.
- New Flow cards: battery plan on the cautious forecast, and the panels did worse than normal today.
- An alarm over all panels clears by itself when the satellite shows it was the weather.
- Less work for your Homey every hour: it learns and saves only when something new came in.
2.2.3
- Energy apps such as Homey EMS can use PV Forecast as their forecast source (meter_power.today and meter_power.tomorrow).
- The Log tab lists Insights left over from version 1.x and explains how to remove them.
- A lowest charge per battery (for example 10%): the battery plan no longer lets the battery run below it.
- Repair works again: the setup screen opens with your installation filled in.
2.2.2
- A name field per roof plane while adding the installation and with Repair.
2.2.1
- Solax Modbus and other inverters whose values have names of their own are now offered, also with an on/off switch.
- A peak power entered in Wp (4400 instead of 4.4) is refused while adding, and corrected on existing devices.
- Fewer warnings in the Homey log.
2.2.0
- Repair a device to change the address, roof or inverter limit without losing what was learned; restore the previous roof in one tap.
- Coordinates or a Google Maps link work in the address field.
- Flow cards for the sun on your house: on a roof plane, behind an obstacle, direct sunlight on a window or wall, with minutes.
- Measured power held for minutes, today’s measured total, panels starting and stopping, how sunny a day is, a lagging roof plane, snow, sun position.
- All installations: everyday cards, a daily report at your own time, expected energy for the next hours or between two times, and the best start for an appliance.
- A warning when the linked meter does not look like solar panels.
- Hours are no longer lost when an inverter holds a string value still (Huawei).
- Help tab: four questions and two examples more.
2.1.2
- Addresses with a house number of four digits are now found.
2.1.1
- The Check roof tab shows no measured tilt and direction until there are enough sunny hours.
2.1.0
- Roof and horizon measured from open height data in five German states, France (LiDAR HD), Tyrol and Styria, Norway, Czechia and England.
- Help to find tilt and direction yourself, with example roofs to tap.
- When OpenStreetMap does not answer, a detached house is found in the height map itself.
- Norwegian, Swedish and Danish.
- Help tab: where the app measures the roof, and with which service.
2.0.0
- Finds your inverter while pairing and links each string to the right roof plane by the sun.
- Several inverters and home batteries, added up; with nothing linked the app reads Homey Energy.
- Surplus and battery planning from your P1 meter, also with batteries that report charging and discharging separately.
- Horizon around the roof measured from LiDAR in Flanders, Brussels and the Netherlands.
- Optimistic estimate next to the expected and cautious one.
- Suggestions for the inverter limit and the peak power from your measurements.
- New Flow cards: sunniest hours, what is still to come, tomorrow’s change, best start for an appliance, expected surplus, battery plan, forecast as JSON.
- Three more widgets: today, roof planes and week; widget settings.
- Up to eight roof planes per installation, and an All installations device.
- App settings: setup checklist, Help tab, chart per day, monthly report, hourly data to copy, dark theme.
- One name per roof plane everywhere, all messages in your language, fewer values on the device tile, and the app says what it sends to which service.
1.0.4
- Smaller fixes to the App Store page.
1.0.3
- The Measurement tab explains how to pick your inverter and what each source means.
- The roof tab asks for the country first.
1.0.2
- The settings page fits on a phone: every plane is a card, the overview explains each value, the roof search has clear labels.
1.0.1
- Simpler pairing: the roof at your Homey’s location is measured right away, every field has a label, unit and example, and the expected production updates as you type.
1.0.0
- First release: 15-minute forecast from Open-Meteo per roof plane, roof measured from your address, learning per sun position, string and soiling alarms, daily report and a dashboard widget.
Questions, ideas or a roof the measurement gets wrong? Post them here. A screenshot of the Check roof tab or a copy of the diagnostics helps a lot. ![]()

