Dados do script python para o site

1

Isso envolve um pi de framboesa e um apache2, então achei que seria bom fazer a pergunta aqui.

nunca usei sockets web e coisas assim antes, por isso estou bastante perdido e esperando alguma orientação ...

Eu tenho um script python que me fornece dois dados ... o ângulo de um servomotor e a distância de um objeto do sensor ultrassônico.

Eu preciso que esses dados sejam enviados para o meu site, que tem um radar imsge. Como o ângulo muda, a varredura na imagem do radar deve mudar, e onde houver um obstáculo, ele deve aparecer no meu radar.

Minha pergunta é: como posso obter esses dados para o site de maneira contínua? Eu tenho o apache2 em execução no meu site. No momento, eu já estou usando os pedidos do Ajax para fazer os motores rodarem no meu pi de framboesa (é como um carro de controle remoto).

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()
    
por Ahsin 14.04.2016 / 20:59

1 resposta

0

Antes de mais nada, você precisará criar um endpoint em seu website. A maneira mais simples é criar um arquivo chamado robot_update.php com o seguinte conteúdo.

<?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.
?>

Em seguida, Envie seus dados via http de python assim

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() 

Chame esta função no lugar onde seu ângulo e distância são calculados. Isso funcionará muito bem, mas lembre-se de adicionar restrições adequadas ao seu robot_update.php.

    
por 15.04.2016 / 11:48