PDO::ERRMODE_EXCEPTION]); return $pdo->query(" SELECT uid, online, blocked, current_broker, last_seen, brightness, heap, rssi, fw_ver, fw_ver, TIMESTAMPDIFF(SECOND, last_seen, NOW()) AS ago_s FROM contadores ORDER BY uid ASC ")->fetchAll(PDO::FETCH_ASSOC); } catch (Throwable $e) { return []; } } function pmx_post(array $data): array { $ch = curl_init(PMX_API); curl_setopt_array($ch,[CURLOPT_RETURNTRANSFER=>true,CURLOPT_POST=>true,CURLOPT_POSTFIELDS=>http_build_query($data),CURLOPT_TIMEOUT=>8]); $r = json_decode(curl_exec($ch),true); curl_close($ch); return $r ?? []; } $msg = ''; $msgOk = true; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $uid = preg_replace('/[^0-9A-Fa-f]/', '', $_POST['uid'] ?? ''); if (!$uid) { $msg = 'UID invalido.'; $msgOk = false; } else { $res = pmx_post($_POST); if (!empty($res['ok'])) { $msg = "[$uid] {$_POST['action']} OK"; } else { $msg = $res['error'] ?? 'Erro'; $msgOk = false; } } $qs = $msg ? ($msgOk ? '?ok='.urlencode($msg) : '?err='.urlencode($msg)) : ''; header("Location: /esp_proxmox.php$qs"); exit; } if (isset($_GET['ok'])) { $msg = htmlspecialchars($_GET['ok']); $msgOk = true; } if (isset($_GET['err'])) { $msg = htmlspecialchars($_GET['err']); $msgOk = false; } $devices = pmx_get(); $title = "ESP Devices — Proxmox"; ob_start(); ?>
Sem dispositivos ou erro a ligar ao broker Proxmox.
| UID | Versão | Versão | Ultimo contacto | Online | Estado | Brilho | Ações | Broker |
|---|---|---|---|---|---|---|---|---|
| = h($uid) ?> | = ($d['fw_ver']??'')!=='' ? h($d['fw_ver']) : '—' ?> | = h($d['fw_ver'] ?? '—') ?> | = h($last) ?> = $ago ?> |
onlineoffline | bloqueadoaprovado |
>
= $bri ?>
|