Wie sage ich es in Python ? (Einsteigerfragen)

  • Du solltest zunächst deine Idee weiter vervollständigen und zum Beispiel die Frage klären wie die beiden PI's miteinander kommunizieren - erst wenn deine Idee vollständig ist macht es Sinn darüber nachzudenken welche Programmiersprache bzw Version dafür am besten geeignet wäre ;)

    Wenn die beiden PI's dicht beeinander stehen käme vielleicht ein Kabel auf den UART pins (RX / TX) in Frage, wenn die aber zu weit voneinander weg stehen käme meines erachtens entweder nur der Aufruf über den Webserver (also php) in Frage oder man baut sich etwas über das telnet Protokoll selber bzw mithilfe netcat's ...


    Zur python Version kann man aber sagen das v3 umfangreicher und mächtiger ist als v2, es haben sich aber leider auch einige Befehle geändert die nicht mehr miteinander kompatibel sind (v3 ist also nicht vollständig zu v2 Abwärtskompatibel) und deshalb auf dem PI immer noch mit v2 programmiert wird und auch die meisten Tutorials usw für v2 sind (es sei denn es steht dort explizit 'für v3' dabei...)

  • Ein Pi ist am Netzwerkkabel und der andere über WLAN. Beide im selben Netzwerk.
    Sind aber 2 Räume von einander entfernt. Direkte Verbindung ist also leider nicht möglich.

    Aber mal generell gefragt: Ist es möglich, ein Python Script auf dem ersten Pi auszuführen, der aber den Befehl an den 2ten Pi weitergibt?
    Soll eigentlich nichts großartiges sein. Nur ein Button (damits meine Freundin leicht hat :-P) auf dem der Radiosender steht, oder Radio ein, Radio aus.

  • Ja ich hab doch grad 2 Möglichkeiten genannt :)

    Netzwerkverbindung ist selbstverständlich Vorraussetzung wenn keine Möglichkeit der Visuellen oder Kabelverbindung besteht denn Handzeichen können die sich nicht geben ;)

    Also noch mal: Du musst dir überlegen wie der eine PI dem anderen über Netzwerk die Befehle übermittelt - das einfachste wäre wenn auf dem "client"-PI ebenfalls ein Webserver mit nem PHP Script läuft, dann kannst du ganz einfach zum Beispiel über GET ( http://192.168.0.10/script.php?befehl=1 ) Kommandos absetzen... Würde aber bedeuten das Du auch etwas in PHP programmieren musst...

    Desweiteren musst du dir überlegen wie bzw was auf dem Client dann passieren muss, also die entsprechende Aktion um den Sender zu wechseln - was muss wie angesprochen werden damit der sender gewechselt wird, muss das Programm erst beendet werden und anschliesend mit einem neuen Sender gestartet werden o.ä.... oder was auch immer

    Also: Konzept sowie Bedingungen überlegen und ausarbeiten, und erst dann überlegen welche Programmiersprache dafür in Frage käme


    Weitere Fragen zu deinem speziellen Vorhaben aber bitte in einem eigenen Thread stellen da es mit diesem Thema hier nicht so viel zutun hat

  • Hallo,

    ich beschäftige mich nun seit ein paar Monaten mit dem Raspberry und Python. Bisher habe ich hauptsächlich mit den GPIOś und LEDś bzw. 7 Segmentanzeigen "gespielt". Jetzt habe ich angefangen mit dem QtDesigner kleine GUI's zu erstellen. Nun stehe ich allerdings vor dem Problem, dass mein Programm ereignisgesteuert ist und ich somit nicht weis, wie ich jetzt die GPIO's zyklisch abfragen kann.

    Beide Beispiele im Anhang funktionieren, allerdings möchte ich eben diese beiden Funktionen zusammenführen.

    Ziel ist ein kleines Programm mit GUI, über das ein Foto oder ein Video aufgenommen werden kann. Zusätzlich soll es möglich sein über einen Taster ebenfalls ein Foto aufzunehmen.

    Meine Frage ist jetzt, wie sieht ein geeigneter Lösungsansatz aus, bzw. was sind Stichworte, die mir weiterhelfen?

    Anbei mein Code für das ereignisgesteuerte Programm mit GUI

    Und hier der Code für das Aufnehmen eines Fotos über Öffner-Taster am GPIO-Port.

    Edited once, last by PinQin (December 31, 2013 at 5:32 PM).

  • Vielen Dank für die Denkanstöße. Ich habe mir den Link angesehen und meinen Code angepasst. Nun bekomme ich allerdings eine Fehlermeldung, die ich nicht nachvollziehen kann, Ich starte das Programm über:

    sudo python programmname.py

    Ich erhalte folgende Fehlermeldung:

    Traceback (most recent call last):
    File "prog_cam.py", line 25, in <module>
    GPIO.add_event_detect(11, GPIO.RISING, callback=taster)
    RuntimeError: No access to /dev/mem. Try running as root!

    Hab das Programm doch als root gestartet :s

    Hier ist mein Code ...

  • Hallo,

    ich benutze folgenden Code um die Ausgabe eines Befehles einzulesen.

    Code
    system("bash -c \"read -n 1\"")
    temp_str=os.popen("COMMAND").readlines()

    Mein problem ist nun, dass die Konsole immer auf die Betätigung der ENTER-Taste wartet. Wie kann ich das umgehen?


    EDIT:
    ___________________

    :wallbash:

    Die 1. Zeile gehört da ja auch nichtmehr hin ...

    [font="Monaco, Consolas, Courier, monospace"]system("bash -c \"read -n 1\"")[/font]

    Edited once, last by PinQin (January 4, 2014 at 3:17 PM).

  • Hallo,

    ich habe mal wieder eine Frage. Ich habe vor die Adafruit Library in meinem Programm zu benutzen, um einen Luftdrucksensor auszuwerten. Das Testprogramm von Adafruit läuft bei mir.

    Der Sensor:
    BMP085 über I2C

    Das Testprogramm:


    Wenn ich die Library in meinem Programm wie folgt einbinden möchte:

    Python
    from Adafruit_BMP085 import BMP085

    Bekomme ich folgende Fehlermeldung:

    Code
    ImportError: No module named Adafruit_BMP085

    Um Tippfehler zu umgehen, habe ich die Zeile auch schon aus dem funktionierenden Testprogramm kopiert und erhalte den selben Fehler.

    Wo kann ich nun anfangen den Fehler zu suchen? Kann mir eventuell einer erklären, woher Python weis, welche Librarys zur Verfügung stehen, bzw. wo die Librarys liegen?

    Vielen Dank,

    PinQin

    Edited once, last by PinQin (January 30, 2014 at 7:10 PM).

  • hast du denn das adafruitzeug schon von github geclont? wenn die adafruit .py datein im gleichen verzeichnis wie dein script liegen, klappt das auch mit dem importieren. ;) vom manuellen installieren in die python modul pfade rate ich ab. da suchst du dich im fehlerfall blöde. diesen weg überlässt du bitte den installern pip oder python setup tools.

  • Ja, habe ich geklont.

    Ich habe es jetzt auch so gelöst, dass ich die Library in mein Verzeichnis gepackt habe. Mich hat es nur gewundert, dass z.B. die Library für die GPIOs (RPIO.GPIO) nicht in dem Verzeichnis liegen muss und trotzdem importiert werden kann.

    Von der Windowswelt kenne ich z.B. die Variable path, in der alle Suchverzeichnisse stehen, in denen gesucht wird, um Dateien auszuführen, ohne den gesamten Pfad anzugeben. Ich dachte, so etwas ähnliches muss es ja auch für die Librarys geben ;)

    Ich danke dir für deinen Hinweis zwecks der manuellen Eintragung :danke_ATDE:

  • Python sucht nicht nur im aktuellen Verzeichnis nach Modulen, sondern auch in den Verzeichnissen die in der PYTHONPATH enviroment-Variable stehen sowie in den Verzeichnissen die fest einkompiliert sind.

    Der einfachste Weg ein Modul aus einem nicht-Standartverzeichnis zu laden ist wohl PYTHONPATH entsprechend anzupassen.

  • Moin zusammen,
    ich bin in der Python-programmierung absoluter Neuling.
    Installiert habe ich RPi.GPIO0.5.4 auf dem Betriebssystem Raspbian.
    Mein erstes Programm scheitert beim setmode.

    Code
    Traceback (most recent call last):
      File "gpio1.py", line 3, in <module>
        GPIO.setmode(GPIO.BCM)
    AttributeError: 'module' object has no attribute 'setmode'

    Mein Programm sieht so aus:

    und ich habe keine Ahnung wo mein Fehler liegen könnte. nach diversen Tut's wäre GPIO.setmode(GPIO.BCM) ja richtig......

    Hoffe jemand kann mir helfen.

    Gruss Adrian

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!