将数据从raspberrypi发送到网络服务器

时间:2014-02-26 09:17:11

标签: php apache arduino raspberry-pi

我的raspberry-pi正在从Arduino获取传感器读数并将它们存储在数据库中, 我想将这些数据库值发送到我的网站,或者将它存储在网络上的数据库中,有人可以告诉我如何做到这一点。 我可以使用哪种语言,或者PHP是否可以

3 个答案:

答案 0 :(得分:1)

使用哪种语言并不重要,有无穷无尽的可能性。是的,你可以在服务器端用php做到这一点。在这种情况下,你需要两件事:

  1. 在客户端(raspi),您向服务器发出http(s)请求,发送数据作为请求参数(GET或POST)。简单的工具是wgetcURL。您可以使用您希望在raspi上使用的任何语言在脚本中使用这两个实用程序。
  2. 在服务器上,您的http服务器为每个接收数据的请求运行一个小的PHP脚本,进行一些合理性检查(可能还有一个身份验证),然后将数据存储到某个数据库中。
  3. 另一种方法是直接通过互联网公开数据库服务器,并直接从客户端(raspi)进行数据库查询。这需要更少的组件,但显然也提供更少的自由。

答案 1 :(得分:1)

如果arduino通过HTTP调用发送数据,那么只需要使用PHP,并将其放入免费的Web服务中。只需记住更新您的PHP以使用您的免费服务数据库,并将arduino指向您的新网站。

答案 2 :(得分:0)

我正在使用个人项目来回答这个问题。

按照步骤:

  1. 我在000webhost

    创建了免费的网络托管和免费域名

    Youtube video可以帮助您完成所需的一切(域名创建,数据库创建等)

  2. 服务器端程序:这个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. 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)