TKK_E32222567_Gps/lib/app/modules/home/controllers/home_controller.dart

56 lines
1.5 KiB
Dart

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);
}