JavaScript - como llamar un archivo python desde javascript / ajax

 
Vista:
sin imagen de perfil

como llamar un archivo python desde javascript / ajax

Publicado por victor (1 intervención) el 29/05/2017 23:45:27
Buenas estimados yo tengo un formulario el cual tiene un boton y al ser clickeado enciende o apaga un led dependiendo del python.
codigo html
1
2
3
4
<form action="" method="post">
	<input type="submit" name="encender24" value="Encender">
	<input type="submit" name="apagar24" value="Apagar">
</form>

codigo php

1
2
3
4
5
6
7
8
if($_POST[encender24]){
	$a- exec("sudo python /var/www/mypywebapp/led24on.py");
	echo $a;
}
if($_POST[apagar24]){
	$a- exec("sudo python /var/www/mypywebapp/led24off.py");
	echo $a;
}


mi problema es que quiero trabajarlo con input type radio pero no se como llamarlo desde un javascript

este es mi archivo python
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
#Configuramos los pines
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
led = 21
 
#Pin 1 como salida
GPIO.setup(led, GPIO.OUT)
 
#Pin ON
GPIO.output(led, True)


espero puedan ayudarme
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 553
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

como llamar un archivo python desde javascript / ajax

Publicado por kip (107 intervenciones) el 31/05/2017 04:54:54
Hola, en este caso deberias usar AJAX para en cada click del input radio enviar ese valor al servidor y desde PHP ejecutar el archivo Python en cuestion pasandole como parametro tal vez el valor del input radio que podria ser 0 o 1 o simplemente ejecutando dos scripts diferentes de Python para cada caso, podria ser algo asi:

HTML
1
2
3
4
5
6
7
<div id="led-radios">
    <input type="radio" name="estado" value="ON">
    <input type="radio" name="estado" value="OFF">
</div>
 
<div id="led-estado">
</div>

JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var divRadios = document.querySelector('#led-radios');
 
divRadios.addEventListener('click', function(e) {
    var value = e.target.type === 'radio' ? e.target.value : null;
    if (value) {
        [].slice.call(this.childNodes).map(function(item) {
            item.disabled = true;
        });
        postAjax('url/to/php/file.php', value, function(data) {
            document.querySelector('#led-estado').innerHTML = data;
            [].slice.call(this.childNodes).map(function(item) {
                item.disabled = false;
            });
        });
 
    }
});
 
function postAjax(url, value, success) {
    var xhr = new XMLHttpRequest();
    xhr.open('POST', url);
    xhr.onreadystatechange = function() {
        if (xhr.readyState > 3 && xhr.status == 200) {
            success(xhr.responseText);
        }
    };
    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.send('estadoled=' + value);
}

PHP
1
2
3
4
$command= sprintf('python ./cambioEstadoLED.py %s', $_POST['estadoled']);
$resp = shell_exec($command);
echo $resp;
die();

cambioEstadoLED.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
import sys
 
#Configuramos los pines
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
led = 21
 
#Pin 1 como salida
GPIO.setup(led, GPIO.OUT)
 
if sys.argv[1] == "OFF":
    #Pin ON
    GPIO.output(led, False)
elif sys.argv[1] == "ON":
    #Pin ON
    GPIO.output(led, True)
    print "LED ON"
 
GPIO.cleanup()

Es solo un ejemplo que quizas te guie y ayude en algo, cambia los valores a como sean los tuyos y ajustalo como sea necesario.

Nos avisas si logras hacerlo funcionar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar