"use client"; import { useState, useEffect } from "react"; // 1. IMPORT IKON BARU DI SINI import { Activity, Power, ZapOff, AlertTriangle, Lightbulb, Wind, Projector } from "lucide-react"; export default function PowerMonitoringPage() { const [rooms, setRooms] = useState([]); useEffect(() => { // Simulasi Data Ruangan dari IoT const dummyRooms = [ { id: 1, name: "Kelas D101", power: 1250, isRelayOn: true, lastUpdate: "Baru saja" }, { id: 2, name: "Kelas D102", power: 0, isRelayOn: false, lastUpdate: "2 mnt lalu" }, { id: 3, name: "Kelas D103", power: 45, isRelayOn: true, lastUpdate: "Baru saja" }, { id: 4, name: "Kelas D104", power: 0, isRelayOn: false, lastUpdate: "10 mnt lalu" }, ]; setRooms(dummyRooms); }, []); const handleCutOff = (roomName: string) => { if(confirm(`PERINGATAN: Anda yakin ingin mematikan daya secara paksa di ${roomName}?`)) { alert(`Sinyal pemutusan daya dikirim ke Relay Master ${roomName}.`); // Nanti di sini kamu pasang axios.post ke Golang -> MQTT -> ESP32 } }; // 2. FUNGSI BARU UNTUK KONTROL PERANGKAT SPESIFIK const handleDeviceToggle = (roomName: string, deviceName: string) => { alert(`Mengirim sinyal IoT untuk menyalakan/mematikan [${deviceName}] di [${roomName}]...`); // Nanti ganti dengan axios.put(`http://localhost:8080/api/rooms/.../device`, { device: deviceName }) }; return (

Power Monitoring & Control

Pantau konsumsi daya kWh meter dan kendalikan *relay* sirkuit ruangan.

{/* SUDAH DITAMBAHKAN PENGURUTAN ABJAD AGAR RAPI */} {[...rooms] .sort((a, b) => a.name.localeCompare(b.name)) .map((room) => (
{/* Indikator Status di Pojok Kanan Atas */}
{room.isRelayOn ? 'Sirkuit Aktif' : 'Sirkuit Terputus'}

{room.name}

1000 ? 'text-orange-500' : 'text-gray-800'}`}> {room.power} Watts
{room.power > 1000 && (
Beban Tinggi Terdeteksi!
)} {/* 3. PANEL KONTROL IoT BARU */}

IoT Device Control

Update: {room.lastUpdate}
))}
); }