Quick overview
This workflow runs daily (or on demand) to pull solar production, grid usage, and Open‑Meteo weather data, estimate expected solar output, calculate net energy balance and costs, and post a Slack summary or escalate underperformance through an acknowledgement and resolution check.
How it works
- Runs every day at 19:00 (or via a manual test run) to start the monitoring cycle.
- Fetches today’s hourly solar production data from your solar provider API and today’s hourly grid/meter usage data from your utility or smart‑meter API.
- Pulls the day’s hourly cloud cover and shortwave radiation forecast from the Open‑Meteo API.
- Models expected solar generation from the weather data, compares it to actual production, and flags efficiency drops or zero production during daylight.
- Combines production and usage by time interval to calculate self-consumption, grid import/export totals, peak usage, and a peak/off‑peak tariff-weighted grid import cost.
- Builds a daily report with a severity level (none/warning/critical) and a troubleshooting checklist, then posts a Slack daily summary if no alert is required.
- If an alert is required, pauses for acknowledgement and then resolution confirmation via wait webhooks, posting to Slack either a resolution-confirmed message or an escalation for unacknowledged or unresolved issues.
Setup
- Create HTTP Header Auth credentials for your solar monitoring API and your utility/smart‑meter API, and attach them to the two HTTP Request nodes.
- Add a Slack OAuth credential with permission to post messages and set the target channel name in the config (for example, #solar-monitoring).
- Update the configuration values for API URLs, latitude/longitude, system capacity (kW), performance thresholds, peak-hour window, and tariff rates.
- Copy the two Wait node resume webhook URLs and connect them to whatever UI/process you use to send “acknowledged” and “resolved” callbacks.
- Adjust the schedule trigger cron expression if needed, then activate the workflow and run a manual test to validate the data formats returned by your APIs.