Compare commits

..
5 Commits
Author SHA1 Message Date
Amir 5ef53916ea Update to v6.2.2 - Screen blank lines issue fix
Update to v6.2.2 - Screen blank lines issue fix after v6.2.0 DST Fix

  - Problem: Sometimes rows 0 and 1 (current 15-min prices and current hour) were blank
  - Cause: The "hour suppression" logic was hiding the current hour unexpectedly
  - Fix: Row 1 (current hour) now ALWAYS shows - suppression logic only applies to rows 2-3
  - Row 0 (15-min details) also always shows for the current hour
2026-03-31 21:13:57 +02:00
Amir b55a7b4945 Update README for version 6.2.1 and highlights
Updated version number to 6.2.1 and added highlights for the latest change: a critical fix for current interval display issues.
2026-03-29 18:49:43 +02:00
Amir d7e27b4f56 Bump version to 6.2.1 and update highlights
Updated version from 6.2.0 to 6.2.1 and added highlights for the new version.
2026-03-29 18:44:33 +02:00
Amir 614be25a1f Revise CHANGELOG for version 6.2.1 updates
Fixed a bug in the price display by correcting the function to find the current 15-minute interval instead of the next one.
2026-03-29 18:43:05 +02:00
Amir 1e5fa661f0 Update to v6.2.1 - Screen refresh issue fix after v6.2.0 DST Fix
Fixed a bug where the display was showing prices one hour ahead of the current time.
2026-03-29 18:39:06 +02:00
5 changed files with 3708 additions and 3 deletions
+42
View File
@@ -4,6 +4,48 @@ All notable changes to this project are documented here.
---
## v6.2.1 Current Interval Fix (20260329)
**Summary**
Fixed a bug where the display was showing prices one hour ahead of the current time.
### Problem: Display Showing Next Hour Instead of Current
**Root Cause:**
The `findCurrentPriceIndex()` function was finding the **next** 15-minute interval (first entry with timestamp >= now), but it should find the **current** interval (the one we're currently IN).
For example, at 17:57:
- The current 15-minute interval is **17:45-18:00** (price indexed at 17:45)
- The **next** interval is 18:00-18:15 (price indexed at 18:00)
- The buggy function returned the index for **18:00** instead of **17:45**
- Result: Display showed hour **18** instead of hour **17**
### Solution
The fix calculates the **next 15-minute boundary** and finds the last entry **strictly before** that boundary:
```cpp
// Calculate the next 15-minute boundary
const int QUARTER_SECONDS = 15 * 60; // 900 seconds
time_t nextQuarter = ((now + QUARTER_SECONDS - 1) / QUARTER_SECONDS) * QUARTER_SECONDS;
// Find the last entry strictly before nextQuarter
for (size_t i = unixSeconds.size(); i > 0; i--) {
if ((time_t)unixTime < nextQuarter) {
return (int)(i - 1);
}
}
```
**Example:**
- At 17:57: nextQuarter = 18:00, finds last entry < 18:00 = 17:45 ✅
- At 18:00: nextQuarter = 18:15, finds last entry < 18:15 = 18:00 ✅
- At 18:46: nextQuarter = 19:00, finds last entry < 19:00 = 18:45 ✅
---
## v6.2.0 DST (Daylight Saving Time) Handling Fixed (20260329)
**Summary**
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+12 -2
View File
@@ -5,13 +5,23 @@
This project is an ArduinoIDEfriendly firmware for the **Seeed XIAO ESP32C3** that:
- Connects to WiFi.
- Fetches **dayahead electricity prices** from [EnergyCharts.info](https://energy-charts.info) (Bundesnetzagentur / SMARD.de).
- Fetches **dayahead electricity prices** from [EnergyCharts.info](https://energy-charts.info).
- Computes final consumer prices (including configurable powercompany fee + VAT).
- Displays current and upcoming prices on a **20x4 I²C 2004 LCD**.
- Uses a white LED and an optional presence sensor to give quick visual feedback.
- Stores daily price data in **NVS** to survive reboots and reduce API calls.
The latest sketch implements **Version 6.2.0**, focusing on:
The latest sketch implements **Version 6.2.1**.
---
## Version Highlights
### v6.2.1 Current Interval Fix (critical fix of v6.2.0 update)
- Fixed display showing prices one hour ahead of the current time.
- `findCurrentPriceIndex()` now correctly returns the current 15-minute interval.
Major update sketch implements **Version 6.2.0**, focusing on:
- **Version 6.2.0 FIX**: **DST (Daylight Saving Time) handling fully fixed** the ticker now works correctly on ALL days including DST switch days (spring forward and fall back). Uses timestamp-based price lookups instead of arithmetic calculations.
- Version 6.1.2 fix: restore correct **white LED indicator** behavior (ESP32 PWM fix; no dim glow when off).
+7 -1
View File
@@ -2,13 +2,19 @@
## Current firmware
- **Version:** 6.2.0
- **Version:** 6.2.1
- **Release date:** 2026-03-29
- **Target MCU:** Seeed XIAO ESP32C3
- **Display:** 20x4 I²C LCD (PCF8574, default address `0x27`)
- **API endpoint:** `https://api.energy-charts.info/price?bzn=SI`
- **Resolution:** 15minute intervals, hourly averages for overview
## Highlights of v6.2.1
- **BUG FIX**: Fixed `findCurrentPriceIndex()` to return the correct current interval.
- Problem: At 17:57, it returned index for 18:00 instead of 17:45, causing display to show hour 18 instead of hour 17.
- Fix: Now calculates next 15-minute boundary and finds the last entry before that boundary.
## Highlights of v6.2.0
- **CRITICAL FIX**: DST (Daylight Saving Time) handling is now fully fixed for all days.