Relais mit Phython steuern - Fehlermeldung

  • Hallo Zusammen,


    zum Verständnis: Ich habe einen Taster eines Lichtrings mit einem Relais verbunden. Dabei ist der Ein/Aus taster mit dem Relais verbunden und das Relais über VCC an Pin 3, GND an Pin 6, In1 an Pin 16. Zusätzlich ist der Ring noch an eine Stromquelle angeschlossen.


    Nun versuche ich den Schalter 1 des Relais zu schließen. Dazu wollte ich ein Programm mit Python schrieben. ich habe das Kommando "import RPi.GPIO as GPIO" verwendet, wobei dabei immer diese Fehlermeldung auftritt:

    import-im6.q16: attempt to perform an operation not allowed by the security policy `PS' @ error/constitute.c/IsCoderAuthorized/421.


    Durch mehrfaches googlen und suchen konnte ich immer noch keine Lösung finden. Vielleicht kann mir ja hier jemand erklären, was das grundsätzlich für ein Fehler ist und/oder ob ich evtl. völlig falsch vorgegangen bin. Kenne mich nicht wirklich aus und hoffe auf viele helfende Köpfe.


    Viele Grüße

  • Hallo,


    und abgesehen davon möchtest du das gpiozero Modul verwenden. Das hat die schönere und bessere API und ist der de-facto Standard zum Programmieren von GPIOs mit Python.


    Gruß, noisefloor

  • Pfff! Das weiß doch jeder, der sich mehr als ein paar Tage mit Python + GPIOs am RPi beschäftigt hat. :shy:

    A simple interface to GPIO devices with Raspberry Pi, developed and maintained
    by Ben Nuttall and Dave Jones

    Diese beiden Namen sprechen eigentlich auch für sich!

  • Es ging mir um die Formulierung. Wenn mir jemand sagt: "Du möchtest...." dann war das das letzte mal, dass er mir was gesagt hat. Was ich möchte, entscheide ich noch immer selbst. Ich lass mir gerne Ratschläge geben - aber diese Formulierung hebt mir den Magen...

  • Das mag für Dich zutreffen. Ich empfinde diese Formulierung eher als diplomatischem Wink mit dem Zaunpfahl, aber ok, das empfindet halt jeder anders. Im Umkehrschluss könnte man es auch als anmaßend empfinden, wenn jemand für mich entscheidet, ob ich etwas als gut oder als doof ansehen soll.


    Ist alles nicht so einfach mit geschrieben Äußerungen. Nur schade, dass dadurch Threads zerstört werden.

  • Offtopic

    Moinsen,

    es ist schon sehr interessant wie hier wegen wirklich banaler Satzformulierungen die Meinung hochkochen, und daß es zudem hier Leute gibt, die ihre Abneigung

    Ich weiß schon, warum das noisefloor bei mir blockiert ist. Auf deine arroganten und anmaßenden Beiträge kann ich auch verzichten.

    so offen kund tun.

    @guesswho462

    ich bin ganz verwundert über deine PIn Beschreibung, die sich weder mit der originalen Belegung an einem PI-Board deckt, noch für mich klar wird - wie das ganze funktionieren soll :gk1:

    Ich habe einen Taster eines Lichtrings mit einem Relais verbunden. Dabei ist der Ein/Aus taster mit dem Relais verbunden und das Relais über VCC an Pin 3, GND an Pin 6, In1 an Pin 16. Zusätzlich ist der Ring noch an eine Stromquelle angeschlossen.




    Jetzt mal vollkommen unabhängig des PI Typs, ist Pin3 = GPIO2 und stellt keine Vc zur Verfügung. Auch verstehe ich dann nicht die Rolle des Schalters ?

    Wenn dann würde der Taster mit einem PullUp auf einen der GPIO Ports gegen GND / Masse geklemmt sein, und der Schaltvorgang des Relais, wieder Ausführungsabhängig, über einen Optokoppler, oder einen Transistor / MOSFET Verstärker von einem anderen GPIO Port aus geschaltet werden.

    Das würde dann diesem Aufbau aus der Anleitung die hyle schon nannte entsprechen:




    Statt der LED wäre dieser GPIO Port dann Steuerausgang bzw -eingang für das Relais.

    Der entsprechende Programmcode ist dann diesem Kapitel 2.6. zu entnehmen.

    Nochmal auf deine Fehlermeldung zurück zu kommen.
    RPi.GPIO ist genauso wie GPIOZERO inzwischen fester Bestandteil aller RasbianOS Images.

    Hier solltest du für weitergehende Hilfe, deine Angaben zum System, des OS, und dem Programmcode, wie auch dessen Aufruf deutlicher darlegen.

    Franky

  • Moinsen @fred0815

    Du bist ein Wunderknabe :bravo2:

    In dem Text des TO steht eindeutig das er aus PIN (Betonung Pin - nicht GPIO) Nummer 3 irgendwas mit der Vc macht.
    Jetzt mal ganz ehrlich. Aus dem Pin 3 kann man ohne einen aktiven GPIO Schaltvorgang keine Vc gewinnen. Falls er jedoch versucht diesen Pin 3 als GND Pol für das Relais zu nutzen, wäre es doch so, daß die Vc, wo wir nicht wissen welche Spannung diese hat, durch den Innenwiderstand des Relais (induktiver Widerstand) ungehindert auf diesen GPIO Pin prallt. Es würde dann nur zu einem Schaltvorgang am Relais kommen, wenn dieser GPIO Ausgang aktiv auf LOW gesetzt werden würde.
    Aber nun sind wir wieder, wie du schon sehr richtig festgestellt hast im Reich der Spekulationen.
    Geht man von den heute üblichen Relaisplatinen aus, die so überall verramscht werden, und über keine eigenen Stromversorgungsanschluß verfügen, auch über keine galvanische Trennung in Form eines OptKop, dann prallt diese Vcc meist 5.0V ungehindert auf diesen GPIO Pin 3 = GPIO Nummer 02 !
    Jedem sollte inzwischen gekannt sein, daß die GPIO Pins beim PI alle nicht 5.0 V kompatibel sind.
    Stutzig hat mich auch schon diese Fehlermeldung gemacht, die wie hyle schon schrieb - definitiv nicht vom Python Interpreter stammt. Nicht ganz umsonst hatte ich meinen Abschlußsatz entsprechend formuliert.

    Franky

  • Ich weiß schon, warum das noisefloor bei mir blockiert ist. Auf deine arroganten und anmaßenden Beiträge kann ich auch verzichten.


    Wenn man schon ein paar Jahre im Support tätig ist, kennt man die Anfänger und ihre Probleme.

    gpiozero nutzt RPi.GPIO standardmäßig als Backend. gpiozro erleichtert die Nutzung der GPIOS.


    Man sollte auch wissen, dass RPi.GPIO nicht Python ist. Das Modul ist in C geschrieben und das Interface ist nicht OOP.

    D.h. alles, was gpiozero macht, ist die Abstraktion der Backends auf objektorientierte Programmierung und das vereinheitlicht.


    Der Vorteil ist dann, dass man nicht prozedural programmieren muss.

  • Zeige bitte das Skript und die komplette Fehlermeldung jeweils in einem Codeblock! Das ist der Button im Foreneditor.


    //Edit Vermutlich fehlt aber ein Shebang oder die Angabe des Interpreters.

    Hallo hyle,


    es tut mir super leid und ich weiß auch, dass ich wahrscheinlich etwas wenig Wissen habe um mein Vorhaben umzusetzen (der Pi dient eigentlich nur einem Forschungsprojekt als "Mittel zum Zweck" und ich habe leider nicht die Zeit mit super intensiv damit zu beschäftigen), aber ich habe absolut keine Ahnung von was du sprichst bzw. ich habe kein weiteres Skript. Das einzige, das ich versucht habe, ist "import RPi.GPIO as GPIO" als Kommando zu verwenden um die gpios zu steuern. Das habe ich so in einem Artikel gelesen. Weiter bin ich ja noch nicht gekommen aufgrund der Fehlermeldung. Sollte ich wohl gleich das ganze Programm so ungefähr einfügen:
    Dsa habe ich nämlich auch schon versucht und dann kommt die Fehlermeldung, dass GPIO.BCM ein unbekanntes Kommando ist.

    1 2 3 4 5 6 7 import RPi.GPIO as GPIO
    GPIO.setmode(GPIO.BCM)
    RELAIS_1_GPIO = 23
    GPIO.setup(RELAIS_1_GPIO, GPIO.OUT)
    GPIO.output(RELAIS_1_GPIO, GPIO.LOW)
    GPIO.output(RELAIS_1_GPIO, GPIO.HIGH)
  • Hallo,


    und abgesehen davon möchtest du das gpiozero Modul verwenden. Das hat die schönere und bessere API und ist der de-facto Standard zum Programmieren von GPIOs mit Python.


    Gruß, noisefloor

    Hallo noisefloor,


    Danke für deine Antwort. Das habe ich auch schon versucht und gpiozero habe ich auch schon installiert. Allerdings versuchte ich dann die Bibliothek "Button" zu importieren und das hat nicht geklappt. Ich war dazu auf dieser Seite hier und habe (dachte ich zumindest) alles so nach der Reihe aus dem ersten Kapitel gemacht. Und diese Befehle haben auch alle geklappt:


    Code
    sudo apt update
    Code
    pi@raspberrypi:~$ sudo apt install python3-gpiozero

    die Quelle dazu: https://gpiozero.readthedocs.io/en/stable/installing.html


    Dann dachte ich an sowas als Steuerung:

    Das habe ich dann auch so eingegeben und meine Fehlermeldungen sind diese hier:


    pi@raspberrypi:~ $ from gpiozero import DigitalOutputDevice

    from time import sleep


    relais = DigitalOutputDevice(4)


    sleep(1)


    relais.on()


    sleep(3)



    relais.off()

    bash: from: Kommando nicht gefunden.

    bash: from: Kommando nicht gefunden.

    bash: Syntaxfehler beim unerwarteten Symbol »(«

    bash: Syntaxfehler beim unerwarteten Symbol »1«

    bash: Syntaxfehler beim unerwarteten Symbol »sleep«

    >



    Vielleicht habe ich auch etwas vergessen oder völlig falsch gemacht. Gerade weiß ich leide reinfach nciht mehr weiter.


    Viele Grüße

    guesswho462

  • Hallo Franky,


    da ich wirklich absolut keine Ahnung von der Belegung etc. habe, hatte ich die Steckverbindung aus einem Artikel entnommen. Das war anscheinend falsch.... Ich mache gerade echt nur Trial and Error, weil ich mich damit eben noch nicht so gut auskenne. Der Aufbau ist quasi so:


    Also sollte ich den VCC Ausgang am Relais mit dem 4. Pin, den GND Anschluss mit dem 6.Pin und den In1 Anschluss mit dem 7. Pin verbinden...Macht das mehr Sinn?


    Viele Grüße

    guesswho462

  • Moinsen



    Deine Programm laut deiner Darlegung hier, ergänzt um die Zeilen 3 & 8
    Wie du siehst auf einem 3B+ mit Buster und Python 3.7.3 funktioniert dein Programmcode einwandfrei.
    Warum der GPIO 23 blockiert sein erschließt sich mir auch noch nicht so richtig. Ich hätte da aber einen Verdacht :angel: 
    Rein mal um der Sache nachzugehen, war irgendwann einmal mit dieser OS Installation an diesem oder einem anderen Pi, aber mit dem gleichen Bootdatenträger ein HAT Display ähnliche Bauart, jedoch Herstellerunabhängig eingerichtet worden ?
    So weit ich mich erinnern kann, blockierte mit der Display-Installation auch wenn das Display schlußendlich nicht mehr mit dem PI verbunden war, der dazugehörige Treiber einige der GPIOs. Diese ließen sich partout nicht mehr ansprechen, und es wurde auch eine entsprechende Fehlermeldung ausgegeben. Ob es nun genau die selbe ist wie bei dir, daran kann ich mich nicht mehr erinnern.
    Aber du könntest zu Funktionstest auch mal den GPIO23 gegen den GPIO20 im Programm tauschen. Dort ist normal nichts zu finden wenn irgendwelche HAT Platinen mit dem PI Verbunden werden. Falls der GPIO-PIN Tausch auch ohne das an dem GPIO Port etwas angeschlossen sein muß, deine Programm zum laufen bringen sollte, dann müßtest du in der Geschichte des PIs und des Bootdatenträgers nachforschen. Falls diese Fehler über alle GPIO-PINs mitwandert, wiegt es wahrscheinlich an der BS Installation selber.

    Franky

  • Moinsen,

    Wir müssen uns jetzt nicht um die PIN Nummern streiten. Nur ! PIn3 = GPIO2 :wink:



    Das ist an für sich auch nicht weiter schlimm, wenn es im Programm richtig seht. Leider fehlt mir hier jetzt die Orientierung zur Anschlußbelegung auf deinem Fritzung - Schaltbild zu dieser Relaiskarte.

    Prinzipiell, wenn diese Belegung stimmig ist, also dem Anschlüssen Vc zu Pin 2 oder 4 am PI, GND zu 6 oder 9 oder jedem anderen GND Pin am Pi, und der Steuereingang mit irgendeinem anderen GPIo verbunden ist, müßte es eigentlich funktionieren.

    Jedoch erklärt das nicht die Fehlermeldung.

    Franky