Enviando datos a través de la red a través de MicroController (Sparkfun Thing // ESP8266)

0

Me estoy frustrando y sigo golpeando una pared. Mi configuración básica es que tengo un servidor Apache ejecutándose en mi Raspberry Pi y estoy buscando enviar datos de sensores a través de la red inalámbrica a los que ambos están conectados para publicar datos en vivo en el servidor. He probado la configuración del servidor y puedo transmitir datos aleatorios desde un servidor WAMP que también está en la red. Así que creo que el lado del servidor está bien. Lado del microcontrolador Tengo un Sparkfun Thing, se conecta a la red y obtiene una dirección IP a la que puedo hacer ping. Pero parece que no logro enviar los datos correctamente. ¿Alguien me puede dar algún consejo sobre mi código?

#include <ESP8266WiFi.h>

//Raspberry Pi Login Credentials.
const char WiFiSSID[] = "Alamo";
const char WiFiPSK[] = "12345678";

//Pin Definitions
const int LED_PIN = 5; 
const int ANALOG_PIN = A0;

//Variables
const char host[] = "192.168.44.1";


void setup() 
{
  pinMode(LED_PIN, OUTPUT);
  pinMode(ANALOG_PIN, INPUT);

  byte ledStatus = LOW;

  WiFi.mode(WIFI_STA);
  WiFi.begin(WiFiSSID, WiFiPSK);

  while (WiFi.status() != WL_CONNECTED)
  {
    // Blink the LED
    digitalWrite(LED_PIN, ledStatus); // Write LED high/low
    ledStatus = (ledStatus == HIGH) ? LOW : HIGH;

    delay(100);
  }
}

void loop() 
{
//for testing purposes set temp to a default value.
//int temp = analogRead(ANALOG_PIN);
int temp = 43;

  WiFiClient client;
  const int httpPort = 80;

  if (!client.connect(host, httpPort)) {
    digitalWrite(LED_PIN, HIGH);
    Serial.println("connection failed");
    return;
  }

String data = "temp1=" + (String)temp;
String url = "GET /data.php?" + data + " HTTP/1.1";

client.println(url);
  client.println("Host: 192.168.44.1");
  client.println("Connection: close");
  client.println();
  client.flush();
  delay(500);

  //End of Send.  
  digitalWrite(LED_PIN, HIGH);
  delay(100);

    while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
  client.stop(); //Stopping client
  //Deep sleep not necessary for testing
  //ESP.deepSleep(60U*60*1000000); //U for unsigned
  delay(100); //for above sleep
}
enter code here

Gracias, Pete

    
pregunta Stampede

1 respuesta

1

Este código funciona de hecho. Lo que encontré que está sucediendo es que el servidor Apache está segregando datos. Entonces, otros usuarios de la red no pueden ver lo que mi Microcontrolador está enviando, solo puede ver los datos.

Tuve la suerte de ser conducido por un usuario de otro foro para verificar el registro de acceso de Apache. Lo que encontré fue,

192.168.44.101 - - [02/Jan/2016:13:33:39 +0000] "GET /data.php?temp1=34 HTTP/1.1" 200 468 "-" "-"
192.168.44.101 - - [02/Jan/2016:13:33:39 +0000] "GET /data.php?temp1=34 HTTP/1.1" 200 468 "-" "-"
192.168.44.101 - - [02/Jan/2016:13:33:39 +0000] "GET /data.php?temp1=34 HTTP/1.1" 200 468 "-" "-"

Lo que significa que se están recibiendo mis datos, pero simplemente los demás clientes de la red no pueden verlos. ¿Alguien sabe la solución desde aquí? ¿Cómo puedo hacer que la variable enviada sea visible globalmente para todos los conectados?

    
respondido por el Stampede

Lea otras preguntas en las etiquetas