Ir para conteúdo
Fórum Script Brasil

MarkAngel11

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre MarkAngel11

MarkAngel11's Achievements

0

Reputação

  1. Olá galera. Essa é a primeira vez que estou escrevendo pois me deparei com algo complicado (pra mim pelo menos). Contextalizando: Estou fazendo um sistema para monitorar e gerenciar as lampadas da minha casa. O projeto consiste em servidor web Apache, PHP e comando direto para microcontrolador (Arduino em questao). Pois bem. Todas as conexoes e funcionamento estão perfeitos, mas me deparei com a necessidade de fazer uma atualizacao em tempo real. A minha aplicacao está dessa forma: index.php: contem as imagens das lampadas. Quando a lampada esta apagada, clico nela e então rodo 3 funcoes basicas: 1. Seto no banco de dados o valor 1 (ligada) para a lampada do ID correspondente; 2. Atualizado o arquivo data.txt com a tag <img src="on.jpg"> (long polling) 3. Mando pro arduino o codigo correspondente para ligar a lampada correspondente. lampada.php: contem as funcoes necessarias para os passos acima. O meu problema esta agora em realizar o Long Polling para atualizar a imagem da lampada na tela no exato momento em que o usuario clica na lampada. Achei uma funcao na internet e realmente funcinou, mas me deparei com estas necessidades: 1. Passar o ID da lampada para a funcao que esta no javascript/ajax para que ele corretamente pegue esta informação e atualize a lampada correta. 2. Realizar o long polling corretamente. Aqui vai o trecho do codigo: <script type="text/javascript" charset="utf-8"> var timestamp = null; function waitForMsg() { $.ajax({ type: "GET", url: "codlamp/getdata.php?timestamp=" + timestamp, async: true, cache: false, success: function (data) { var json = eval('(' + data + ')'); if (json['msg'] != "") { //alert( json['msg'] ); //Display message here $("#lampada4").empty(); $("#lampada4").append(json['msg'] + "<hr>").slideDown("slow"); } timestamp = json["timestamp"]; setTimeout("waitForMsg()", 1000); }, error: function (XMLHttpRequest, textStatus, errorThrown) { // alert("error: "+textStatus + " "+ errorThrown ); setTimeout("waitForMsg()", 1000); } }); } $(document).ready( function () { $('.jclock').jclock(); waitForMsg(); $("#lampada4").click(function () { $("#lampada4").load("lampada.php?num=4"); }); }); </script> No final desse arquivo, tenho as tags divs que possuem a imagem da lampada e que deve ser atualizada. Detalhe que são 15 lampadas e 15 tags. Portando preciso passar o ID para a funcao realizar suas consultas pelo id e retornar atualizacao da imagem que foi clicada. <body> <?php include 'inicial.php'; ?> <div></div> <div id="planta"></div> <div id="titulo">Planta Baixa - Marcus Vinicius</div> <div class="lampada" id="lampada1"><?php consultaEstadoLamp(1); ?><br /></div> <div class="lampada" id="lampada2"><?php consultaEstadoLamp(2); ?><br /></div> <div class="lampada" id="lampada3"><?php consultaEstadoLamp(3); ?><br /></div> <div class="lampada" id="lampada4"><?php consultaEstadoLamp(4); ?><br /></div> <div class="lampada" id="lampada5"><?php consultaEstadoLamp(5); ?><br /></div> <div class="lampada" id="lampada6"><?php consultaEstadoLamp(6); ?><br /></div> </body> O arquivo getdada.php é esse: <?php $filename= dirname(__FILE__)."/data4.txt"; $lastmodif = isset( $_GET['timestamp'])? $_GET['timestamp']: 0 ; $currentmodif=filemtime($filename); while ($currentmodif <= $lastmodif) { usleep(10000); clearstatcache(); $currentmodif =filemtime($filename); } $response = array(); $response['msg'] = file_get_contents($filename); $response['timestamp']= $currentmodif; echo json_encode($response); ?> A funcao ConsultaEstadoLampada() é irrelevante na duvida, mas para terem uma ideia do que estou fazendo vou colar aqui: function consultaEstadoLamp($num) { include 'conexao.php'; $query = 'SELECT estado, local FROM lampada WHERE lampada =' . $num; $result = mysqli_query($link, $query); while ($row = mysqli_fetch_array($result)) { $estado = $row['estado']; $local = $row['local']; } if ($estado == 1) { //deleta o arquivo data.txt unlink('codlamp/data' . $num . '.txt'); //cria um novo arquivo data.txt $fp = fopen('codlamp/data' . $num . '.txt', "w+"); //coloca dentro a atualizacao pois escrita no banco $escreve = fwrite($fp, '<img src="imagens/on.png" width="40" height="32">' . '<br/> ' . $local); //fecha conexao com arquivo fclose($fp); } else { //deleta o arquivo data.txt unlink('codlamp/data' . $num . '.txt'); //cria um novo arquivo data.txt $fp = fopen('codlamp/data' . $num . '.txt', "w+"); //coloca dentro a atualizacao pois escrita no banco $escreve = fwrite($fp, '<img src="imagens/off.png" width="40" height="32">' . '<br/> ' . $local); //fecha conexao com arquivo fclose($fp); } } Aguardo resposta!
×
×
  • Criar Novo...