Skip to content

Commit b7c2726

Browse files
committed
Fix calandar history
1 parent 77d0292 commit b7c2726

File tree

3 files changed

+47
-77
lines changed

3 files changed

+47
-77
lines changed

.changeset/strong-parts-write.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@teslemetry/api": patch
3+
---
4+
5+
Fix types for calandarHistory

packages/api/src/TeslemetryEnergyApi.ts

Lines changed: 8 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -19,39 +19,19 @@ import {
1919
import { reuse } from "./reuse.js";
2020
import { scheduler } from "./scheduler.js";
2121

22-
// Derive event types from the calendar history response union type
23-
type CalendarHistoryEvents = NonNullable<
24-
NonNullable<
25-
GetApi1EnergySitesByIdCalendarHistoryResponse["response"]
26-
>["events"]
27-
>[number];
28-
2922
// Extract specific event types based on discriminating properties
30-
export type BackupHistoryEvent = Extract<
31-
CalendarHistoryEvents,
32-
{ duration?: number }
33-
>;
34-
export type EnergyHistoryEvent = Exclude<
35-
CalendarHistoryEvents,
36-
{ duration?: number }
37-
>;
38-
3923
export type BackupHistoryResponse = {
40-
response?: {
41-
events?: BackupHistoryEvent[];
42-
total_events?: number;
43-
};
24+
response: Extract<
25+
GetApi1EnergySitesByIdCalendarHistoryResponse["response"],
26+
{ events?: any }
27+
>;
4428
};
45-
4629
export type EnergyHistoryResponse = {
47-
response?: {
48-
events?: EnergyHistoryEvent[];
49-
total_events?: number;
50-
};
30+
response: Extract<
31+
GetApi1EnergySitesByIdCalendarHistoryResponse["response"],
32+
{ time_series?: any }
33+
>;
5134
};
52-
export type EnergyHistorySummary = Partial<
53-
Omit<EnergyHistoryEvent, "timestamp">
54-
>;
5535

5636
// Interface for event type safety
5737
type TeslemetryEnergyEventMap = {
@@ -433,32 +413,4 @@ export class TeslemetryEnergyApi extends EventEmitter {
433413
}
434414
};
435415
}
436-
437-
/**
438-
* Sum energy history entries to find the total energy usage of each type.
439-
* @param energyHistory
440-
*/
441-
public sumEnergyHistory(
442-
energyHistory: EnergyHistoryResponse,
443-
): EnergyHistorySummary {
444-
const summary: EnergyHistorySummary = {};
445-
446-
if (!energyHistory?.response?.events) {
447-
return summary;
448-
}
449-
450-
for (const event of energyHistory.response.events) {
451-
for (const [key, value] of Object.entries(event)) {
452-
if (key === "timestamp") continue;
453-
454-
if (typeof value === "number") {
455-
const typedKey = key as keyof Omit<EnergyHistoryEvent, "timestamp">;
456-
const currentValue = summary[typedKey] as number | undefined;
457-
summary[typedKey] = (currentValue ?? 0) + value;
458-
}
459-
}
460-
}
461-
462-
return summary;
463-
}
464416
}

packages/api/src/client/types.gen.ts

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20202,28 +20202,41 @@ export type GetApi1EnergySitesByIdCalendarHistoryResponses = {
2020220202
* Default Response
2020320203
*/
2020420204
200: {
20205-
response?: {
20205+
response?: null | {
20206+
serial_number: string;
20207+
period: 'day' | 'week' | 'month' | 'year' | 'lifetime';
20208+
installation_time_zone?: string;
20209+
time_series?: Array<{
20210+
timestamp: string;
20211+
solar_energy_exported: number;
20212+
generator_energy_exported: number;
20213+
grid_energy_imported: number;
20214+
grid_services_energy_imported: number;
20215+
grid_services_energy_exported: number;
20216+
grid_energy_exported_from_solar: number;
20217+
grid_energy_exported_from_generator: number;
20218+
grid_energy_exported_from_battery: number;
20219+
battery_energy_exported: number;
20220+
battery_energy_imported_from_grid: number;
20221+
battery_energy_imported_from_solar: number;
20222+
battery_energy_imported_from_generator: number;
20223+
consumer_energy_imported_from_grid: number;
20224+
consumer_energy_imported_from_solar: number;
20225+
consumer_energy_imported_from_battery: number;
20226+
consumer_energy_imported_from_generator: number;
20227+
raw_timestamp?: string;
20228+
total_home_usage?: number;
20229+
total_battery_discharge?: number;
20230+
total_grid_energy_exported?: number;
20231+
total_battery_charge?: number;
20232+
total_solar_generation?: number;
20233+
}>;
20234+
SmartBreakerEnergyLogs?: null;
20235+
time_zone_offset?: number;
20236+
} | {
2020620237
events?: Array<{
20207-
timestamp?: string;
20208-
duration?: number;
20209-
} | {
20210-
timestamp?: string;
20211-
solar_energy_exported?: number;
20212-
generator_energy_exported?: number;
20213-
grid_energy_imported?: number;
20214-
grid_services_energy_imported?: number;
20215-
grid_services_energy_exported?: number;
20216-
grid_energy_exported_from_solar?: number;
20217-
grid_energy_exported_from_generator?: number;
20218-
grid_energy_exported_from_battery?: number;
20219-
battery_energy_exported?: number;
20220-
battery_energy_imported_from_grid?: number;
20221-
battery_energy_imported_from_solar?: number;
20222-
battery_energy_imported_from_generator?: number;
20223-
consumer_energy_imported_from_grid?: number;
20224-
consumer_energy_imported_from_solar?: number;
20225-
consumer_energy_imported_from_battery?: number;
20226-
consumer_energy_imported_from_generator?: number;
20238+
timestamp: string;
20239+
duration: number;
2022720240
}>;
2022820241
total_events?: number;
2022920242
};

0 commit comments

Comments
 (0)