// src/pages/Connectivity.jsx import React, { useState, useEffect } from 'react'; import { get, post } from '../api'; import PageLayout from '../components/PageLayout'; const Connectivity = () => { const [status, setStatus] = useState(null); const [loading, setLoading] = useState(true); const [wifiConfig, setWifiConfig] = useState({ ssid: '', password: '' }); const [wifiNetworks, setWifiNetworks] = useState([]); const [wifiMsg, setWifiMsg] = useState(''); const [mqttConfig, setMqttConfig] = useState({ enabled: false, host: '', port: 1883, username: '', password: '', topic: '', }); const [mqttMsg, setMqttMsg] = useState(''); useEffect(() => { const load = async () => { try { const conn = await get('/api/v1/connectivity'); setStatus(conn); } catch { // ignore errors in demo } try { const wifi = await get('/api/v1/config/wifi'); setWifiConfig(wifi); } catch {} try { const list = await get('/api/v1/config/wifi/scan'); setWifiNetworks(list.networks || []); } catch {} try { const mqtt = await get('/api/v1/config/mqtt'); setMqttConfig(mqtt); } catch {} setLoading(false); }; load(); }, []); const saveWifi = async () => { try { await post('/api/v1/config/wifi', wifiConfig); setWifiMsg('Configuração Wi-Fi gravada!'); } catch { setWifiMsg('Erro ao gravar Wi-Fi.'); } }; const saveMqtt = async () => { try { await post('/api/v1/config/mqtt', mqttConfig); setMqttMsg('Configuração MQTT gravada!'); } catch { setMqttMsg('Erro ao gravar MQTT.'); } }; return ( {loading ? (

A carregar...

) : ( <> {status && (

Status Atual

Wi-Fi: {status.wifi.status} ({status.wifi.ssid})

MQTT: {status.mqtt.status} - {status.mqtt.broker}:{status.mqtt.port}

)}

Configuração Wi-Fi

{wifiMsg &&
{wifiMsg}
}
{ e.preventDefault(); saveWifi(); }}>
setWifiConfig({ ...wifiConfig, password: e.target.value })} />

Configuração MQTT

{mqttMsg &&
{mqttMsg}
}
{ e.preventDefault(); saveMqtt(); }}>
setMqttConfig({ ...mqttConfig, host: e.target.value })} />
setMqttConfig({ ...mqttConfig, port: parseInt(e.target.value || 0) })} />
setMqttConfig({ ...mqttConfig, username: e.target.value })} />
setMqttConfig({ ...mqttConfig, password: e.target.value })} />
setMqttConfig({ ...mqttConfig, topic: e.target.value })} />
)}
); }; export default Connectivity;