Python 스크립트에서 웹 사이트로의 데이터

Python 스크립트에서 웹 사이트로의 데이터

여기에는 Raspberry Pi와 apache2가 포함되므로 여기에 질문이 가장 적합하다고 생각합니다.

이전에는 웹 소켓이나 그와 유사한 것을 사용해본 적이 없어서 길을 잃었고 지침을 기대하고 있습니다...

저는 두 가지 데이터, 즉 서보 모터의 각도와 초음파 센서에서 물체까지의 거리를 제공하는 Python 스크립트를 가지고 있습니다.

이 데이터를 레이더 이미지가 있는 웹사이트로 보내야 합니다. 각도가 변경됨에 따라 레이더 이미지의 스캔도 변경되어야 하며 장애물이 있는 위치가 레이더에 표시되어야 합니다.

내 질문은 이 데이터를 웹사이트에 지속적으로 전송하는 방법입니다. 내 웹 사이트에서 apache2가 실행 중입니다. 이제 Ajax 요청을 사용하여 Raspberry Pi에서 모터를 작동시켰습니다(원격 제어 자동차와 같습니다).

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에 적절한 제한 사항을 추가하는 것을 잊지 마십시오.

관련 정보