从Python脚本到网站的数据

从Python脚本到网站的数据

这涉及到树莓派和apache2,所以我认为这个问题最好放在这里。

以前从未使用过网络套接字和类似的东西,所以我很迷失并希望得到一些指导......

我有一个 python 脚本,它为我提供了两条数据……伺服电机的角度和物体与超声波传感器的距离。

我需要将此数据发送到我的具有雷达图像的网站。随着角度的变化,雷达图像上的扫描应该改变,并且有障碍物的地方应该显示在我的雷达上。

我的问题是如何以连续的方式将这些数据传送到网站?我的网站上运行着 apache2。现在我已经使用 Ajax 请求让电机在我的树莓派上运行(它就像一辆遥控汽车)。

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)
TRIG = 22
ECHO =18
GPIO.setup(TRIG, GPIO.OUT)
GPIO.output(TRIG,0)
GPIO.setup(ECHO, GPIO.IN)
GPIO.setup(33, GPIO.OUT)
pwm=GPIO.PWM(33,100)
pwm.start(5)
time.sleep(0.1)

class rotateRead():
    def To180andBackRead():

        angle=0
        for angle in range(0, 180, 1):
            GPIO.setmode(GPIO.BOARD)
            duty=float(angle)/10+2.5
            pwm.ChangeDutyCycle(duty)
            print angle
            time.sleep(0.1)
            GPIO.output(TRIG,1)
            time.sleep(0.00001)
            GPIO.output(TRIG,0)
            while GPIO.input(ECHO) ==0:
                pass
            start =time.time()

            while GPIO.input(ECHO) ==1:
                pass
            stop=time.time()

            print (stop-start) *17000



        angle=180
        for angle in range(180, 0, -1):
            GPIO.setmode(GPIO.BOARD)
            duty=float(angle)/10+2.5
            pwm.ChangeDutyCycle(duty)
            print angle
            time.sleep(0.1)
            GPIO.output(TRIG,1)
            time.sleep(0.00001)
            GPIO.output(TRIG,0)
            while GPIO.input(ECHO) ==0:
                pass
            start =time.time()

            while GPIO.input(ECHO) ==1:
                pass
            stop=time.time()

            print (stop-start) *17000


    for x in range(0,1,1):
        To180andBackRead()

GPIO.cleanup()

答案1

首先,您需要在网站中创建一个端点。最简单的方法是创建一个名为 robots_update.php 的文件,其中包含以下内容。

<?php
$input_data = file_get_contents('php://input');
$decoded_data = json_decode($input_data);
//Do something with $decoded_data, update image or write it to the database.
?>

接下来,通过 http 从 python 发送数据,如下所示

import json
import urllib2

def update_robot(angle, distance):
    data = {
        'angle' : angle,
        'distance' : distance
    }
    req = urllib2.Request('http://yourwebsite.com/robot_update.php')
    req.add_header('Content-Type', 'application/json')
    res = urllib2.urlopen(req, json.dumps(data))
    res.read() 

在计算角度和距离的地方调用此函数。这会工作得很好,但请记住向您的 robots_update.php 添加适当的限制。

相关内容