- Split energy store into sensor, room, analytics, and websocket stores - Add new analytics, room, sensor, and websocket stores - Update API types for sensors (SensorDevice, SensorAction) - Update sensorsApi to use new SensorDevice type - Add central index for store exports and types - Refactor energy store to delegate to modular stores - Remove legacy code and consolidate API logic
74 lines
1.7 KiB
TypeScript
74 lines
1.7 KiB
TypeScript
import {
|
|
apiClient,
|
|
type SensorDevice,
|
|
type SensorReading,
|
|
type DataQuery,
|
|
type DataResponse,
|
|
type SensorType,
|
|
type SensorStatus,
|
|
} from './api'
|
|
|
|
export const sensorsApi = {
|
|
async getSensors(params?: {
|
|
room?: string
|
|
sensor_type?: SensorType
|
|
status?: SensorStatus
|
|
}): Promise<SensorDevice[]> {
|
|
return apiClient.get<SensorDevice[]>('/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: Record<string, any>,
|
|
): 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
|