我的raspberry-pi正在从Arduino获取传感器读数并将它们存储在数据库中, 我想将这些数据库值发送到我的网站,或者将它存储在网络上的数据库中,有人可以告诉我如何做到这一点。 我可以使用哪种语言,或者PHP是否可以
答案 0 :(得分:1)
使用哪种语言并不重要,有无穷无尽的可能性。是的,你可以在服务器端用php做到这一点。在这种情况下,你需要两件事:
wget
或cURL
。您可以使用您希望在raspi上使用的任何语言在脚本中使用这两个实用程序。 另一种方法是直接通过互联网公开数据库服务器,并直接从客户端(raspi)进行数据库查询。这需要更少的组件,但显然也提供更少的自由。
答案 1 :(得分:1)
如果arduino通过HTTP调用发送数据,那么只需要使用PHP,并将其放入免费的Web服务中。只需记住更新您的PHP以使用您的免费服务数据库,并将arduino指向您的新网站。
答案 2 :(得分:0)
我正在使用个人项目来回答这个问题。
按照步骤:
此Youtube video可以帮助您完成所需的一切(域名创建,数据库创建等)
服务器端程序:这个Youtube link也可能有用,但我会在这里放置自己的代码。
file name: insert.php
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
//Creating Array for JSON response
$response = array();
// Check if we got the field from the user
//here, we're getting only one parameter(puissance) from raspberry
if (isset($_POST['puissance'])) {
// Include database connection
// all your database credentials(hostname, dbname, usrname,...) should
//be written in db_connect.php
//file
include_once 'db_connect.php';
$puissance = $_POST['puissance'];
date_default_timezone_set('Africa/Casablanca');
$dt = date('Y-m-d H:i:s');
// SQL query to insert data in sensorpower1
$sql = "INSERT INTO sensorpower1(sensor_power, power_date)
VALUES('$puissance','$dt');";
$result = mysqli_query($conn, $sql);
// Check for succesfull execution of query
if ($result) {
// successfully inserted
$response["success"] = 1;
$response["message"] = "Puissance insérée avec succès.";
// Show JSON response
echo json_encode($response);
} else {
// Failed to insert data in database
$response["success"] = 0;
$response["message"] = "Une erreur s'est produite";
// Show JSON response
echo json_encode($response);
}
} else {
// If required parameter is missing
$response["success"] = 0;
$response["message"] = "Paramètre manquant";
// Show JSON response
echo json_encode($response);
}
?>
3.覆盆子中的Python代码。变量'puissance'从arduino接收它的值,这就是为什么你会在python代码中看到串行或readline之类的东西。我这里只介绍了覆盆子到服务器部分。见代码
import serial
import requests
import time
ser = serial.Serial("/dev/ttyACM0")
ser.baudrate = 9600
data = ser.readline()
puissanceW = data
adresse = 'https://??????.000webhostapp.com/api/insert.php'
def meter():
while True:
requette = {'puissance': '+puissanceW+'}
try:
res = requests.post(adresse, data=requette)
print(res.text)
except:
print "connection failed"
break
#sleep for desired amount of time
if __name__ == "__main__":
while True:
meter()
time.sleep(30)