A custom Home Assistant integration that actively pushes your solar generation, home consumption, and local temperature data directly to PVOutput.org.
Unlike the official Home Assistant PVOutput integration (which only downloads data), this integration acts as an automated publisher, bridging your local Home Assistant sensors to your public PVOutput dashboard.
Please note that the code and documentation for this project were primarily generated with the assistance of an AI. While it has been actively tested and confirmed to work perfectly within Home Assistant, it is provided "as is." Please review the code and use it at your own discretion.
- UI Config Flow: Fully configurable via the Home Assistant UI. No YAML required.
- Multi-System Support: Publish data for multiple solar arrays or inverters to different PVOutput System IDs using a single API key.
- Smart Data Detection: Automatically formats the payload based on the units of your selected sensors (Watts vs. Watt-hours, Celsius vs. Fahrenheit).
- Lifetime Energy Support: Automatically detects
state_class: totalsensors and flags PVOutput to calculate your daily yield and instantaneous power curves for you. - Comprehensive Metrics: Supports pushing Generation, Consumption, and Temperature data simultaneously.
- Last Upload Sensor: Creates a timestamp entity in Home Assistant so you can monitor exactly when the last successful push occurred.
- Multi-Language Support: Fully translated into English, Japanese, Spanish, and German.
PVOutput requires data to be formatted precisely. This integration looks at the unit_of_measurement and state_class of your selected sensors and automatically handles the conversions:
- Power (Watts / kW): Automatically converted to Watts and sent as
v2(Generation) orv4(Consumption). - Daily Energy (Wh / kWh): Automatically converted to Watt-hours and sent as
v1(Generation) orv3(Consumption). - Lifetime Energy: If your sensor tracks lifetime yield (e.g.,
state_class: total_increasing), the integration sends the&c1=1flag. PVOutput will automatically calculate your daily generation and live power curves by comparing the intervals.
- If your Home Assistant sensor uses Fahrenheit (
°F), it will automatically be converted to Celsius before uploading, as PVOutput strictly requires Celsius for itsv5parameter.
This integration is installed via HACS.
- Open HACS in your Home Assistant instance.
- Go to Integrations.
- Click the three dots in the top right corner and select Custom repositories.
- Paste the URL of this GitHub repository
https://github.com/SourceLabOrg/HomeAssistant-PVOutputPublisher - Select Integration as the Category and click Add.
- Search for PVOutput Publisher in HACS and click Download.
- Restart Home Assistant.
- Go to Settings > Devices & Services.
- Click Add Integration in the bottom right corner.
- Search for PVOutput Publisher.
- Enter your global PVOutput API Key (found in your PVOutput account settings).
- Add your first system by providing:
- System Name: A friendly name for your reference.
- System ID: Your PVOutput System ID.
- Solar Generation Sensor: Your inverter's power or energy sensor.
- Power/Energy Consumption Sensor: (Optional) Your home's power draw or energy usage sensor.
- Temperature Sensor: (Optional) Outside temperature.
- Update Frequency: How often to push data to PVOutput (5 to 180 minutes).
You can add, edit, or remove systems at any time. Simply go to Settings > Devices & Services, find the PVOutput Publisher integration card, and click Configure.
For every system you configure, this integration creates a sensor:
sensor.pvoutput_[system_name]_last_upload
This sensor tracks the exact date and time of the last successful HTTP 200 OK response from the PVOutput API. You can use this sensor in your Lovelace dashboards or to trigger automations (e.g., send a notification if data hasn't successfully published in over an hour).
If data is not appearing in PVOutput, check your Home Assistant logs (Settings > System > Logs). The integration gracefully handles network drops, but will print detailed error messages if the PVOutput API rejects your payload (e.g., invalid API key, incorrect System ID, or pushing data too far in the past). You can view the raw outbound payload by setting the logging level for custom_components.pvoutput_publisher to info in your configuration.yaml.
## Logging
logger:
default: warning
logs:
custom_components.pvoutput_publisher: debug