Recentemente, configurei o python para trabalhar com o lighttpd via CGI (veja aqui ). Mas no minuto em que incluo o RPi.GPIO , o script para de ser executado ( suponho que nenhum HTML seja gerado), mas não há erro no log de erros ( /var/log/lighttpd/error.log
).
gpio.py
import RPi.GPIO as GPIO
print "<html>"
print "\t<head>"
print "\t\t<title>GPIO</title>"
print "\t</head>"
print "\t<body>"
print "\t\t<p>"
print "\t\t\tGPIO #17 status: "
print "\t\t</p>"
print "\t</body>"
print "</html>"
Por que o script não está sendo executado? É por causa das permissões? Certamente, incluindo a biblioteca não deve exigir permissões especiais? Por que não há saída de erro no script ou no log de erros?
import RPi.GPIO as GPIO
realmente requer privilégios de root! Agora eu acho que preciso que o lighttpd funcione como root (é apenas um projeto doméstico).Respostas:
Você pode tentar adicionar antes de 'import RPi.GPIO':
Pode ajudar a diagnosticar um erro.
E adicione estas linhas antes da sua saída html:
Consulte http://docs.python.org/library/cgi.html
fonte
Depois de seguir o conselho de okertanov, descobri que você não pode realmente usar
RPi.GPIO
um script CGI python, pois requer acesso root. Eu resolvi o problema chamando ogpio
aplicativo de linha de comando incluído como parte do WiringPi , que pode ser chamado de uma conta não raiz.fonte
#
significa um comentário em PythonApenas use
Agora você precisará resolver o problema de permissões
fonte
Este tutorial recomenda a criação de uma cópia especial do Python e a concessão de privilégios de usuário root, assim:
E então, para criar seu CGI, acesse
sudo nano /etc/lighttpd/lighttpd.conf
e encontre onde você está direcionando os.py
arquivos e mude/usr/bin/python/
para o novo/usr/bin/pythonRoot
/fonte