Enviar datos de arduino a servidor web no funciona

Saludos, estoy realizando un proyecto de leer una temperatura y enviarla a una base de datos en mi hosting de pago, localmente con un servidor xamp me funciona perfectamente y envia los datos, pero al cambiar tanto el (char server[] = "www.misterpollo.co":wink: con la direccion de mi servidor de hosting y tambien la linea (client.println("Host: www.misterpollo.co"); igual con la direccion de mi servidor de hosting , no envia nada, ya he mirado un sin numero de foros y paginas y no logro hacerlo funcionar, agradezco si alguien me ayuda, muchas gracias

Se que esto se ha preguntado mucahs veces en varios otros hilos y paginas, pero creanme que no logro solucionarlo, me siento frustrado

este es mi codigo de arduino:

include "DHT.h"
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Setting MAC Address

#define DHTPIN 2
#define DHTTYPE DHT11

DHT dht(DHTPIN,DHTTYPE);

float humidityData;
float temperatureData;

har server[] = "www.misterpollo.co";
byte ip [] = {192, 168, 0, 102}; 
EthernetClient client; 

/* Setup for Ethernet and RFID */

void setup() {
  Serial.begin(9600);
  dht.begin();
  if (Ethernet.begin(mac) == 0) {
  Serial.println("Failed to configure Ethernet using DHCP");
  Ethernet.begin(mac, ip);
  }
  else{
    Serial.println("conectado");

  }
  delay(1000);
}
//------------------------------------------------------------------------------


/* Infinite Loop */
void loop(){
  humidityData = dht.readHumidity();
  temperatureData = dht.readTemperature(); 
  Sending_To_phpmyadmindatabase(); 
  delay(3000); // interval
}

 void Sending_To_phpmyadmindatabase()   //CONNECTING WITH MYSQL
 {
   if (client.connect(server, 80)) {
    Serial.println("conectado");
    // Make a HTTP request:

    Serial.print("GET /sensores/anadir.php?humidity=");
    client.print("GET /sensores/anadir.php?humidity="); 
    Serial.print(humidityData);
    client.print(humidityData);
    client.print("&temperature=");
    Serial.print("&temperature=");
    client.println(temperatureData);
    Serial.print(temperatureData);
    client.println(" HTTP/1.0");
    client.println("Host: www.misterpollo.co");
    client.println();
    client.println("Connection: close");
    
  } 
  else {
    // if you didn't get a connection to the server:
    Serial.println("connection failed");
  }
 }

y este es el codigo anadir.php

<?php
      class dht11{
 public $link='';
 function __construct($temperature, $humidity){
  $this->connect();
  $this->storeInDB($temperature, $humidity);
 }
 
 function connect(){
  $this->link = mysqli_connect("xxx","xxx","xxx","xxx") or die('Cannot connect to the DB');
  mysqli_select_db($this->link,'misterpo_sensores') or die('Cannot select the DB');
 }
 
 function storeInDB($temperature, $humidity){
  $query = "insert into registros set humidity='".$humidity."', temperature='".$temperature."'";
  $result = mysqli_query($this->link,$query) or die('Errant query:  '.$query);
 }
 
}
if($_GET['temperature'] != '' and  $_GET['humidity'] != ''){
 $dht11=new dht11($_GET['temperature'],$_GET['humidity']);
}
  ?>

Adradezco mucho su ayuda.

Dudo que ingreses a tu servidor sin usuario y contraseña, no los veo en tu código para poder loggearte.
Has probado enviarlo desde un navegador ?
Esta linea en php

$this->link = mysqli_connect("xxx","xxx","xxx","xxx")

requiere $servidor, $user, $password, $database
Estas enviando los datos
Imagino que serán algo como

$servidor = www.misterpollo.co";
$user = "root"; // esto en xamp no creo que sea el mismo en este domnio web
$password = ""; // de nuevo, esto es cómun en xampp y no en un dominio web
$database ="loquecorresponda"; 

no puse los datos de la bd por seguiridad por eso los remplaze por xxx sin embargo si hago la insercion directamente por el navegador si los ingresa

https://www.misterpollo.co/sensores/anadir.php?humidity=50&temperature=34

con eso descarte que el problema sea con la bd, es como si no llegara nada desde mi arduino a la pagina, lo que me quema la cabeza es porque en localhost con xamp llegan sin problemas, en teoria solo debia cambiar el server y el host, pero no da.

Creo que en la petición get te faltaría incluir al final una línea vacía:

client.println();

Y segurarte que desde otro PC puedas acceder al servidor web, es decir que no sea un problema de firewall, o que el servicio php solo esté escuchando por el interfaz loopback.
Saludos.

espera, acabo de ver que estás accediendo por el puerto 80 desde el arduino pero la url que pegas que te funciona es https (puerto 443).
Revisa también que te funcione la inserción por "http"
Saludos.

he logrado solucionar el problema, haciendo uso de un modulo esp8266 y con core 3.0.0, con el siguiente codigo:

#include <ESP8266WiFi.h>
#include <WiFiClient.h> 
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>
#include "DHT.h"
#include <SPI.h>

/* Set these to your desired credentials. */

#define DHTPIN 2
#define DHTTYPE DHT11
#define ssid "xxx"            // WIFI SSID here                                   
#define password "xxx"        // WIFI password here

DHT dht(DHTPIN,DHTTYPE);

float humedad;
float temperatura;


//=======================================================================
//                    Power on setup
//=======================================================================

void setup() {
  delay(1000);
  Serial.begin(115200);
  WiFi.mode(WIFI_OFF);        //Prevents reconnection issue (taking too long to connect)
  delay(1000);
  WiFi.mode(WIFI_STA);        //This line hides the viewing of ESP as wifi hotspot
  
  WiFi.begin(ssid, password);     //Connect to your WiFi router
  Serial.println("");

  Serial.print("Connecting");
  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
dht.begin();
  }

  //If connection successful show IP address in serial monitor
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());  //IP address assigned to your ESP
}

