• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
python web da eseguire

Eseguire Python da web
#1
Salve a tutti,

sono qui a chiedere se potete aiutarmi a capire per quale motivo non riesco ad eseguire
un semplice script python attraverso il web.

Devo dire che non sono esperto del raspberry, ma dopo essermi letto abbastanza guide,
e non essere riuscito nella missione, vorrei un aiutino se possibile :-)

Ho creato un file che si chiama led.py dentro una cartella chiamata  py,
tutto dentro /var/www/html/test-raspberry/

Se vado nella cartella attraverso il terminale
/var/www/html/test-raspberry/py/
e lancio 
python led.py
il led si accende sul raspberry.
Evviva...

Dopo di che ho creato una pagina led.php a questo indirizzo
/var/www/html/test-raspberry/led.php

in poche parole dentro c'e il pulsante html 
<button type="button" id="accendiled">Accendi!</button>

dopo c'è la chiamata js attraverso l'id del bottone

$( "#accendiled" ).click(function() {
  console.log("click");
$.ajax({
      type:'get',
      url: 'py/led.py',
      cache:false,
      success: function(data) {
console.log(data + "yes");

      },
      error: function(request, status, error) {
console.log("failed");
      }
   });

});

A questo punto vado nel browser clicco il pulsante e vedo nel log del inspect element che viene chiamato il file,
quindi penso non sia un problema di permessi della cartella ma non lo so.

Ecco uno screen

https://drive.google.com/file/d/1te6gH3T...sp=sharing

Non capisco se è apache che deve eseguire lo script python, o se è al javascript che gli manca qualcosa,
oppure se non è nulla di tutto questo.

Grazie a chi ha voglia di rispondere.
Buona giornata.
Alessandro
Risposta
#2
non ci capisco nulla di php, ma posso ipotizzare che molto probabilmente si tratta di un problema di permessi. Lo script lanciato a quel modo viene eseguito (credo) dall'utente www-data, che deve avere i permessi di esecuzione.
Ne capisco di più su Pytnon per consigliarti di usare gpiozero invece di RPi.GPIO, ma mi rendo conto che era solo un esempio.

PS: qualcuno ha risolto usando questa libreria php per accedere da php tramite un determinato utente che ha i permessi di esecuzione
Risposta
#3
Mamma mia che giri....
Allora, se devi integrare del codice python in un progetto php già esistente è capibile, altrimenti prova Django o fask e sviluppi tutto in python senza giri strani (3 linguaggi per accendere un led...).
Se non vuoi studiare troppo puoi sempre tornare agli anni '90 e mettere il py in chi-bin è configurare apache di conseguenza
Oltre tutto non capisco lo stupore nel non poter eseguire comandi da js.

Mandi

Barbezuan
Risposta
#4
grazie per la risposta...

Allora ho fatto nuove prove,
ho inserito un file nuovo pytest.py nella cartella /usr/lib/cgi-bin 

se lo eseguo con python pytest.py funziona

#!/usr/bin/python

import cgi
import cgitb
cgitb.enable()

print 'Content-type: text/html\n\n'
print '<h1>Python Script Test</h1>'

e quando vado nel web
http://192.168.43.202/cgi-bin/pytest.py
vedo che interpreta il file bene.

Poi aggiungo il codice per comunicare con raspberry e mi genera errore.


#!/usr/bin/python

import cgi
import cgitb
cgitb.enable()

print 'Content-type: text/html\n\n'
print '<h1>Python Script Test</h1>'

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(16,GPIO.OUT)
print "led on"
GPIO.output(16, GPIO.HIGH)
time.sleep(1)
GPIO.output(16, GPIO.LOW)

Ecco uno screen.
https://drive.google.com/file/d/13pgo7D5...sp=sharing

Questi sono i permessi che ho su questo file:
essendo root credo io abbia i permessi al massimo :-):
https://drive.google.com/file/d/1sgf1NYH...sp=sharing

Per il discorso che dici tu del www-data sinceramente non ho capito,
cioè dovrei cambiare i permessi della cartella www/html da pi a www-data ?!?


Grazie ancora
Risposta
#5
Evviva!! alla fine ci sono riuscito...
Credo che avevo fatto un casino con i permessi come dicevi tu,
e mi mancava un pezzo di script in un config di apache "direi" non ricordo..

In tutti i modi
grazie del supporto...
Ciao e alla prossima..
Risposta
  


Vai al forum:


Navigazione: 1 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect