SIM800L 与网络服务器的 HTTP 通信
SIM800L HTTP communication with web server
我正在使用 SIM800L 模块和 Arduino Uno 与网络服务器通信。我有一个由 Arduino 读取的传感器。我想将传感器的值存储到我的数据库中。
在我的网络服务器上,我有一个 PHP 页面将数据保存到数据库中。我正在使用这样的 GET 方法:http://www.isj.ir/Samples/sample.php?sen1=27.2
.
我正在为 SIM800L 使用 this library。
但我无法通过此示例传递传感器的值。我很困惑!你能帮帮我,告诉我我该怎么做吗?
sprintf(body, "{\"name\": \"%s\"}", "Arduino");
result = http.post("isj.ir/Samples", body, response);
Serial.println(body);
print(F("HTTP POST: "), result);
if (result == SUCCESS) {
Serial.println(response);
StaticJsonBuffer<32> jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(response);
lastRunTime = millis();
waitForRunTime = root["waitForRunTime"];
print(F("Last run time: "), lastRunTime);
print(F("Next post in: "), waitForRunTime);
}
result = http.get("isj.ir/Samples", response);
print(F("HTTP GET: "), result);
if (result == SUCCESS) {
Serial.println(response);
StaticJsonBuffer<32> jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(response);
lastRunTime = millis();
waitForRunTime = root["waitForRunTime"];
print(F("Last run time: "), lastRunTime);
print(F("Next post in: "), waitForRunTime);
}
所以,在服务器端,我使用此代码将传感器数据存储到 MySql 数据库。
<?php
$servername = "localhost";
$username = "admin";
$password = "#admin#";
$dbname = "admin";
$sen1 = $_GET['sen1'];
$sen2 = $_GET['sen2'];
$sen3 = $_GET['sen3'];
$sen4 = $_GET['sen4'];
$sen5 = $_GET['sen5'];
$sen6 = $_GET['sen6'];
$sdate = $_GET['sdatetime'];
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO SensorTable (sen1, sen2, sen3,sen4,sen5,sen6,sdatetime)
VALUES ('$sen1','$sen2','$sen3','$sen4','$sen5','$sen6','$sdate')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
我可以在任何浏览器地址栏中通过此代码填写我的table。
isj.ir/Samples/sample.php?sen1=1&sen2=5&sen3=10&sen4=15&sen5=20&sen6=33&sdatetime=20171211
现在我正在寻找通过 SIM800L 发送的方式。 (和 arduino UNO)。
我怎样才能改变传感器的价值?以及如何使用 SIM800L
发送
isj.ir/Samples/sample.php?sen1=1&sen2=5&sen3=10&sen4=15&sen5=20&sen6=33&sdatetime=20171211
谢谢。
要使用 GET 方法发送数据,请使用这些 AT 命令:
AT+SAPBR=3,1,"CONTYPE","GPRS"
AT+SAPBR=3,1,"APN","RighTel" // use your Operator APN
AT+SAPBR=1,1
AT+HTTPINIT
AT+HTTPPARA="URL","http://yoursite.com?sen1=xxx&sen2=xxx&..."
AT+HTTPACTION=0 //(0=GET,1=POST,2=HEAD)
那你一定看到+HTTPACTION: 0,200,xxx这样的消息
使用此代码:
AT+HTTPREAD:0,xxx
如果您的 php 代码在处理
之后执行某些操作,您可以看到结果
我正在使用 SIM800L 模块和 Arduino Uno 与网络服务器通信。我有一个由 Arduino 读取的传感器。我想将传感器的值存储到我的数据库中。
在我的网络服务器上,我有一个 PHP 页面将数据保存到数据库中。我正在使用这样的 GET 方法:http://www.isj.ir/Samples/sample.php?sen1=27.2
.
我正在为 SIM800L 使用 this library。
但我无法通过此示例传递传感器的值。我很困惑!你能帮帮我,告诉我我该怎么做吗?
sprintf(body, "{\"name\": \"%s\"}", "Arduino");
result = http.post("isj.ir/Samples", body, response);
Serial.println(body);
print(F("HTTP POST: "), result);
if (result == SUCCESS) {
Serial.println(response);
StaticJsonBuffer<32> jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(response);
lastRunTime = millis();
waitForRunTime = root["waitForRunTime"];
print(F("Last run time: "), lastRunTime);
print(F("Next post in: "), waitForRunTime);
}
result = http.get("isj.ir/Samples", response);
print(F("HTTP GET: "), result);
if (result == SUCCESS) {
Serial.println(response);
StaticJsonBuffer<32> jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(response);
lastRunTime = millis();
waitForRunTime = root["waitForRunTime"];
print(F("Last run time: "), lastRunTime);
print(F("Next post in: "), waitForRunTime);
}
所以,在服务器端,我使用此代码将传感器数据存储到 MySql 数据库。
<?php
$servername = "localhost";
$username = "admin";
$password = "#admin#";
$dbname = "admin";
$sen1 = $_GET['sen1'];
$sen2 = $_GET['sen2'];
$sen3 = $_GET['sen3'];
$sen4 = $_GET['sen4'];
$sen5 = $_GET['sen5'];
$sen6 = $_GET['sen6'];
$sdate = $_GET['sdatetime'];
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO SensorTable (sen1, sen2, sen3,sen4,sen5,sen6,sdatetime)
VALUES ('$sen1','$sen2','$sen3','$sen4','$sen5','$sen6','$sdate')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
我可以在任何浏览器地址栏中通过此代码填写我的table。
isj.ir/Samples/sample.php?sen1=1&sen2=5&sen3=10&sen4=15&sen5=20&sen6=33&sdatetime=20171211
现在我正在寻找通过 SIM800L 发送的方式。 (和 arduino UNO)。 我怎样才能改变传感器的价值?以及如何使用 SIM800L
发送isj.ir/Samples/sample.php?sen1=1&sen2=5&sen3=10&sen4=15&sen5=20&sen6=33&sdatetime=20171211
谢谢。
要使用 GET 方法发送数据,请使用这些 AT 命令:
AT+SAPBR=3,1,"CONTYPE","GPRS"
AT+SAPBR=3,1,"APN","RighTel" // use your Operator APN
AT+SAPBR=1,1
AT+HTTPINIT
AT+HTTPPARA="URL","http://yoursite.com?sen1=xxx&sen2=xxx&..."
AT+HTTPACTION=0 //(0=GET,1=POST,2=HEAD)
那你一定看到+HTTPACTION: 0,200,xxx这样的消息 使用此代码:
AT+HTTPREAD:0,xxx
如果您的 php 代码在处理
之后执行某些操作,您可以看到结果