Questo forum utilizza i cookies
Questo forum fa uso di cookie per migliorare l'esperienza utente. I cookie sono piccoli file di testo memorizzati sul tuo browser. I cookie impostati dal forum possono essere utilizzati solo su questo sito e non costituiscono rischio per la sicurezza, vengono utilizzati unicamente per memorizzare le tue preferenze. Navigando sul sito accetti che RaspberryItaly installi i cookie sul tuo browser.
Per maggiori informazioni consulta l'informativa sui Cookie di RasberryItaly

Un cookie verra memorizzato nel browser indipendentemente dalla scelta per evitare che questa domanda ti venga posta di nuovo. Sarai in grado di modificare le impostazioni dei cookie in qualsiasi momento utilizzando il link nel footer.
  • 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