From c97e2f0186cfede2cff55116f151843aa8cad0af Mon Sep 17 00:00:00 2001 From: Javier Lopez Lorente Date: Wed, 23 Sep 2026 17:53:30 +0200 Subject: [PATCH 1/4] Docs - fix typo in workflow 2 and quick start examples --- docs/getting-started/quick-start-examples.md | 2 +- docs/getting-started/workflow-2-pvplant-builder.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting-started/quick-start-examples.md b/docs/getting-started/quick-start-examples.md index 9358ade..f663fa7 100644 --- a/docs/getting-started/quick-start-examples.md +++ b/docs/getting-started/quick-start-examples.md @@ -255,7 +255,7 @@ def create_plant(mounting_type: str) -> PVSystem: plant.gcr = 0.35 else: # Tracker plant.tracker_max_rotation_angle = 60.0 # Max rotation angle - plant.gcr = 0.3 # Trackers need wider spacing + plant.gcr = 0.35 # Assuming same spacing conditions plant.add_pan_files({"Module": Path("data/module.PAN")}) plant.add_ond_files({"Inverter": Path("data/inverter.OND")}) diff --git a/docs/getting-started/workflow-2-pvplant-builder.md b/docs/getting-started/workflow-2-pvplant-builder.md index b9f8a5f..0b5362f 100644 --- a/docs/getting-started/workflow-2-pvplant-builder.md +++ b/docs/getting-started/workflow-2-pvplant-builder.md @@ -111,7 +111,7 @@ plant.soiling_loss = [0.08, 0.08, 0.07, 0.06, 0.05, 0.04, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09] # Albedo (ground reflection) -plant.albedo = 0.2 # Can be single value (expanded to 12 months) or list of 12 +plant.albedo = [0.2] * 12 # Can be single value (expanded to 12 months) or list of 12 ``` From f128031a777a1832ee663e8aad8365450d53bd61 Mon Sep 17 00:00:00 2001 From: Javier Lopez Lorente Date: Wed, 23 Sep 2026 17:54:09 +0200 Subject: [PATCH 2/4] Update invalid API version comment to latest API version --- solarfarmer/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solarfarmer/api.py b/solarfarmer/api.py index e322c69..63a7d5b 100644 --- a/solarfarmer/api.py +++ b/solarfarmer/api.py @@ -551,4 +551,4 @@ def build_api_url(version: str | None = None) -> str: if re.fullmatch(r"v[1-9]\d*", version): return f"{base}/{version}/api" - raise ValueError(f"Invalid version '{version}'. Must be 'latest' or 'vX' (e.g., 'v5').") + raise ValueError(f"Invalid version '{version}'. Must be 'latest' or 'vX' (e.g., 'v7').") From 830282b373674199a83f4e91c46713d060b9f28d Mon Sep 17 00:00:00 2001 From: Javier Lopez Lorente Date: Wed, 23 Sep 2026 18:05:43 +0200 Subject: [PATCH 3/4] Update changelog --- CHANGELOG.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 632daf4..b2b4495 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [0.6.0] - 2026-09-24 ### Added @@ -13,11 +13,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Pydantic models for the 3D API data model: `Rack`, `Racks`, `Tracker` (3D), `Trackers`, `InverterInput`, `ModuleString`, `SimpleTerrain`, `ShadingObjects`, and supporting geometry types (`QuadDouble`, `Vector3Double`, `IndexedObject3D`, `ModuleIndexRange`, `MiniSimpleTerrainDto`, `TerrainRowDto`, `TerrainRowStartEndColumnsDto`). These enable full composition of 3D plant layouts, including power optimizer support via `InverterInput`. - `PVSystem.recalculate_modeling_correction_factor` field to control whether the modeling correction factor is recalculated during energy yield assessment (default `True`). - `from_solcast` added to the Weather Utilities section of the API reference documentation. +- `TrackerAlgorithm` enum to define custom rotation strategies for tracker systems, enabling flexible rotation calculation methods beyond predefined algorithms. +- `TrackersConditionsDataset` class with Protobuf serialization support for storing and transmitting tracker rotation conditions and custom rotation data. +- `TrackerRotationID` field in the `Layout` class to support custom tracker rotation workflows. +- `dc_ohmic_connector_loss` and related DC loss resistance fields in the `Layout` class for detailed power loss modeling in tracker systems. +- CSV export functionality for tracker-specific results, providing detailed rotation and performance data for each tracker row. ### Changed - `PVSystem.tilt` is now fixed-tilt only. For tracker systems, set `tracker_max_rotation_angle` instead. Previously, `tilt` was silently used as the tracker rotation bound, which caused confusion. +### Fixed + +- Documentation examples corrected: GCR spacing value for tracker systems in quick-start example now consistently use 0.35. +- Documentation clarified: albedo parameter in workflow-2 now shows explicit list format `[0.2] * 12` for clarity. +- API error message updated to reference latest supported API version (v7) in validation documentation. + ## [0.5.0] - 2026-06-29 ### Changed From ecf08496d504df6d660a481bdd3927a835cc9464 Mon Sep 17 00:00:00 2001 From: Javier Lopez Lorente Date: Thu, 24 Sep 2026 10:38:31 +0200 Subject: [PATCH 4/4] Docs - Add custom rotations (PR#35) to changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2b4495..3ece41a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `TrackerRotationID` field in the `Layout` class to support custom tracker rotation workflows. - `dc_ohmic_connector_loss` and related DC loss resistance fields in the `Layout` class for detailed power loss modeling in tracker systems. - CSV export functionality for tracker-specific results, providing detailed rotation and performance data for each tracker row. +- `custom_rotations` module for importing custom tracker rotation schedules from CSV files with functions `from_csv()`, `from_csv_folder()`, and `csv_to_protobuf()` to load and validate rotation data. +- Public API exports: `from_custom_rotations_csv()` and `custom_rotations_csv_to_protobuf()` for programmatic CSV rotation ingestion. +- Utilities for validating the compatibility of custom rotations and plant layout: tracker rotation IDs, checking time resolution compatibility, and verifying weather data coverage for rotation periods. ### Changed