Sign up ×
Raspberry Pi Stack Exchange is a question and answer site for users and developers of hardware and software for Raspberry Pi. It's 100% free, no registration required.

I have test.py file, and it contains GPIO module commands:

#!/usr/bin/python
import RPi.GPIO as G
import time

G.setmode(G.BCM)        
G.setup(18, G.OUT)
G.output(18, True)
time.sleep(3)
G.output(18, False)

G.cleanup()

I want to call this python script for execution when I press button on my web page. My index.html contains javascript to call .py for execution:

<html>
<head>
<script type="text/javascript">
function func()
{
    document.location="cgi-bin/test.py";
}
</script>
</head>
<body>
    <div style="text-align:center">
    <h1>Raspberry Pi GPIO</h1>
    <form>
    <input type="button" value="call .py" onclick="func()">
    </form>
    </div>
</body>
</html>

Looks like problems are permissions, so when I click on the button, apache2 retrieves code 500 - Internal error. Execution of test.py from bash with sudo command works fine.

Is there any way to set these permissions, so the apache2 can successfully call python script that contains GPIO commands? Thanks

share|improve this question
    

1 Answer 1

up vote 0 down vote accepted

Yes, there are numerous ways. If you google I'm sure you will find them.

However I don't think it'll be a worthwhile effort - if you wait a week or so there should be an update to the RPi.GPIO module to allow its use without requiring root privileges.

There are other Python modules.

My pigpio Python does not require Python to be run as root (it sends requests to a daemon which has the needed privileges).

#!/usr/bin/env python

import time
import pigpio # abyz.co.uk/rpi/pigpio/python.html

LED=18

pi = pigpio.pi() # Connect to local Pi.

pi.set_mode(LED, pigpio.OUTPUT)

for i in range(10):
   pi.write(LED, 1)
   time.sleep(0.2)
   pi.write(LED, 0)
   time.sleep(0.2)

pi.stop() # Disconnect from local Pi.
share|improve this answer
    
Thanks joan, pigpio helps – hideburn Sep 18 at 19:53

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.