Files
sa4cps-frontend/src/services/sensorsApi.ts
rafaeldpsilva 83eaa7e121 Refactor sensor data handling for new API and WebSocket format
- Update SensorConsumptionTable to use new sensorStore and
websocketStore - Normalize sensor and reading interfaces for consistency
- Remove legacy energy data handling and mapping logic - Update API and
store types for new backend schema - Fetch sensors on mount in
SensorConsumptionTable - Simplify WebSocket data processing and remove
legacy code
2025-09-30 17:58:06 +01:00

91 lines
2.0 KiB
TypeScript

import {
apiClient,
type SensorDevice,
type SensorReading,
type DataQuery,
type DataResponse,
type SensorType,
type SensorStatus,
type SensorMetadata,
} from './api'
export const sensorsApi = {
async getSensors(params?: {
room?: string
sensor_type?: SensorType
status?: SensorStatus
}): Promise<{
sensors: SensorDevice[]
count: number
filters: {
room: string
sensor_type: SensorType
status: SensorStatus
}
}> {
return apiClient.get<{
sensors: SensorDevice[]
count: number
filters: {
room: string
sensor_type: SensorType
status: SensorStatus
}
}>('/api/v1/sensors/get', params)
},
async getSensor(sensorId: string): Promise<SensorDevice> {
return apiClient.get<SensorDevice>(`/api/v1/sensors/${sensorId}`)
},
async getSensorData(
sensorId: string,
params?: {
start_time?: number
end_time?: number
limit?: number
offset?: number
},
): Promise<DataResponse> {
return apiClient.get<DataResponse>(`/api/v1/sensors/${sensorId}/data`, params)
},
async queryData(query: DataQuery): Promise<DataResponse> {
return apiClient.post<DataResponse>('/api/v1/data/query', query)
},
async updateSensorMetadata(
sensorId: string,
metadata: SensorMetadata,
): Promise<{ message: string }> {
return apiClient.put<{ message: string }>(`/api/v1/sensors/${sensorId}/metadata`, metadata)
},
async deleteSensor(sensorId: string): Promise<{
message: string
readings_deleted: number
metadata_deleted?: boolean
}> {
return apiClient.delete(`/api/v1/sensors/${sensorId}`)
},
async exportData(params: {
start_time: number
end_time: number
sensor_ids?: string
format?: 'json' | 'csv'
}): Promise<{
data: SensorReading[]
count: number
export_params: any
}> {
return apiClient.get<{
data: SensorReading[]
count: number
export_params: any
}>('/api/v1/export', params)
},
}
export default sensorsApi