Hey Leute,
ich versuche eine Weboberfläche mit CGI zu realisieren. Standard Funktionen laufen super. Nur wenn ich mein PiFace ansteuern möchte funktioniert das nicht. Verwende ich ein Bash-Script geht es allerdings ... woran liegts?
Bash-Script: script.cgi
http://IP-Adresse/cgi-bin/script.cgi lässt das Relays einschalten. Alles ok!
Python-Script: script.py
#!/usr/bin/python
import cgi
import cgitb
import pifacedigitalio as p
cgitb.enable()
p.init()
p.digital_write(0, 1)
Alles anzeigen
http://IP-Adresse/cgi-bin/script.py gibt mir diesen Fehler aus:
ZitatAlles anzeigen<class 'pifacecommon.spi.SPIInitError'> Python 2.7.3: /usr/bin/python
Sun Apr 26 23:14:55 2015A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.
/usr/lib/cgi-bin/pumpe_on.py in ()
8 cgitb.enable()
9
=> 10 p.init()
11
12 p.digital_write(0, 1)
p = <module 'pifacedigitalio' from '/usr/lib/python2.7/dist-packages/pifacedigitalio/__init__.pyc'>, p.init = <function init>
/usr/lib/python2.7/dist-packages/pifacedigitalio/core.py in init(init_board=True, bus=0, chip_select=0)
160 bus,
161 chip_select,
=> 162 init_board)
163 except NoPiFaceDigitalDetectedError as e:
164 failed_boards.append(e)
init_board = True
/usr/lib/python2.7/dist-packages/pifacedigitalio/core.py in __init__(self=<pifacedigitalio.core.PiFaceDigital object>, hardware_addr=0, bus=0, chip_select=0, init_board=True)
51 chip_select=DEFAULT_SPI_CHIP_SELECT,
52 init_board=True):
=> 53 super(PiFaceDigital, self).__init__(hardware_addr, bus, chip_select)
54
55 self.input_pins = [pifacecommon.mcp23s17.MCP23S17RegisterBitNeg(
builtin super = <type 'super'>, global PiFaceDigital = <class 'pifacedigitalio.core.PiFaceDigital'>, self = <pifacedigitalio.core.PiFaceDigital object>, ).__init__ = <bound method PiFaceDigital.__init__ of <pifacedigitalio.core.PiFaceDigital object>>, hardware_addr = 0, bus = 0, chip_select = 0
/usr/lib/python2.7/dist-packages/pifacecommon/mcp23s17.py in __init__(self=<pifacedigitalio.core.PiFaceDigital object>, hardware_addr=0, bus=0, chip_select=0)
89 """
90 def __init__(self, hardware_addr=0, bus=0, chip_select=0):
=> 91 super(MCP23S17, self).__init__(bus, chip_select)
92 self.hardware_addr = hardware_addr
93
builtin super = <type 'super'>, global MCP23S17 = <class 'pifacecommon.mcp23s17.MCP23S17'>, self = <pifacedigitalio.core.PiFaceDigital object>, ).__init__ = <bound method PiFaceDigital.__init__ of <pifacedigitalio.core.PiFaceDigital object>>, bus = 0, chip_select = 0
/usr/lib/python2.7/dist-packages/pifacecommon/spi.py in __init__(self=<pifacedigitalio.core.PiFaceDigital object>, bus=0, chip_select=0, spi_callback=None)
30 self.fd = None
31 spi_device = "%s%d.%d" % (SPIDEV, self.bus, self.chip_select)
=> 32 self.open_fd(spi_device)
33
34 # def __del__(self):
self = <pifacedigitalio.core.PiFaceDigital object>, self.open_fd = <bound method PiFaceDigital.open_fd of <pifacedigitalio.core.PiFaceDigital object>>, spi_device = '/dev/spidev0.0'
/usr/lib/python2.7/dist-packages/pifacecommon/spi.py in open_fd(self=<pifacedigitalio.core.PiFaceDigital object>, spi_device='/dev/spidev0.0')
42 raise SPIInitError(
43 "I can't see %s. Have you enabled the SPI module? (%s)"
=> 44 % (spi_device, SPI_HELP_LINK)
45 ) # from e # from is only available in Python 3
46
spi_device = '/dev/spidev0.0', global SPI_HELP_LINK = 'http://piface.github.io/pifacecommon/i…-the-spi-module'<class 'pifacecommon.spi.SPIInitError'>: I can't see /dev/spidev0.0. Have you enabled the SPI module? (http://piface.github.io/pifacecommon/i…-the-spi-module)
args = ("I can't see /dev/spidev0.0. Have you enabled the...cecommon/installation.html#enable-the-spi-module)",)
message = "I can't see /dev/spidev0.0. Have you enabled the...cecommon/installation.html#enable-the-spi-module)"
Liegt wohl irgendwie an dem Initialisierungsprozess des PiFaces. Hat das schon mal jemand gelöst? Ps.: Der Code direkt am Pi ausgeführt funktioniert natürlich auch in Python.
Vielen Dank für Rückmeldung.
Gruß
mobby