Arduino mega + esp 8266发送请求

时间:2016-10-15 07:02:50

标签: firebase arduino at-command esp8266

我有一个php脚本,有助于将数据存储到google firebase。

我正在使用此网址访问我的php scipt并输入数据: arduino.byethost22.com/FirebaseTest.php?slot1_data=empty&slot2_data=occupied

我已经尝试了它,它能够将slot1_data存储为空,并将slot2_data存储为已占用。但是,我需要使用arduino发送此URL。我目前正在使用此代码

#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;
}

似乎将get请求发送到php脚本时出现问题。

我正在串口监视器中发送数据包,但在firebase数据中没有任何变化

我也得到了

+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>

它要求我在浏览器中启用javascript,但我使用的是arduino,我该怎么做? 当我在谷歌浏览器中键入相同的uri时,数据可以更新

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我的代码最终可以工作并在线发送数据。我改为使用000webhost作为我的主机服务器而不是byethost,数据管理更新。

我真的不知道为什么,但我想byexost不支持javascript。