Dashboard de Sensores - SmartCitySystem

Mostrando os últimos 50 registros. A página atualiza automaticamente a cada 30 segundos.

['timestamp' => -1], // Ordena pelos mais recentes primeiro 'limit' => 50, // Limita aos últimos 50 registros ]; $query = new MongoDB\Driver\Query($filter, $options); // Executa a consulta $cursor = $manager->executeQuery("${dbName}.${collectionName}", $query); // --- EXIBIÇÃO DOS DADOS EM UMA TABELA --- echo ''; echo ''; echo ''; $recordCount = 0; foreach ($cursor as $document) { $recordCount++; // Converte o objeto BSON para um array associativo PHP $data = json_decode(json_encode($document), true); // Formata o timestamp para melhor leitura // O timestamp vem no formato ISO 8601, então o PHP consegue interpretá-lo $timestamp = new DateTime($data['timestamp']); $timestamp->setTimezone(new DateTimeZone('America/Sao_Paulo')); // Ajusta para o fuso de São Paulo $formattedTimestamp = $timestamp->format('d/m/Y H:i:s'); echo ''; echo ''; echo ''; echo ''; // Monta os dados específicos de cada tipo de sensor $specificData = ''; if ($data['tipo_sensor'] === 'semaforo') { $specificData = 'Estado: ' . htmlspecialchars(ucfirst($data['estado'] ?? '')) . ''; } elseif ($data['tipo_sensor'] === 'fluxo') { $specificData = 'Veículos: ' . htmlspecialchars($data['quantidade_veiculos'] ?? 0) . ''; if (isset($data['tempo_medio_passagem'])) { $specificData .= ' / Tempo Médio: ' . number_format($data['tempo_medio_passagem'], 2) . 's'; } } echo ''; echo ''; } echo '
TimestampTipo de SensorLocalizaçãoDados Específicos
' . htmlspecialchars($formattedTimestamp) . '' . htmlspecialchars($data['tipo_sensor'] ?? 'N/A') . '' . htmlspecialchars($data['localizacao'] ?? 'N/A') . '' . $specificData . '
'; if ($recordCount === 0) { echo '
Conectado ao banco, mas ainda não há dados na coleção \'sensordata\'.
'; } } catch (Throwable $e) { // Exibe uma mensagem de erro amigável echo '
'; echo 'Ocorreu um erro: ' . $e->getMessage(); echo '
'; } ?>