Arduino mega + esp 8266 sending get request

别来无恙 提交于 2019-12-12 02:43:16

问题


i have a php script which help to store data into google firebase.

i am using this url to access my php scipt and input the data: arduino.byethost22.com/FirebaseTest.php?slot1_data=empty&slot2_data=occupied

i have tried it and it is able to store slot1_data as empty and slot2_data as occupied. However i need to use arduino to send this url. i am using this code currently

#include "SoftwareSerial.h"
#define DEBUG false  // turn debug message on or off in serial
String server = "arduino.byethost22.com";
String uri = "/FirebaseTest.php?slot1_data=empty&slot2_data=occupied";

void setup() {

  Serial3.begin(115200); //serial3 for esp8266
  Serial.begin(115200);
  sendData("AT+RST\r\n",2000,DEBUG); // reset module
  sendData("AT+CWMODE=3\r\n",1000,DEBUG); // configure as access point
  //sendData("AT+CWJAP=\"WifiName\",\"Password\"\r\n",3000,DEBUG);
  //delay(20000);
  sendData("AT+CIFSR\r\n",1000,DEBUG); // get ip address
  sendData("AT+CIPMUX=0\r\n",1000,DEBUG); // configure for single connections

}

void loop() {


Serial3.println("AT+CIPSTART=\"TCP\",\"" + server + "\",80");//start a TCP connection.
if( Serial3.find("OK")) {
Serial.println("TCP connection ready");
} 
delay(1000);
String getRequest = "GET " + uri + " HTTP/1.1\r\n" +
"Host: " + server + "\r\n\r\n";

String sendCmd = "AT+CIPSEND=";//determine the number of caracters to be sent.
Serial3.print(sendCmd);
Serial3.println(getRequest.length() );
delay(500);
if(Serial3.find(">")) { 
  Serial.println("Sending..");
}
Serial3.print(getRequest);
if( Serial3.find("SEND OK")) { 
  Serial.println("Packet sent");
}
while (Serial3.available()) {
String tmpResp = Serial3.readString();
Serial.println(tmpResp);
}

delay(20000);
}





String sendData(String command, const int timeout, boolean debug)
{
String response = "";

Serial3.print(command); // send the read character to the esp8266

long int time = millis();

while( (time+timeout) > millis())
{
while(Serial3.available())
{

// The esp has data so display its output to the serial window
char c = Serial3.read(); // read the next character.
response+=c;
}
}

//if(debug)
//{
Serial.print(response);
//}

return response;
}

it seems that it have problem sending the get request to the php script.

i am getting packet sent in the serial monitor but nothing changed in the firebase data

i am also getting

+IPD,1104:HTTP/1.1 200 OK
Server: nginx
Date: Sat, 15 Oct 2016 09:21:34 GMT
Content-Type: text/html
Content-Length: 875
Connection: keep-alive
Vary: Accept-Encoding
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Cache-Control: no-cache

<html><body><script type="text/javascript" src="/aes.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("b5ebc3b806c39a4a7fc1e4cecb45feab");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; location.href="http://arduino.byethost22.com/FirebaseTest.php?slot1_data=0&slot2_data=1&i=1";</script><noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript></body></html>

It asked me to enable javascript in my browser, but i am using arduino, how do i do it? When i key in the same uri in google chrome, the data can be updated

how do i solve this problem?


回答1:


My code finally can work and send data online. i change to use 000webhost as my host server instead of byethost and the data manage to be updated.

i dont really know why but i guess that byethost dont support javascript.



来源:https://stackoverflow.com/questions/40056080/arduino-mega-esp-8266-sending-get-request

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!