44 lines
1.7 KiB
Dart
44 lines
1.7 KiB
Dart
import '../models/sensor_model.dart';
|
|
import '../services/iot_service.dart';
|
|
import '../services/api_iot_service.dart'; // import api service untuk case khusus
|
|
|
|
/// Repository IoT — lapisan jembatan antara State Notifier (Presentation Layer) dan Layanan API Hardware (Service Layer).
|
|
/// Menyediakan data sensor real-time serta agregasi riwayat sensor (per jam / harian).
|
|
class IotRepository {
|
|
final IotService _service;
|
|
|
|
IotRepository(this._service);
|
|
|
|
/// Mengambil data status sensor real-time terbaru dari hardware.
|
|
Future<SensorModel> getSensorData() {
|
|
return _service.fetchSensorData();
|
|
}
|
|
|
|
/// Mengambil data riwayat sensor mentah (history) untuk grafik.
|
|
/// Hanya dieksekusi jika tipe service yang terpasang adalah [ApiIotService].
|
|
Future<List<SensorModel>> getHistoryData() {
|
|
if (_service is ApiIotService) {
|
|
return _service.fetchHistory();
|
|
}
|
|
return Future.value([]);
|
|
}
|
|
|
|
/// Mengambil data agregasi riwayat sensor harian (rata-rata per hari) untuk grafik bulanan.
|
|
/// [days] menentukan berapa hari ke belakang data yang akan diambil (default: 30 hari).
|
|
Future<List<Map<String, dynamic>>> getDailyHistory({int days = 30}) {
|
|
if (_service is ApiIotService) {
|
|
return _service.fetchDailyHistory(days: days);
|
|
}
|
|
return Future.value([]);
|
|
}
|
|
|
|
/// Mengambil data agregasi riwayat sensor per jam (rata-rata per jam) untuk grafik harian.
|
|
/// [days] menentukan rentang hari ke belakang data yang diambil (default: 7 hari).
|
|
Future<List<Map<String, dynamic>>> getHourlyHistory({int days = 7}) {
|
|
if (_service is ApiIotService) {
|
|
return _service.fetchHourlyHistory(days: days);
|
|
}
|
|
return Future.value([]);
|
|
}
|
|
}
|