Hallo zusammen,
in diesem Projekt (GPIO-STATUS in MySQL-Datenbank schreiben) verwende ich ein Phyton-Script, in dem diverse GPIO´s überwacht werden. Dazu ist die RPi.GPIO- Bibliothek importiert.
Leider kommt es zeitweise zu Fehlerkennungen der GPOI`s. Die Helfer aus diesem Thread meinten, das es besser sei die PIGPIO-Bibloithek anzuwenden. Diese habe ich installiert.
Danach habe ich das Phyton-Script an Hand diese Instuktion (http://abyz.co.uk/rpi/pigpio/python.html#set_PWM_dutycycle) versucht anzupassen. So schaut es momentan aus:
Python
#!/usr/bin/python
from __future__ import print_function
import pigpio
from Queue import Queue # https://pymotw.com/2/Queue/
import time
import sys
import requests
# UUID-Zuweisung
uuid29 = "c8ef0690-993e-11e6-93bf-05928009d3e3"
uuid31 = "6c63f740-94b6-11e6-8b55-15bb6ce24a5e"
# URL-Zuweisung
URL = "http://192.168.178.103/middleware.php/data/{}.json?value={}"
LOOKUP = {
(31, pigpio.LOW) : URL.format(uuid31, 0),
(31, pigpio.HIGH) : URL.format(uuid31, 100),
(29, pigpio.LOW) : URL.format(uuid29, 0),
(29, pigpio.HIGH) : URL.format(uuid29, 100),
}
pigpio_list = [29, 31]
pi = pigpio.pi()
pi.set_mode(29, pigpio.INPUT)
pi.set_mode(31, pigpio.INPUT)
queue = Queue()
# ISR
def interrupt_Event(channel):
queue.put((channel, pigpio.INPUT(channel))) # Tupel aus Kanal und HIGH/LOW
try:
# Interrupt Event fuer jeden gpio hinzufuegen. Auf steigende und fallende Flanke reagieren und ISR deklarieren sowie Pin entprellen
for gpio in pigpio_list:
pi.set_pull_up_down(29, pigpio.PUD_UP) #GPIO -> 3V3
pi.set_pull_up_down(31, pigpio.PUD_UP) #GPIO -> 3V3
def cbf(gpio, level, tick):
cb1 = pi.callback(29, pigpio.EITHER_EDGE, cbf)
cb2 = pi.callback(31, pigpio.EITHER_EDGE, cbf)
# Queues abarbeiten
while True:
url = LOOKUP[queue.get()]
requests.post(url)
except (KeyboardInterrupt, SystemExit):
GPIO.cleanup()
print("\nQuit\n")
Alles anzeigen
Wenn ich das starte, kommt diese Meldung:
Code
pi@raspberrypi:~ $ sudo /test04.py
Traceback (most recent call last):
File "/test04.py", line 27, in <module>
pi.set_mode(29, pigpio.INPUT)
File "/usr/local/lib/python2.7/dist-packages/pigpio.py", line 1161, in set_mode
return _u2i(_pigpio_command(self.sl, _PI_CMD_MODES, gpio, mode))
File "/usr/local/lib/python2.7/dist-packages/pigpio.py", line 943, in _u2i
raise error(error_text(v))
pigpio.error: 'no permission to update GPIO'
Würde mich über Unterstützung freuen, da ich jetzt nicht mehr alleine weiterkomme.
Gruß - towi