//=======================================================================
//                    Main Program Loop
//=======================================================================
void loop() {
  humedad = dht.readHumidity();
  delay(2000);
  temperatura = dht.readTemperature();
  Serial.print("humedad = ");
  Serial.println(humedad);
  Serial.print("temperatura = ");
  Serial.println(temperatura);
  HTTPClient http;    //Declare object of class HTTPClient
  WiFiClient client;
  String ADCData, station, postData;
  int adcvalue=analogRead(A0);  //Read Analog value of LDR
  ADCData = String(adcvalue);   //String to interger conversion
  station = "A";
 Serial.println(humedad);
  Serial.println(station);
  //Post Data
  postData = "status=" + ADCData + "&station=" + station ;
  
  http.begin("http://www.misterpollo.com.co/sensores/mipagina.php");              //Specify request destination
  http.addHeader("Content-Type", "application/x-www-form-urlencoded");    //Specify content-type header

  int httpCode = http.POST(postData);   //Send the request
  String payload = http.getString();    //Get the response payload

  Serial.println(httpCode);   //Print HTTP return code
  Serial.println(payload);    //Print request response payload

  http.end();  //Close connection
  
  delay(60000);  //Post Data at every 5 seconds
}

ahora me surge un problema, cuando mantengo con energia desde un adaptador a la placa, todo funciona ok, pero cuando quito la corriente y la vuelvo a conectar (simulando un corte de energia electrica) ya no sigue enviando nada a mi pagina, tengo que volver a cargarle el codigo desde el id con el compuador, hay alguna manera de que pueda seguir funcionando despues de un corte de energia?

Adicionalmente el sensor de temperatura me esta dando registros NAN, y no se que pueda ser.

int httpCode = http.POST(postData); 

No entiendo, qué usabas antes, cómo lo tienes conectado?
antes hacias invocaciones con método "GET" y ahora "POST", algo debes haber cambiado en el PHP también. dices que si te funciona con core3 pero qué tenias antes?
Si no dices exactamente cómo lo tienes cableado etc etc no podrán ayudarte.

esque antes usaba una arduino uno con una ethernet shield, ahora uso una placa arduino uno que tiene integrado un esp8266 por eso lo del core 3.0.0 peor de esp8266 y otro detalle, cambie de dominio, al parececer el primer dominio me daba un error 400

Moderador
@dfcc1 tanto cuesta informar a quien te esta ayudando de los cambios, porque la persona que te ayuda invierte tiempo y tu como muchos pareces no darte cuenta de eso. Te lo digo constructivamente pero ten mas consideración y lee de nuevo las normas para siempre explicar el contexto de la situación. Si @DanX3 no te comenta lo del cambio de POST a GET tu no hubieras dicho nada.
Es falta de consideración!!

pero lo menciono al inicio, ... "he logrado solucionar el problema, haciendo uso de un modulo esp8266 y con core 3.0.0, con el siguiente codigo:""

Moderador
Te envío privado para no desviar tu hilo

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