Problema mostrar datos en web con ethernet shield

  
#include "EmonLib.h"
#include <SPI.h>
#include <Ethernet.h>


float Irms, Potencia; 
long last_read = 1;
float volts =230.00; // Voltage

unsigned long periodo = 3000;
unsigned long tiempoAnterior = 0;

byte mac[] = {
  0x90, 0xA2, 0xDA, 0x0D, 0xA0, 0x88
};

IPAddress ip(192,168,0,229);

// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server = EthernetServer(80);

EnergyMonitor energyMonitor;


void setup() {
Serial.begin(9600);
delay(5000);
energyMonitor.current(0, 1.6 );


  Serial.println("Servidor Web Ethernet Temperatura & Humedad");
 
  // Iniciar la conexión Ethernet
  Ethernet.begin(mac, ip);
 
  // Verificar que el Ethernet Shield está correctamente conectado. 
  if (Ethernet.hardwareStatus() == EthernetNoHardware) {
    Serial.println("Ethernet shield no presente :(");
    while (true) {
      delay(1); // do nothing, no point running without Ethernet hardware
    }
  }
   
  if (Ethernet.linkStatus() == LinkOFF) {
    Serial.println("El cable Ethernet no está conectado o está defectuoso.");
  }
 
  // Iniciar el servidor
  server.begin();
 
}



void loop() {
 
  if ( millis() - last_read > 8000) { // actualizar cada 8 segundos
    updateSCT();
    last_read = millis();
  }
  listenForClients();

}

void updateSCT() {

double Irms = energyMonitor.calcIrms(1484);
// Calculamos la potencia aparente
double Potencia = Irms * volts;
// Mostramos la información por el monitor serie

}

void listenForClients() {
 
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    
    Serial.print("nuevo cliente conectado desde ");
    Serial.println( client.remoteIP() );
    
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
 
        if (c == '\n' && currentLineIsBlank) {
          // Enviar cabecera de respuesta http
 
          // protocolo HTTP 1.1
          client.println("HTTP/1.1 200 OK");
          // Formato del contenido en HTML
          client.println("Content-Type: text/html");
          // Cerrar conexión al terminar la respuesta
          client.println("Connection: close");
          // El navegador refresca la página cada 5 segundos
          client.println("Refresh: 10");  
          client.println();
 
          // Enviar pagina web en HTML
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          // Enviar temperatura
          client.print( "Corriente consumida: " );
          client.print(Irms);
          client.println( " Amperios" );
          // Enviar humedad
          client.print( "Potencia consumida: " );
          client.print(Potencia);
          client.println( " Watios" );
 
          client.println("</html>");
          break;
        }

Buenas noches queridos amigos. Estoy realizando un proyecto, en el cual estoy midiendo la corriente con un SCT-013-00. Para la comunicación web, finalmente me he decidido por una ethernet shield.

Consigo mostrar los textos por la web, pero no consigo que se muestren los datos actualizados del sensor.

image

He realizado pruebas y el sensor funciona puesto que muestra los datos por el monitor serial.

Espero que podáis ayudarme porque estoy desesperado.

para hacer que se actualicen o le agregas un refresh a la parte HTML o bien introduces AJAX o javascript para hacerlo

Gracias surbyte por tu respuesta!

Cómo podría hacerlo, tendría que agregarlo al código en IDE ? O como?

Busca Arduino Ajax

Si quieres algo simple para probar, inyecta esto en el html que devuelves. al cliente conectado, antes del cierre </html> manda esta cadena.

String recargarPagina="<script>setTimeout('location.reload(true);', 5*1000);</script>";
Cliente.println(recargarPagina);

Donde el 5 es el número de segundos que quieres que tarde en recargarte la página.
Saludos.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.