I have a arduino uno with an ESP8266. I am trying to send data from 2 sensors on my board to a database i created using xampp locally. I can send data to Thingspeak, but i cant seem to make my database insertion work. My code makes the String for the URL fine, i can copy it and insert it into my URL and it works. Bur arduino can't seem to send the url itself, even though it can send the thingspeak url. My php code is not the problem btw.
Code for my thingspeak that is working fine
void esp_8266() // Programmet esp_8266
{
String cmd = "AT+CIPSTART=\"TCP\",\""; // Laver en ny cmd string, med kommandoen "AT+CIPSTART=\"TCP\",\"
cmd += "184.106.153.149"; // Tilføjer Thinkspeaks IP til cmd stringen
cmd += "\",80"; // Tilføjer en port til cmd stringen
esp8266.println(cmd); // Kører cmd stringen på esp'en
if(esp8266.find("Error")) // Hvis esp'en finder en fejl..
{
Serial.println("AT+CIPSTART error"); // ..Skriver den "AT+CIPSTART error" i serial monitoren..
return; // ..og stopper programmet, og retunerer til der hvor den bliver kaldt
}
String getStr = "GET /update?api_key="; // Starter en getStr string og tilføjer "GET /update?api_key="
getStr += apiKey; // Tilføjer apiKey'en til getStr stringen
getStr +="&field1="; // Tilføjer "&field1=" til getStr stringen
getStr += String(hum); // Tilføjer fugtighed fra floaten hum til getStr stringen
getStr +="&field2="; // Tilføjer "&field2=" til getStr stringen
getStr += String(temp); // Tilføjer temperaturen fra floaten hum til getStr stringen
getStr += "\r\n\r\n"; // Tilføjer en return, new line, return, new line kommando til getStr stringen
cmd = "AT+CIPSEND="; // Laver en ny cmd string, med kommandoen "AT+CIPSEND="
cmd += String(getStr.length()); // Tilføjer længden på getStr til cmd'en
esp8266.println(cmd); // Skriver stringen cmd til esp'en og gør klar til at sende
Serial.println(cmd);
if(esp8266.find(">")) // Hvis den finder ">"..
{
esp8266.print(getStr);
Serial.println("Data sendt til Thingspeak"); // ..så printer den stringen getStr og dermed sender stringen..
}
else // ..ellers..
{
esp8266.println("AT+CIPCLOSE"); // ..sender den beskeden "AT+CIPCLOSE" til esp'en og dermed stopper med at sende
Serial.println("Fejl - Kunne ikke sende data til Thingspeak"); // Skriver "AT+CIPCLOSE" til serial monitoren, så man kan se den ikke fik sendt
}
delay(20000); // En pause på 20 sekunder, da Thinkspeak skal bruge 15 sekunders pause mellem hver besked
}
Code for my database, that is not working
void database() // Programmet esp_8266
{
String cmd = "AT+CIPSTART=\"TCP\",\""; // Laver en ny cmd string, med kommandoen "AT+CIPSTART=\"TCP\",\"
cmd += "127.0.0.1"; // Tilføjer Thinkspeaks IP til cmd stringen
cmd += "\",80"; // Tilføjer en port til cmd stringen
esp8266.println(cmd); // Kører cmd stringen på esp'en
if(esp8266.find("Error")) // Hvis esp'en finder en fejl..
{
Serial.println("DB NO CONNECTION"); // ..Skriver den "AT+CIPSTART error" i serial monitoren..
return; // ..og stopper programmet, og retunerer til der hvor den bliver kaldt
}
String getDB = "GET /inno/insertdata.php?"; // Starter en getStr string og tilføjer "GET /update?api_key="
getDB +="sensor="; // Tilføjer apiKey'en til getStr stringen
getDB +="13"; // Tilføjer "&field1=" til getStr stringen
getDB +="&temperatur=";
getDB += String(temp); // Tilføjer fugtighed fra floaten hum til getStr stringen
getDB +="&humidity="; // Tilføjer "&field2=" til getStr stringen
getDB += String(hum); // Tilføjer temperaturen fra floaten hum til getStr stringen
getDB += "\r\n\r\n"; // Tilføjer en return, new line, return, new line kommando til getStr stringen
cmd = "AT+CIPSEND="; // Laver en ny cmd string, med kommandoen "AT+CIPSEND="
cmd += String(getDB.length()); // Tilføjer længden på getStr til cmd'en
esp8266.println(cmd);
Serial.println(cmd);
esp8266.print(getDB);
esp8266.println("AT+CIPCLOSE"); // ..sender den beskeden "AT+CIPCLOSE" til esp'en og dermed stopper med at sende
Serial.println("DB Sendt");
Serial.println(getDB);
delay(10000); // Skriver "AT+CIPCLOSE" til serial monitoren, så man kan se den ikke fik sendt
} // En pause på 20 sekunder, da Thinkspeak skal bruge 15 sekunders pause mellem hver besked