我目前正在构建一个能够将数据发送到网页的模块。我正在使用 MKR ZERO Arduino。基本上,到目前为止,我能够发送一个简单的HTML GET请求,该请求由php文件处理。然后,它将所有内容发送到 mySQL 数据库。GET请求从Arduino发送到网页。然后,php 文件执行其余的工作。首先,这是我的arduino代码的样子:
无效 sendSQL(){
Serial1.println("AT+CIPSTART=1,"TCP","" + server + "",80");
delay(200);
if( Serial1.find("OK")){
Serial.println("TCP connec
tion ready");
delay(200);
String postRequest = "GET " + uri + "?location=" + "'" + location + "'" +
"&sun_influence=" + "'" + sunInfluence + "'" + "&module_name=" + "'" + moduleName + "'" + "
HTTP/1.1rnHost: " + server + "rnrn";
Serial1.println("AT+CIPSEND=1," + String(postRequest.length()));
Serial.println("AT+CIPSEND=1," + String(postRequest.length()));
delay(200);
if(Serial1.available()){
if(Serial1.find(">")) {
Serial.println("Sending..");
Serial.print(postRequest);
Serial1.print(postRequest);
delay(200);
if(Serial1.find("SEND OK")){
Serial.println("Packet sent");
Serial1.println("AT+CIPCLOSE=1");
delay(200);
}
else
Serial.println("Packet cannot be sent");
}
else
Serial.println("ERROR");
}
else
Serial.println("Nothing received");
}
else
Serial.println("TCP connection failed");
}
php 文件看起来像这样:
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "gestion_lux";
创建连接
$conn = 新的 mysqli($servername, $username,$password, $dbname);
检查连接
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$val1 = $_GET['location'];
$val2 = $_GET['sun_influence'];
$val3 = $_GET['module_name'];
$sql = "INSERT INTO room(location,sun_influence,module_name) VALUES ($val1,$val2,$val3);";
if ($conn->query($sql) === TRUE) {
echo "Room parameters Saved Successfully!";
} else {
echo "Error:" . $sql . "
" . $conn->error;
}
$conn->close();
?>
所有这些部分都运行良好!不幸的是,在我的情况下,我将无法使用此解决方案。事实上,这意味着在测试的每一端(大约 1 分钟)发送数据,这是一种能源浪费。在我的情况下,我的模块由 3.3V 电池供电。我的想法是在我的 MKR ZERO 的 SD 卡中收集尽可能多的数据,例如,每 30 分钟一次发送所有内容。这样,我就会浪费更少的能源。
问题是我在HTTP / Php处理方面不是那么好,这就是为什么我寻求帮助。我的想法是在我的SD卡中创建一个文本文件(我已经知道如何做到这一点),并在30分钟后将其发送到网页。是否可以通过 HTML 请求来做到这一点?那么,我应该如何处理php文件中的数据呢?php 应该能够将每个测试每行发送到数据基线行。也许我的解决方案并不聪明,所以我愿意听取任何建议!