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 getSensorData() { return _service.fetchSensorData(); } /// Mengambil data riwayat sensor mentah (history) untuk grafik. /// Hanya dieksekusi jika tipe service yang terpasang adalah [ApiIotService]. Future> 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>> 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>> getHourlyHistory({int days = 7}) { if (_service is ApiIotService) { return _service.fetchHourlyHistory(days: days); } return Future.value([]); } /// Mengambil status keaktifan perangkat (is_online, last_seen) dari database. Future> getDeviceStatus() { if (_service is ApiIotService) { return _service.fetchDeviceStatus(); } return Future.value({'is_online': false, 'last_seen': null}); } }