Arduino - GET 请求和数据发布到 mySQL

Arduino - GET request and data posting to mySQL

我有一个问题。

我正在尝试设置简单的服务器,它将从传感器发送数据到 mySQL。 路径 /bezp/data.php?temperature="number" 正在工作,当我在网络浏览器中执行此操作时。我也可以在串行监视器中看到文本“已连接”,因此它进入 IF,但数据库仍然不会更新。

A​​rduino代码:

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {192, 168, 1, 101 }; //Enter the IP of ethernet shield
byte serv[] = {192, 168, 1, 16} ; //Enter the IPv4 address
EthernetClient cliente;
void runWebSetup() {
Ethernet.begin(mac, ip);
}
void runWebLoop(float temp) {

if (cliente.connect(serv, 80)) { //Connecting at the IP address and port we saved before
  Serial.println("connected");
  cliente.print("GET /bezp/data.php?"); //Connecting and Sending values to database
  cliente.print("temperature=");
  cliente.print(temp);

  cliente.stop(); //Closing the connection
}
else {
// if you didn't get a connection to the server:
Serial.println("connection failed");
}
delay(5000);
}

温度传感器也在工作,我正在调用另一个文件中的函数。

您从未完成请求内容 - 您只发送了一半的 HTTP 请求。

您发送的是:

"GET /bezp/data.php?temperature=123"

但是一个有效的请求是这样的:

"GET /bezp/data.php?temperature=123 HTTP/1.0\r\n\r\n" 用于 HTTP 1.0

"GET /bezp/data.php?temperature=123 HTTP/1.1\r\nHost: 192.168.1.16\r\n\r\n" 用于 HTTP 1.1。

您必须发送方法,后跟路径和协议以及 CRLF,然后是任何 headers(每个都以 CRLF 结尾),然后是另一个 CRLF。

您缺少协议(可能 header(s))和 CRLF。

参见docs