Wie sage ich es in Python ? (Einsteigerfragen)

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Ne.. das programm das ich oben eingefügt habe stammt 1:1 aus der Datei... Ich habe das Gefühl, dass etwas mit den RPi.GPIO Versionen nicht stimmt. Zb dass sich das neue Update mit dem Alten nicht verträgt....

  • Ich habe keine Hardware um die GPIOs zu testen, aber wenn man den Fehler in Deinem Script (Du machst setup auf 27, output auf 11) korrigiert dann läuft es bei mir mit 0.5.4.
    Der mismatch bei den pins erklärt aber nicht Dein Problem.


    Wie hast Du das denn installiert? Über apt-get/aptitude oder hast Du das von source gebaut?


    Wenn Du es über die Paketverwaltung installiert hast dann schau mal was "dpkg -l *gpio*" liefert. Wenn Du Paketversion 0.5.4-1 hast dann hast Du diesselbe wie ich und das Problem ist nicht das Modul.

  • Eine einfache Methode um rauszubekommen, welche Methoden eine Klasse in Python anbietet ist wie folgt in der Befehlszeile möglich:


    Code
    python
    import RPi.GPIO as GPIO
    dir(GPIO)
    quit()


    Wie sieht die Ausgabe da bei Dir aus?

    :no_sad: Kein Backup - kein Mitleid :no_sad:
    :) Nutze lieber raspiBackup bevor Du in die Luft gehst :)

    Edited once, last by framp ().

  • Hier meine Eingabe + den Error bei dir(GPIO)

    Code
    python
    Python 2.7.3 (default, Jan 13 2013, 11:20:46)
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import RPi.GPIO as GPIO
    >>> dir(GPIO)
    ['IN', 'InvalidDirectionException', 'InvalidPinException', 'OUT', 'WrongDirectionException', '_ExportedIds', '_GPIO_PINS', '_GetValidId', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '_unexport', 'atexit', 'input', 'os', 'output', 'setup']
    >>> quit()


    Gruss Adrian

  • Ok habe das korrigiert.. hab ich beim umstellen von .BOARD auf .BCM übersehen... trotzdem dem der gleiche error nach der korrektur...
    Das Programm kommt ja garnicht weiter als .setmode :(

  • Ich habe ja geschrieben dass der pin-mismatch nicht Dein Problem erklärt.


    Dein vorletztes Posting zeigt auch dass das GPIO-modul ein "setup" hat - insofern ist das schon sehr seltsam....


    Das letzte was mir einfallen würde ist dass aus welchem Grund auch immer ein falsches file geladen wird.


    Probier mal folgendes: Kommentier' alles aus aus Deinem script und füge folgendes ein:


    Code
    import RPi.GPIO as GPIO
    import os
    
    
    print(os.path.abspath(GPIO.__file__))


    Wenn da jetzt was kommt das wie "/usr/lib/python2.7/dist-packages/RPi/GPIO.so" aussieht weiss ich auch nicht weiter....


  • Wenn da jetzt was kommt das wie "/usr/lib/python2.7/dist-packages/RPi/GPIO.so" aussieht weiss ich auch nicht weiter....


    Diese Ausgabe erhalte ich....

    Code
    /usr/local/lib/python2.7/dist-packages/RPi.GPIO-0.1.0-py2.7.egg/RPi/GPIO/__init__.pyc


    Scheint aber, dass er GPIO0.1.0 am laufen hat... Gibt es eine möglichkeit dies auf 0.5.4 zu Updaten? (Habe ich zwar schon gemacht aber wohl falsch..)


    Gruss Adrian

  • Code
    sudo apt-get update
    sudo apt-get install python-rpi.gpio



    Da sieht man auch dass setmode existiert.

    Code
    pi@raspberrypi ~ $ sudo apt-cache policy python-rpi.gpio
    python-rpi.gpio:
      Installed: 0.5.4-1
      Candidate: 0.5.4-1
      Version table:
     *** 0.5.4-1 0
            500 http://archive.raspberrypi.org/debian/ wheezy/main armhf Packages
            100 /var/lib/dpkg/status


    Die Frage ist wie Du das Paket installiert hast. Ich bin einfach dieser Anleitung gefolgt.

    :no_sad: Kein Backup - kein Mitleid :no_sad:
    :) Nutze lieber raspiBackup bevor Du in die Luft gehst :)

    Edited once, last by framp ().

  • Okay das apt-get update nimmt mein PI nicht an. Sehr komisch das lief früher noch..
    Folgender ERROR kommt raus:

    Code
    E: Type 'wget' is not known on line 5 in source list /etc/apt/sources.list
    E: The list of sources could not be read.


    beim install python RPi.GPIO erhalte ich diese Ausgabe:

    Code
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    python-rpi.gpio is already the newest version.
    The following packages were automatically installed and are no longer requir
      hplip-data libart-2.0-2 libsane-hpaio python-pexpect python-renderpm
      python-reportlab python-reportlab-accel
    Use 'apt-get autoremove' to remove them.
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.


    Würde ja heissen RPi.GPIO ist auf dem neusten Stand :/


    Beim dir(GPIO) gleicher Error wie aus meinem Post vorher.


    Und als letztes diese Ausgabe:

    Code
    python-rpi.gpio:
      Installed: 0.5.3a-1
      Candidate: 0.5.3a-1
      Version table:
     *** 0.5.3a-1 0
            500 http://archive.raspberrypi.org/debian/ wheezy/main armhf Packages
            100 /var/lib/dpkg/status


    Gruss Adrian

  • Schmeiss es mal mit

    Code
    apt-get --purge remove python-rpi.gpio


    raus. Dann solltest Du mal Deine sources.list auf Vordermann bringen. Was steht denn da drin?

    :no_sad: Kein Backup - kein Mitleid :no_sad:
    :) Nutze lieber raspiBackup bevor Du in die Luft gehst :)

    Edited once, last by framp ().

  • Also das rausschmeissen und neuinstallieren brachte nix..
    Gleiche Fehlermeldungen wie vorher..


    Mein sources.list:

    Code
    deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
    
    
    deb http://repo.ajenti.org/debian main main
    
    
    wget http://repo.ajenti.org/debian/key -O- | sudo apt-key add -


    Da läuft [font="Monaco, Consolas, Courier, monospace"]http://repo.ajenti.org/debian ins Forbidden...[/font]


    [font="Monaco, Consolas, Courier, monospace"]Könnte das an meiner Firewall liegen vom Modem?[/font]


    [font="Monaco, Consolas, Courier, monospace"]Gruss Adrian[/font]

  • Die letzte Zeile ist etwas das Du auf der Kommandzeile einmal ausführst um einen key zu installieren.
    Die hat in sources.list nix verloren.


    Und ich würde jetzt nur mal das erste Repo nehmen, also: Lösch' die letzte Zeile und kommentier' die zweite aus dann mach ein "apt-get update" und dann installier'.

  • Danke.
    Läuft leider auch nicht...
    Gleiche Fehlermeldungen wie vorher...


    Komisch ist auch, dass wenn ich per Remotedesktop das Python IDLE öffne, erhalte ich ebenfalls eine Fehlermeldung..


    Somit könnte der Fehler bei Python allgemein liegen und nicht bei RPi.GPIO...
    Gruss Adrian

  • Ja das mit dem update läuft sorry^^
    Ich meine das .setmode...


    Output ls -l /etc/apt/sources.list:

    Code
    -rw-r--r-- 1 root root 196 Feb  2 19:21 /etc/apt/sources.list


    Output [font="Tahoma, Verdana, Arial, sans-serif"]cat /etc/apt/sources.list[/font]


    Code
    deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
    
    
    # deb http://repo.ajenti.org/debian main main
    
    
    # wget http://repo.ajenti.org/debian/key -O- | sudo apt-key add -


    [font="Tahoma, Verdana, Arial, sans-serif"]Output [font="Tahoma, Verdana, Arial, sans-serif"]sudo apt-get update[/font][/font]


  • ok.


    poste mal den output von "dpkg -l '*gpio*'".


    ich kann mir im Moment das Verhalten Deines scripts nur so erklären dass dort wo es liegt eine falsche GIPO-Bibliothel angezogen wird, also könntest Du mal probieren Dein script woanders hin zu verschieben ("mv my_script /tmp") und es dort ausführen um das auszuschliessen.

  • Ich stehe nun auch vor einem kleine Problem.


    Ich lese über das Netzwerk eine Temperatur von meinem Receiver ein.
    Ich poste mal den letzten Teil von meinem Python Script.



    Ausgabe: 08.02.2014 23:14:41 - 43



    Ausgabe: 08.02.2014 23:15:34 - 43
    Grad



    Bei der ersten Ausgabe ohne die Bezeichnung "Grad" steht alles in einer Zeile.
    Füge ich aber "Grad" hinten an, schreibt er es in die 2te Zeile. Wo kommt der Zeilenumbruch her?

  • Die Variable file enthaelt den Inhalt einer Datei, deren Zeile mit einem LF beendet wurde. Deshalb wird am Ende von der Ausgabe von file ein Zeilenvorschub ausgegeben und Grad in der naechsten Zeile ausgegeben. Eine moegliche Loesung ist

    Code
    fobj_out.write(Datum + " " + Zeit + " - " + file[:-1] + "Grad")


    , d.h. das letzte Zeichen in file wird nicht ausgegeben. Alternativ kannst Du das LF aus der Datei in der Zeile entfernen oder

    Code
    fobj_out.write(Datum + " " + Zeit + " - " + file.rstrip() + "Grad")


    Es gibt eben viele Wege nach Rom :)

    :no_sad: Kein Backup - kein Mitleid :no_sad:
    :) Nutze lieber raspiBackup bevor Du in die Luft gehst :)

    Edited once, last by framp ().

  • Danke. Aber wenn ich es wie in meiner ersten abfrage mache, und das ein paar mal hintereinander ausführe, dann müsste es ja eigentlich so aussehen:
    Ausgabe: 08.02.2014 23:15:34 - 43


    Ausgabe: 08.02.2014 23:15:34 - 43


    Ausgabe: 08.02.2014 23:15:34 - 43


    Es sieht aber ganz normal aus:
    Ausgabe: 08.02.2014 23:15:34 - 43
    Ausgabe: 08.02.2014 23:15:34 - 43
    Ausgabe: 08.02.2014 23:15:34 - 43


    Da wird dann kein Zeilenumbruch eingefügt?