pvnodepvnode
  • pvnode.com
  • Studio
  • Pricing
  • Deutsch
  • English
  • API Reference
Product
  • Studio
  • API Documentation
  • API Reference
  • Pricing
Resources
  • Quickstart
  • Integrations
Legal
  • Imprint
  • Privacy
  • Terms
  • Licenses
pvnodepvnode

© 2026 pvnode. All rights reserved.

linkedin
IntroductionQuickstartMigration from V1
Sites & Data
    Sites & StringsForecastsHistorical DataData UploadCalibration & Monitoring
Guides
Enterprise
Integrations
    Build Your OwnHome AssistantevccSolectrusioBroker
Data Sources
(Archive) V1 API
powered by Zudoku
Integrations

Connect pvnode with Home Assistant

pvnode has an official Home Assistant integration. It uses the V2 API, adds a device per site and per roof surface, feeds the Energy Dashboard, and manages its own polling so it never spends more of your request quota than your plan actually produces.

Setup is two steps: paste an API key, pick your site from a list.

Installation

The integration is not (yet) part of the default HACS catalogue, so it is added as a custom repository.

  1. Install HACS if you don't have it yet.
  2. HACS → Integrations → ⋮ → Custom repositories
  3. Add https://github.com/darwindaume/ha-pvnode with the category Integration.
  4. Install pvnode, then restart Home Assistant.

Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.

The button opens the repository directly in your own Home Assistant. It works from the device you are reading this on, as long as My Home Assistant is set up in your instance.

Prefer a manual install? Copy custom_components/pvnode from the repository into your config/custom_components/ directory and restart. HACS is only the convenient path — and the one that tells you about updates.

Setup

  1. Settings → Devices & Services → Add Integration → pvnode
  2. Paste your API key (create one here).
  3. Choose your site from the list. With a single site the step is skipped.

Open your Home Assistant instance and start setting up a new integration.

There is nothing else to configure. Forecast horizon and refresh cadence follow from your pvnode plan and are steered by the API itself — the integration asks exactly when a new computation is available, and survives a restart without a single extra request.

Add the integration again for each additional site.

Changing plan

Forecast horizon and the uncertainty band adjust themselves on the next refresh — no reload needed. The band sensors appear after the first forecast update, not immediately after setup.

If you don't want to wait, press "Refresh forecast now" on the pvnode device. Home Assistant's own Reload does not help here: it falls back to the stored forecast and deliberately avoids a request while that one is still current.

Every press counts against your request quota, even when the server returns the same computation. After a plan change it is different — the server-side cache is invalidated, so a genuine recomputation happens.

Sensors

Each site becomes a device, each roof surface a sub-device.

Site

SensorUnitMeaning
Power forecast nowWforecast for the current 15-minute slot
Power forecast in 30 minutes / 1 hourWfor short-term automations
Peak power today / tomorrowWdaily maximum
Time of peak power today / tomorrowtimewhen the maximum occurs
Clearsky power nowWreference without clouds
Energy forecast today / tomorrow / in N dayskWhdaily total, straight from pvnode
Clearsky energy todaykWhdaily total without clouds
Remaining yield todaykWhwhat is still to come from now on
Energy this / next hourWhshort-term window
Temperature forecast, weather code°C, WMOsite-wide

The number of day sensors follows your plan.

Disabled by default, individually enabled in the entity registry: wind speed, relative humidity, precipitation, snow water equivalent, and global, diffuse and beam irradiance.

Only on a suitable plan: power and energy forecast as a (min)/(max) pair.

Roof surface

Power forecast now, energy forecast today and tomorrow, plus tilted irradiance before and after shading (disabled by default).

Daily energy per roof surface is derived — pvnode reports daily totals for the site as a whole only. For accounting, the site-level value is the authoritative one.

Diagnostics

Forecast computed at, next forecast update (with included and available as attributes), requests remaining. The request counter is account-wide, not per site.

Energy Dashboard

pvnode can supply the forecast curve for a solar panel in the Energy Dashboard.

A real production meter is required. For "Solar production" the Energy Dashboard needs an accumulating energy sensor (state_class: total or total_increasing) — typically from your inverter. A forecast is not a meter and cannot fill that field.

  1. Settings → Dashboards → Energy
  2. Under Solar panels, add your production sensor.
  3. Under Forecast, select pvnode.

The forecast then appears as a curve above actual production. It is fetched live on every page load and not historised — looking back, you always see the current forecast, not the one from back then.

Charts

Home Assistant ships no built-in card for forecast curves. The usual route is the ApexCharts card from HACS.

Every power sensor carries its full time series in the forecast attribute:

Code
forecast: - datetime: "2026-08-12T05:00:00+00:00" watts: 0 - datetime: "2026-08-12T05:15:00+00:00" watts: 12

Replace sensor.my_site_... below with your own entity IDs (find them under Developer Tools → States, filter pvnode). The gap between the two lines is the loss to cloud cover.

Code
type: custom:apexcharts-card graph_span: 2d span: start: day now: show: true label: Now header: show: true title: PV Forecast series: - entity: sensor.my_site_clearsky_power_now name: Clearsky type: area opacity: 0.15 stroke_width: 1 color: "#cccccc" data_generator: | return entity.attributes.forecast.map((e) => { return [new Date(e.datetime).getTime(), e.watts_clearsky]; }); - entity: sensor.my_site_power_forecast_now name: Forecast type: area opacity: 0.4 stroke_width: 2 data_generator: | return entity.attributes.forecast.map((e) => { return [new Date(e.datetime).getTime(), e.watts]; });

Migrating from Forecast.Solar

Remove Forecast.Solar first, then set up pvnode and adjust your automations.

The left column shows the entity ID Forecast.Solar assigns permanently — identical in every installation, so you can search your YAML for it. The right column shows the sensor name in pvnode. A fixed entity ID cannot be listed there: it is built from your site name, so for "House North" it becomes sensor.house_north_energy_forecast_today.

Forecast.Solar — entity IDpvnode — sensor name
sensor.energy_production_todayEnergy forecast today
sensor.energy_production_tomorrowEnergy forecast tomorrow
sensor.energy_production_today_remainingRemaining yield today
sensor.power_production_nowPower forecast now
sensor.power_production_next_hourPower forecast in 1 hour
sensor.power_highest_peak_time_todayTime of peak power today
sensor.power_highest_peak_time_tomorrowTime of peak power tomorrow
sensor.energy_current_hourEnergy this hour
sensor.energy_next_hourEnergy next hour

On top of that you gain values with no previous equivalent: clearsky power and energy as a cloudless reference, weather and irradiance data, separate sensors per roof surface and — depending on your plan — the uncertainty band.

The forecast source in the Energy Dashboard has to be selected once more: it hangs off the config entry, not the entities.

Last modified on August 18, 2026
Build Your Ownevcc
On this page
  • Installation
  • Setup
    • Changing plan
  • Sensors
    • Site
    • Roof surface
    • Diagnostics
  • Energy Dashboard
  • Charts
  • Migrating from Forecast.Solar
YAML
YAML