AttributeError GPIO Orange Pi one
Verfasst: Donnerstag 30. August 2018, 18:13
Hallo Community,
Bin ein Programmierer mit "noob" Status und brauche etwas Hilfe.
Mit einem Orangepi One, möchte ich per udp befehle die GPIO Ausgänge schalten und mein Garagentor öffnen/schließen. Installiert ist die neueste Armbian Version.
Anfangs habe das mit einem Python und einem Bash Script realisiert. Weil ich nicht wusste wie ich die GPIO mit Python schalten kann.
Habe dann pyA20 gefunden und installiert. Hab eine weile gebraucht um die Pin/GPIO Bezeichnung zu verstehen, aber in den ersten test hat alles funktioniert. Aber in mein Programm bricht miet einem Fehler ab, wenn ein gpio nach dem udp befehl geschaltet wird.
Schalte ich den gpio vor dem udp signal funktioniert alles.
hier der code:
hier der Fehler:
am Programm start werden die 2 Ausgänge zum testen ein und ausgeschaltet.
nach dem das udp signal empfangen wird , stürtz das programm dann ab.
so hatte ich denselben Fehler:
beide varianten funktioieren wenn ich die gpio befehle entferne.
Was habe ich da falsch gemacht?
Bin ein Programmierer mit "noob" Status und brauche etwas Hilfe.
Mit einem Orangepi One, möchte ich per udp befehle die GPIO Ausgänge schalten und mein Garagentor öffnen/schließen. Installiert ist die neueste Armbian Version.
Anfangs habe das mit einem Python und einem Bash Script realisiert. Weil ich nicht wusste wie ich die GPIO mit Python schalten kann.
Habe dann pyA20 gefunden und installiert. Hab eine weile gebraucht um die Pin/GPIO Bezeichnung zu verstehen, aber in den ersten test hat alles funktioniert. Aber in mein Programm bricht miet einem Fehler ab, wenn ein gpio nach dem udp befehl geschaltet wird.
Schalte ich den gpio vor dem udp signal funktioniert alles.
hier der code:
Code: Alles auswählen
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import socket
import sys
import time
from time import sleep
from pyA20.gpio import gpio
from pyA20.gpio import port
gpio.init()
gpio.output(port.PC4, gpio.HIGH)
gpio.output(port.PC7, gpio.HIGH)
gpio.setcfg(port.PC4, gpio.OUTPUT)
gpio.setcfg(port.PC7, gpio.OUTPUT)
gpio.output(port.PC4, gpio.LOW)
gpio.output(port.PC7, gpio.LOW)
sleep(5)
gpio.output(port.PC4, gpio.HIGH)
gpio.output(port.PC7, gpio.HIGH)
# Voreinstellungen für Host und Port
# akzeptiert Nachrichten von jedem Host auf dem angeg. Port
host = ""
port = 7007
# Groesse Empfangspuffer (begrenzt die empfangene Nachricht)
bufsize = 8192 # 8 kByte
# UDP-Socket oeffnen
addr = (host, port)
UDPSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
UDPSock.bind(addr)
print "UDPServer Waiting for client on port xxxx"
#von oben bis hier funktioniert alles
def auf():
print "Auf"
gpio.output(port.PC4, gpio.LOW)
sleep(5)
gpio.output(port.PC4, gpio.HIGH)
def ab():
print "Ab"
gpio.output(port.PC7, gpio.LOW)
sleep(5)
gpio.output(port.PC7, gpio.HIGH)
options = { "0" : auf,
"1" : ab,
}
# Recive data from client and decide which function to call
while True:
dataFromClient, addr = UDPSock.recvfrom(bufsize)
options[dataFromClient]()
Code: Alles auswählen
root@orangepione:~/entwicklung# ./tor.py
UDPServer Waiting for client on port xxxx
Auf
Traceback (most recent call last):
File "./tor.py", line 70, in <module>
options[dataFromClient]()
File "./tor.py", line 49, in auf
gpio.output(port.PC4, gpio.LOW)
AttributeError: 'int' object has no attribute 'PC4'
root@orangepione:~/entwicklung#
nach dem das udp signal empfangen wird , stürtz das programm dann ab.
so hatte ich denselben Fehler:
Code: Alles auswählen
while True:
#
data, addr = UDPSock.recvfrom(bufsize)
# weiter verarbeiten
if data in ['torauf']:
gpio.output(port.PC4, gpio.LOW)
sleep(5)
gpio.output(port.PC4, gpio.HIGH)
if data in ['torzu']:
gpio.output(port.PC7, gpio.LOW)
sleep(5)
gpio.output(port.PC7, gpio.HIGH)
Was habe ich da falsch gemacht?