Skip to content

Commit 93d59e9

Browse files
Ahmad-WahidFlix6x
andcommitted
Backport PR #1699: fix: convert charge point sensors values to timestamp on client side (#1699)
* fix: convert to datetime if the sensor's unit is second * fix: send event_values for CP sensors as epoch timestamps(miliseconds) * fix: define value var * refactor to make it more JS friendly Signed-off-by: Ahmad Wahid <ahmedwahid16101@gmail.com> * add a comment to explain the conversion * docs: changelog entry Signed-off-by: F.N. Claessen <felix@seita.nl> --------- Signed-off-by: Ahmad Wahid <ahmedwahid16101@gmail.com> Signed-off-by: F.N. Claessen <felix@seita.nl> Co-authored-by: F.N. Claessen <felix@seita.nl> (cherry picked from commit bbd29f8)
1 parent d2bcc80 commit 93d59e9

File tree

3 files changed

+4
-14
lines changed

3 files changed

+4
-14
lines changed

documentation/changelog.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ v0.28.2 | October 3, 2025
1010
Bugfixes
1111
-----------
1212
* Fix horizons in UI chart tooltips [see `PR #1730 <https://www.github.com/FlexMeasures/flexmeasures/pull/1730>`_]
13+
* Fix UI chart for Charge Point sessions [see `PR #1699 <https://www.github.com/FlexMeasures/flexmeasures/pull/1699>`_]
1314
* Fix two audit logs in the sensor API, which were not committed to db [see `PR #1721 <https://github.com/FlexMeasures/flexmeasures/pull/1721>`_]
1415

1516

flexmeasures/data/models/generic_assets.py

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -820,19 +820,6 @@ def search_beliefs( # noqa C901
820820
),
821821
).reset_index()
822822

823-
# Handle datetime conversion for seconds unit
824-
if sensor.unit == "s":
825-
time_mask = df["event_value"].notna()
826-
time_values = df.loc[time_mask, "event_value"]
827-
df["event_value"] = df["event_value"].astype(
828-
f"datetime64[ns, {self.timezone}]"
829-
)
830-
df.loc[time_mask, "event_value"] = (
831-
pd.to_datetime(time_values, unit="s", origin="unix")
832-
.dt.tz_localize("UTC")
833-
.dt.tz_convert(self.timezone)
834-
)
835-
836823
# VECTORIZED PROCESSING instead of for loops for speed
837824
# Convert timestamps to milliseconds vectorized
838825
event_start_ms = (

flexmeasures/ui/templates/base.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,10 +372,12 @@
372372
const sensor = responseData.sensors[belief.sid] || {};
373373
const source = responseData.sources[belief.src] || {};
374374

375+
// Special case: for sensors with seconds unit, convert to datetime here
376+
const value = (sensor.unit === 's' && typeof belief.val === 'number') ? new Date(belief.val * 1000) : belief.val;
375377
return {
376378
// Map shortened field names back to original names
377379
event_start: belief.ts,
378-
event_value: belief.val,
380+
event_value: value,
379381
belief_horizon: belief.bh,
380382
scale_factor: belief.sf,
381383
belief_time: belief.bt,

0 commit comments

Comments
 (0)