Posts by tibel

    Hallo in die Runde,


    ich hoffe, ich bin hier im richtigen Board, weil es kein absoult OSMC-spezifisches Problem ist, aber OSMC hier wohl doch einige Eigenarten hat...


    Ich möchte via Fernbedienung einen GPIO-Pin schalten. Dazu will ich in der remote.xml ein entsprechendes Python-Script aufraufen, das den GPIO schaltet.
    Die Fernbedieung funktioniert via lirc problemlos. Auch das Python-Script funktioniert, wenn ich es als root aufrufe. Und hie rist mein Problem: Wie bekomme ich das Script mittles lirc als root ausgeführt?


    Hier meine remote.xml:

    Code
    <keymap>
     <global>
       <remote>
         <volumeminus>RunScript(/home/osmc/.kodi/userdata/pyscripts/links.py)</volumeminu$
       </remote>
     </global>
    </keymap>


    Das script hat chmod 777, aber das bringt nichts, wiel ich wohl Zugriff auf /dev/mem brauche und den hat nur root. Wenn die Taste auf der Fernbedienung drücke, erscheint im Logging dieselbe Fehlermeldung, wie wenn ich das Script ohne root ausführe:

    Code
    RuntimeError: No access to /dev/mem.  Try running as root!


    Habe testweise schonmal versucht, osmc zur Gruppe root hinzufügen, das hat auch nichts gebracht.
    Die Gruppe gpio scheint es in OSMC nicht zu geben. (RPi.GPIO ist natürlich installiert, das Script tut ja - wenn ich es via ssh als root aufrufe - auch, was es soll)
    Meine Idee wäre jetzt den entsprechenden lirc-Dienst als root laufen zu lassen. Denke aber, dass das eigentlich schon der Fall sein müsste, da ich lirc über folgenen Eintrac in der rc.local starte:

    Code
    lircd -d /dev/lirc0


    Habt ihr irgendwelche Ideen, wie ich dem Problem beikommen kann? Vielleicht ist es ja ganz einfach...


    Danke und liebe Grüße
    Tim

    Hallo in die Runde,


    vielen Dank für die Antworten und sorry, dass ich mich so lange nicht gemeldet habe...
    ich fasse zusammen: Ich kann es so machen, wie geplant, sollte aber nach Möglichkeit eine externe Stromversorgung nutzen.


    Neueinsteiger: Der Pi soll auch (wieder) als Mediacenter dienen und steht daher eh neben/hinter der Anlage. Ansonsten wäre Arduino natürlich die bessere Wahl. Damit wollte ich mich eh mal beschäftigen...
    oldtimer: was meinst du mit "entkopple die Pi GPIO optisch"? Die vordefinierten Ports nicht zu nutzen, ist ein guter Hinweis, da hatte ich schonmal Probleme. Da oben hätte ich halt alle Pins recht nah beieinander gehabt, aber sei's drum...


    Danke und Grüße
    Tim

    Hallo in die Runde,


    ich habe folgendes vor und wollte einmal nachfragen, ob ich das so machen kann oder ob ihr bessere Ideen habt:


    Ich habe einen schönen alten Verstärker, der leider nicht über eine Fernbedienung verfügt. Um zumindest die Lautstärke via Fernbedienung zu steuern, möchte ich das Lautstärke-Poti gegen ein Motorpoti tauschen, das vom Raspberry Pi angesteuert wird. Mittels LIRC, einer alten Fernbedienung und ein bisschen Python will ich dann die Lautstärke ändern.
    (Ich weiß, dass es auch "Digitalpoti"-ICs gibt uns habe auch schon vom "Audio Volume Control"-Chip PGA2310 gelesen. Ich würde aber gerne so wenig wie möglich am Verstärker ändern und unbedingt die Möglichkeit, am Gerät schnell lauter/leiser zu drehen erhalten. Deshalb also ganz "klassisch" mit einem Motorpoti.)



    Als Poti soll ein ALPS RK16812MG zum Einsatz kommen (Link, Datenblatt). Das muss nun vom Raspi angetrieben werden. Nach ziemlich viel Lesen über H-Brücken, PWM, usw. habe ich den L293D (Link, Datenblatt 1, Datenblatt 2) gefunden. Damit müsste es doch möglich sein, den Poti-Motor in die eine, bzw. die andere Richtung laufen zu lassen, oder? Ohne PWM oder sonstigen Schnick Schnack. Einfach nur in die eine Richtung, wenn ich den einen GPIO high schalte, in die andere, wenn ich den anderen GPIO high schalte.


    Zur Verdeutlichung habe ich die geplante Verkabelung mal ganz fachmännisch in Paint aufgemalt:


    Wo ich mir unsicher bin: Sollte ich "1,2EN" dauerhaft mit 3,3V beschalten oder nur wenn ich den Motor auch drehen will? Sprich: Über einen weiteren GPIO? Und: Wie schaut das mit dem Strom aus? Der Motor hat beim Drehen eine maximale Stromaufnahme von 100mA. Über den GPIO wäre das ja zu viel. So wie ich das verstehe zieht der Motor den Strom aber über IC-Pin 8, also vom 5V-Anschluss. Hält der Pi hier 100mA aus? Oder müsste ich hier auf eine externe Stromquelle zugreifen (die dann evtl. auch den Pi mit versorgen würde)?


    Über ein, zwei Einschätzungen zum Vorhaben wäre ich dankbar.
    Beste Grüße und ein schönes Wochenende
    Tim

    Besten Dank. Ich habe mich noch ein bisschen in Autostart unter Linux eingelesen (echt Wahnsinn, wie viele verschiedene Möglichkeiten es da gibt!!) und es jetzt mittels .desktop-Datei gelöst. jetzt funktionierts :)

    Hallo in die Runde,


    ich habe schon wieder ein kleines Python-Problem: Ich möchte per GPIO-Taster ein Programm (pqiv) starten. Wenn ich folgendes Skript starte und den Taster betätige startet das pqiv:



    Wenn ich das Skript jedoch via rc.local beim Start lade, öffnet sich pqiv nicht beim Tastendruck. Ich vermute, dass es irgendwie damit zusammenhängt, dass das Skript dann nicht auf den X-Server zugreifen kann. Ähnlich, wie wenn ich das Skript per SSH starte. Ich konnte allerdings via Google keine Lösung für mein Problem finden.


    Was kann ich machen, damit das Skript nach dem Systemstart automatisch in der Lage ist, pqiv (oder auch ein beliebiges anderes Programm) zu starten?


    Danke und Gruß
    Tim

    Vielen Dank schonmal für die Antworten,


    ein vorweg: An sich sollte die Abfrage auf GPIO.HIGH testen. Ich habe nur mal zu Testzwecken GPIO.LOW eingesetzt und das ist dann hier rien gerutscht... Nun im Einzelnen:


    @[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Berlin_pi : [/font]Interrupts werde ich mir mal anschauen, das scheint eine sinnvolle Lösung zu sein.


    @[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]KrawallKurt : [/font]Die Pull-Up-Widerstände habe ich doch in der Schaltung, 10k. Habe gelesen, dass man sich auf die internen nicht verlassen sollte und das ganze besser mit zusätzlichen Widerständen löst. Und beides ist unnötig, bzw. unsinnig, oder?


    @[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]dreamshader: Wie kann ich denn dein Input beim Programmstart auf High oder Low setzen? Ich dachte, das ginge nur mit Outputs?! Dass das Problem vor dem PC sitzt ist mir klar. Ich habe eben nach einem Titel gesucht, der mein Problem beschreibt. Und ich denke, es ist beim Lesen des Titels ungefähr klar, was mein Anliegen ist, oder? [/font]


    @[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Andreas: Die Idee, den Output auf diese Weise auszulesen habe ich im Internet gefunden und es funktioniert problemlos. Gibt es denn (abgesehen von "stilistisch nicht so schönem Code") einen Grund für dein Grauen? Ich dachte mir, ich spare mir einfach die Variable... Und zwischen Pin 18 und 19 ist ja ein 10k Widerstand (bzw. sogar 10k + 220). Das funktioniert auch alles. Auch die Fehlermeldung ist natürlich richtig! Eine Abfrage, ob pqiv überhaupt geöffnet ist, kann ich natürlich noch einfügen. Aber mein Problem ist ja, dass ich den Taster nicht vernünftig ausgelesen bekomme und deshalb das Programm pqiv schließen will, obwohl es nicht soll.[/font]


    @[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]kobold254 : Was ist denn daran umständlich? Die Alternative mit einer Statusvariable wäre ja mehr Code, also "umständlicher". Die LED steht für die Zustand "bereit", ich benutze also quasi den GPIO-Zustand als Statusvariable. Ich bin Python-Anfänger und ändere meinen Code gerne, würde aber gerne verstehen, warum es so wie ich es mache umständlich oder unsauber ist. Meinst du mit dem falschen Aufbau meinen Code, meinen Schaltplan oder meinen tatsächlichen Aufbau auf dem Steckbrett? Letzteren hast du ja nicht gesehen...[/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Ich habe das ganze jetzt mal kolossal reduziert auf folgenden Code:[/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]

    Python
    #!/usr/bin/python[/font][/color][color=#333333][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]# benoetigte Module importieren[/font][/color]import timeimport RPi.GPIO as GPIO# RPi.GPIO Layout verwenden (wie Pin-Nummern)GPIO.setmode(GPIO.BOARD)GPIO.setwarnings(True)GPIO.cleanup()# Pins definieren und "Bereit"-LED einschalteninput_list = [3,5,18]GPIO.setup(input_list, GPIO.IN)GPIO.while 1:    print "pin  3 ="+str(GPIO.input(3))    print "Pin  5 ="+str(GPIO.input(5))    print "Pin 18 ="+str(GPIO.input(18))[color=#333333][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]    time.sleep(1)

    [/font][/color]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Ergebnis: Pin 3 und 5 stehen auf 1, Pin 18 auf 0. Betätige ich den Taster von Pin 18, schaltet dieser temporär auf 1. Betätige ich den Taster von Pin 5 tut sich nichts. Das erklärt dann auch, warum meine Schleife immer ausgeführt wird.
    [/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Anschließend habe ich dann - um eine falsche Verkabelung doch auszuschließen - die Kabel nochmal komplett abgezogen und das Skript nochmal gestartet. Ergebnis ist das selbe wie oben. Es scheint also, als müsste ich die Input-Pins tatsächlich irgendwie erstmal auf 0 setzen?! Oder ist wohl mein Board defekt?[/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Danke und Gruß[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Tim[/font]

    Liebes Forum,


    ich bastel gerade an einer Fotobox und an sich klappt alles super. Mittels GPIO-Taster starte ich einen LED-Countdown und mache mehrere Fotos, die anschließend zusammengefügt und im Display angezeigt werden. Soweit, so gut. Mittels eines weiteren Tasters soll nun die Anzeige im Display beendet werden. Die Taster lese ich per If-Bedingung in einer Endlosschleife aus. Im Falle des Start-Taster funktioniert das wunderbar. Die Anweisung zum Schließen wird aber immer ausgeführt, unabhängig vom Taster-Zustand. Hier mein Code (In der Mitte fehlen ein paar Funktionen, die mit der Funktionalität des IF jedoch nichts zu tun haben):



    Außerdem anbei noch die Schaltung. Ich habe drei Mal geprüft, ob ich alles korrekt verkabelt habe und bin mir eigentlich ziemlich sicher, dass ich auf dem Steckbrett alles genau so habe, wie im Schaltplan. Ich habe auch schonmal zwischen Pin 3 und 5 gewechselt, das Ergebnis ist das gleiche: Sobald ich das Skript starte, kommt eine Fehlermeldung, dass kein pqiv-Prozess läuft. Er führt also die IF-Anweisung aus.


    Habt ihr irgendeine Idee, ob mit dem Code etwas nicht stimmt? :s


    Danke und Gruß
    Tim

    Lieber Andreas,


    danke für die schnelle Antwort. Eine 5 bis 6-fach schnellere Berechnung wäre für mich ein Argument, in den Pi 3 zu investieren.


    Vielleicht könnte ich meinen Code ja auch noch optimieren um das Skript schneller zu bekommen (obwohl das eigentlich kein Hexenwerk ist). Vor allem das Verkleinern dauert so seine Zeit. Die Bilder sind im original 2592x1944 px groß:


    Lieben Gruß
    Tim

    Hallo zusammen,


    ich habe hier einen guten Alten Raspberry Pi B. Der soll in eine Photobox eingebaut werden und aus vier Fotos + Hintergrund mittels Imagemagick einen Fotostreifen machen. Das funktioniert auch problemlos, dauert aber... Zunächst werden die 4 Bilder verkleinert und dann mittels composite zusammengesetzt. Die Bilder in kleinerer Auflösung aufnehmen will ich eigentlich nicht, da ich die Originale möglichst hochauflösend haben möchte.


    Nun stelle ich mir die Frage, wie lange die Berechnung des Fotostreifens wohl auf dem Pi 3 dauern würde. Auf dem Papier sind 4x1200 MHz ja schon eine Hausnummer im Vergleich zu 1x700 MHz. Hinzu kommt die gesteigerte Effizienz. Bevor ich jetzt aber einen Pi 3 kaufe und merke, dass es kaum schneller geht, die Frage: Was meint ihr, mit welcher Rechenzeit muss ich rechnen, wenn der Pi 1 B 1 Minute beschäftigt ist? Kann ich die vier Kerne mit Imagemagick überhaupt ausnutzen?


    Oder gibt es einen anderen "Flaschenhals"? Als SD-Karte verwende ich eine 32 GB SanDisk Ultra Class 10 mit theoretisch max. [font="Arial, sans-serif"]80 mbit/s[/font]


    Danke und Gruß
    Tim