01/05/17 21:18
archemi
Ciao a tutti
Ho un raspberry con un sensore di "motion detection"
Per gestire la possibilità di accenderlo e spegnerlo ho una pagina web con uno switch.
Una pagina web in php su un server apache attiva e disattiva
Dal server web non fa partire il daemon runner python ma se mando un comando qualunque funziona (esempio) per cui il problema è nel far partire il file pyhton
il mio file sudo visudo è configurato così:
il file invece python che fa partire mi manda un'email quando rileva un movimento:
Anche lo script se lo mando da solo funziona (se non lo faccio partire come sudo non va)
Il tutto funziona da terminale se mando il comando
Se invece mando dal sito web NON FUNZIONA!!! PERCHE??? Tutto il giorno e non ho risolto nulla...
Come posso fare? ci sto impazzendo
Grazie per qualunque genere di aiuto
Ho un raspberry con un sensore di "motion detection"
Per gestire la possibilità di accenderlo e spegnerlo ho una pagina web con uno switch.
Una pagina web in php su un server apache attiva e disattiva
<?php // file attiva.php exec('sudo -u www-data python /var/www/html/tel/motion.py start'); ?>
Dal server web non fa partire il daemon runner python ma se mando un comando qualunque funziona (esempio) per cui il problema è nel far partire il file pyhton
exec('echo "start" > active');
il mio file sudo visudo è configurato così:
www-data ALL=NOPASSWD: /usr/bin/python, /var/www/html/tel/motion.py, /var/www/html/invia.php
il file invece python che fa partire mi manda un'email quando rileva un movimento:
#!/usr/bin/python from gpiozero import MotionSensor from datetime import datetime import time import os import smtplib from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from daemon import runner class App(): def __init__(self): self.stdin_path = '/dev/null' self.stdout_path = '/dev/tty' self.stderr_path = '/dev/tty' self.pidfile_path = '/tmp/foo.pid' self.pidfile_timeout = 5 def run(self): print("Attivazione sensore movimento") pir = MotionSensor(4) contatore = 0 time.sleep(1) print("Sensore pronto") while True: if pir.motion_detected: contatore += 1 #Console print("Movimento rilevato : "+str(contatore)) #email msg = MIMEMultipart() msg['Subject'] = 'telecamera movimento' msg['From'] = 'xx@gmail.com' msg['To'] = 'xx@gmail.com' text = MIMEText("Movimento rilevato alle "+datetime.now().strftime("%H.%M.%S del %d/%m/%Y")) msg.attach(text) s = smtplib.SMTP('smtp.gmail.com', 587) s.ehlo() s.starttls() s.ehlo() s.login('xx@gmail.com', 'psw') try: s.sendmail('xx@gmail.com', 'xx@gmail.com', msg.as_string()) print("Email inviata") except: print("Email non inviata") s.quit() time.sleep(2) time.sleep(0.1) app = App() daemon_runner = runner.DaemonRunner(app) daemon_runner.do_action()
Anche lo script se lo mando da solo funziona (se non lo faccio partire come sudo non va)
sudo python motion.py start
Il tutto funziona da terminale se mando il comando
php active.php
Se invece mando dal sito web NON FUNZIONA!!! PERCHE??? Tutto il giorno e non ho risolto nulla...
...sito web.../attiva.php
Come posso fare? ci sto impazzendo
Grazie per qualunque genere di aiuto
Ultima modifica effettuata da archemi 01/05/17 21:40
aaa