«запросы» на отправку данных из raspberry pi в базу данных в сети не работают - PullRequest
0 голосов
/ 21 апреля 2020

Для моего проекта я использую raspberry pi, который после обработки значений от датчика с помощью функции conv_aqi () должен отправить их в базу данных, размещенную на 000webhost, чтобы их могли видеть все. Код не выдает ошибок, но значения отсутствуют в БД. Я пытаюсь передать эти значения json. Это скрипт python:

import requests
def sendDatatoServer():
url = 'https://*******.000webhostapp.com/api/insert.php'

data = {
            'aqi_2_5' : 'conv_aqi(pmt_2_5)',
            'aqi_10' : 'conv_aqi(pmt_10)',
        }

print(data)
res = requests.post(url, data)
print(res.text)

sendDatatoServer()

, где вставка. php на 000webhost выглядит следующим образом:

<?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
if (isset($_GET['AQI_2_5']) && isset($_GET['AQI_10'])) {

    $AQI_2_5 = $_GET['AQI_2_5'];
    $AQI_10 = $_GET['AQI_10'];

    // Include data base connect class
    $filepath = realpath (dirname(__FILE__));
    require_once($filepath."/db_connect.php");

    // Connecting to database 
    $db = new DB_CONNECT();

    // Fire SQL query to insert data in sensorData
    $result = mysql_query("INSERT INTO sensorData(AQI_2_5,AQI_10) VALUES('$AQI_2_5','$AQI_10')");

    // Check for succesfull execution of query
    if ($result) {
        // successfully inserted 
        $response["success"] = 1;
        $response["message"] = "Data from sensor successfully created.";

        // Show JSON response
        echo json_encode($response);
    } else {
        // Failed to insert data in database
        $response["success"] = 0;
        $response["message"] = "Something went wrong";

        // Show JSON response
        echo json_encode($response);
    }
} else {
    // If required parameter is missing
    $response["success"] = 0;
    $response["message"] = "Parameter(s) are missing. Please check the request";

    // Show JSON response
    echo json_encode($response);
}
?>

И что я получаю "Параметры отсутствуют. Пожалуйста, проверьте запрос ". Можно мне помочь понять, где я ошибаюсь? Спасибо

1 Ответ

1 голос
/ 21 апреля 2020

Ваш код Python использует HTTP POST для отправки данных в теле, но ваш insert.php был написан так, чтобы ожидать параметры строки запроса от запроса GET.

Самое простое, что нужно сделать, это изменить Ваш Python код для передачи параметров строки запроса с использованием GET и атрибута params запроса:

res = requests.get(url, params=data)
...