import 'dart:convert'; import 'package:get/get.dart'; import 'package:http/http.dart' as http; import 'package:firebase_database/firebase_database.dart'; import '../../../routes/app_pages.dart'; class HomeController extends GetxController { var temperature = ''.obs; var description = ''.obs; var relay = false.obs; var buzzer = false.obs; final dbRef = FirebaseDatabase.instance.ref('kontrol_alat'); final apiKey = '3ab888af4e26ebe53ffb6257633a460e'; @override void onInit() { fetchWeather(); super.onInit(); listenRealtime(); } void fetchWeather() async { final url = Uri.parse('https://api.openweathermap.org/data/2.5/forecast?q=Jember&appid=$apiKey&units=metric'); final response = await http.get(url); if (response.statusCode == 200) { final data = json.decode(response.body); temperature.value = '${data['list'][0]['main']['temp'].round()}°'; description.value = data['list'][0]['weather'][0]['description']; } } void listenRealtime() { dbRef.onValue.listen((event) { final data = event.snapshot.value as Map; relay.value = data['relay'] ?? false; buzzer.value = data['buzzer'] ?? false; }); } void toggleRelay() { dbRef.update({'relay': !relay.value}); } void toggleBuzzer() { dbRef.update({'buzzer': !buzzer.value}); } void keNotifikasi() => Get.toNamed(Routes.NOTIFIKASI); void keHistory() => Get.toNamed(Routes.HISTORY); void keMaps() => Get.toNamed(Routes.MAPS); }