Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
lirc Auswertung unter Python V2

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Software
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Pieper



Anmeldungsdatum: 19.02.2014
Beiträge: 6

BeitragVerfasst am: 20. Feb 2014 0:05   Titel: lirc Auswertung unter Python V2

Moin Moin,

dies ist mein erster Beitrag hier und hoffe man kann mir helfen.

Hatte im Nachbar-Forum schon angefragt, habe aber bislang noch keine Lösung erhalten.

Ich habe auf dem RaspberryPi unter Rasbian "wheezy" den IR-Empfänger mit Hilfe von:

http://www.pro-linux.de/artikel/2/1624/3,die-steuerung-die-hardware-und-das-system.html

erfolgreich zum Laufen gebracht und bekomme auch mit "irw" die Tasten meiner FB in der Konsole angezeigt.
Wie werte ich aber jetzt die gesendeten Befehle in meinem "shutdown script" unter Python Version 2 aus?



Code:
# shutdown script for Raspberry Model A
# watch LOW level on pin 5 to enter sleep mode
# status led on pin 7: ON = ready

import RPi.GPIO as GPIO
import os
import time

# use the pin number as on the raspi board

GPIO.setmode(GPIO.BOARD)

# set pin 7 as output and LOW, pin 5 is input
# Pin zum Ausschalten

GPIO.setup(7, GPIO.OUT)
GPIO.output(7, False)
GPIO.setup(5, GPIO.IN)

# Pins zur Relaissteuerung

GPIO.setup(22, GPIO.OUT)
GPIO.output(22, True)
GPIO.setup(16, GPIO.IN)
GPIO.setup(18, GPIO.IN)

while True:
# Relaisschaltung
   if not (GPIO.input(18)):
      GPIO.output(22, False)
   elif not (GPIO.input(16)):
      GPIO.output(22, True)
# /Relaisschaltung
# Shutdown
   elif not (GPIO.input(5)):
      os.system("sudo shutdown -h now")
# /Shutdown
   else:
      time.sleep(.5)


Taster am Gerät an PIN 5, 16 und 18 steuern den RPi schonmal, aber möchte diese Funktionen mit der FB steuern.

Wobei ich mit der Taste "Power" auf der FB den PIN 5 auf LOW legen möchte und mit der Taste "A/B" den PIN 22 wechselweise auf HIGH oder LOW legen möchte (wenn HIGH dann auf LOW und wenn LOW dann auf HIGH).


Meine lircd.conf:



Code:
#
# this config file was automatically generated
# using   lirc-0.7.1pre2(any) on Mon Jul   4 22:11:52 2005
#
# contributed by
#
# brand:             Technisat
# model   no. of remote control: TTS35AI
# devices being   controlled by this remote: Skystar 2.6D
#

begin remote

  name   Technisat_TTS35AI.conf
  bits       13
  flags   RC5|CONST_LENGTH
  eps       30
  aeps      100

  one      882   803
  zero      882   803
  plead      905
  gap          112766
  toggle_bit     2


      begin codes
     Power            0x1A8C
     Mute            0x1A8D
     1            0x1281
     2            0x1A82
     3            0x1283
     4            0x1A84
     5            0x1285
     6            0x1A86
     7            0x1287
     8            0x1A88
     9            0x1289
     0            0x1A80
     -/--            0x128A
     A/B            0x1AA3
     Red            0x0AAB
     Green            0x02AC
     Yellow         0x0AAD
     Blue            0x02AE
     Ok            0x0A97
     Up            0x12A0
     Down            0x1AA1
     Left            0x1291
     Right            0x1A90
     SFI            0x12AF
     Back            0x1AA2
     Info            0x028F
#      Prog+          0x1AA0
#      Prog-          0x12A1
     TV/Radio         0x0293
#      Volume+          0x1A90
#      Volume-          0x1291
     Menu            0x0A92
     Hilfe            0x1A8F
     TXT            0x12BC
     STOP            0x1AA9
     EXT            0x12B8
     HILFE2         0x0AB6
      end codes

end remote


Suche schon seit Tagen im Netz, aber lirc unter Python scheint noch sehr neu zu sein.
Danke für Eure Hilfe!


.
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 20. Feb 2014 0:16   Titel:

Du brauchst dieses Python-Skript nicht, um den Raspi herunterzufahren. Das Ding macht nichts anderes, als in einer Endlosschleife die GPIOs abzufragen und sobald input5 gedrückt ist, den Befehl "sudo shutdown -h now" aufzurufen.

Um mit der Fernbedienung ein Kommando auszulösen, guck dir bitte eins der Beispiele mit prog=irexec unter http://www.lirc.org/html/configure.html#lircrc_format an. Dort baust du nach dem Ausprobieren des Beispiels statt echo eben "sudo shutdown -h now" ein.

Die GPIOs kann man ebenfalls von überallher steuern. Dazu muss man nur 0 oder 1 in eine der Pseudodateien reinschreiben, die der Kernel unter /sys/class/gpio/ bereitstellt. Wie es genau geht, steht hier: http://raspberrypiguide.de/howtos/raspberry-pi-gpio-how-to/

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

Pieper



Anmeldungsdatum: 19.02.2014
Beiträge: 6

BeitragVerfasst am: 21. Feb 2014 0:07   Titel:

So,

habe die Tut´s mal durchgespielt, Shutdown ist auch so mit der FB ohne Probleme möglich,
aber der Teil mit der GPIO-Abfrage zur Umschaltung von GPIO 25 (PIN22) verlangt nach
der verlinkten Site leider root-Rechte und das möchte ich gerne verhindern.

Manuell über die SSH- Konsole hatte das zwar geklappt, aber die Einträge werden wohl in der rc.local ignoriert?

Muß ich nochmal genauer prüfen, da ein Lesen der Konsolen-Anzeige am TV über HDMI vom mplayer sofort nach dem booten verhindert wird (Hyperion-Ambilight).

Gibt es nicht evtl. noch eine andere Möglichkeit, mein Python-Script zu erweitern?


.
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 21. Feb 2014 13:27   Titel:

Pieper hat folgendes geschrieben::
aber der Teil mit der GPIO-Abfrage zur Umschaltung von GPIO 25 (PIN22) verlangt nach der verlinkten Site leider root-Rechte und das möchte ich gerne verhindern.

Und wo bitte ist das ein Problem? Zum Herunterfahren brauchst du die auch. irexec lässt du als root-Daemon laufen und die Feststellung, welche Kommandos nun irexec benutzen dürfen steht ja in der globalen lircd.conf.

Du kannst aber auch die Zugriffsrechte auf die GPIO-Pseudodateien mit chmod und chown ändern.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

Pieper



Anmeldungsdatum: 19.02.2014
Beiträge: 6

BeitragVerfasst am: 21. Feb 2014 14:34   Titel:

Das Problem ist aber, das die Verzeichnisse unter /sys/class/gpio/ nach jedem
Neustart wieder angelegt werden müssen, und daher die Rechte
erneut vergeben werden müssen.

Zumindest habe ich das so aus dem Tut gelesen, und auch so festgestellt
.


.
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 21. Feb 2014 15:09   Titel:

Pieper hat folgendes geschrieben::
Das Problem ist aber, das die Verzeichnisse unter /sys/class/gpio/ nach jedem
Neustart wieder angelegt werden müssen, und daher die Rechte
erneut vergeben werden müssen.

Das sind Pseudodateien. Die existieren nur als Zustände im Kernel, also im RAM. Bau das chmod/chown einfach in das Bootscript ein. Die anderen Dienste, z.B. udev machen es auch nicht anders, als die Rechte jeweils beim Booten wie per Konfiguration gewünscht einzustellen.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

Pieper



Anmeldungsdatum: 19.02.2014
Beiträge: 6

BeitragVerfasst am: 21. Feb 2014 17:42   Titel:

Hi,

endschuldige die "dummen" Einsteigerfragen, nutze aber meinen RPI erst seit 2 Monaten mit wheezy, zum Betrieb mit Hyperion, und bin froh, das ich das selber soweit zum Laufen gebracht habe.
Bei Interesse kann ich ja mal Bilder machen.

Welches Bootscript meintst du, rc.local oder config.txt, oder gibts da noch andere?

Wäre für ein Beispiel, was ich da wo reinschreiben soll, dankbar!

Aber keine Angst, wenn das dann funktioniert geht das noch weiter!

Display 1602 über i2c kommt auch noch Wink
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 21. Feb 2014 18:38   Titel:

Pieper hat folgendes geschrieben::
Welches Bootscript meintst du, rc.local

Ja, /etc/rc.local. Das wird als root beim Booten der Maschine ausgeführt und zu dem Zeitpunkt existieren die benötigten Nodes schon, da sie ja der Kernel selbst bereitstellt.

Evtl. musst du chmod/chown mit voller Pfadangabe versehen, keine Ahnung wie der PATH innerhalb dieses Skriptes gesetzt ist. Mein Raspi ist gerade auf Wanderschaft.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

Pieper



Anmeldungsdatum: 19.02.2014
Beiträge: 6

BeitragVerfasst am: 22. Feb 2014 16:37   Titel:

@ Janka: Super Hilfe von dir, und besten Dank nochmals!

Zur Info an alle, die ähnliches vorhaben.

Meine .lircrc:

Code:
   begin
        remote = Technisat_TTS35AI.conf
        button = Power
        prog   = irexec
        repeat = 0
        config = sudo shutdown -h now
    end

   begin
        remote = Technisat_TTS35AI.conf
        button = 1
        prog   = irexec
        repeat = 0
        config = echo "1" > /sys/class/gpio/gpio25/value
    end

   begin
        remote = Technisat_TTS35AI.conf
        button = 2
        prog   = irexec
        repeat = 0
        config = echo "0" > /sys/class/gpio/gpio25/value
    end


Meine rc.local:

Code:
!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

/usr/bin/gpio2spi </dev/null >/dev/null 2>&1 &
#/usr/bin/hyperion-v4l2 --width 360 --height 288 --crop-width 5 --crop-height 10 --size-decimator 3 --frame-decimator 1 --signal-threshold 0.05 --skip-reply
#/usr/bin/hyperion-v4l2 --width 360 --height 288 --crop-width 5 --crop-height 10 --size-decimator 3 --frame-decimator 1 --skip-reply --signal-threshold 0.05
/usr/bin/mplayer -tv driver=v4l2:width=96:height=54 device=/dev/video0 -vo fbdev -fs -fps 20  tv:// </dev/null >/dev/null 2>&1 &
/usr/bin/hyperiond /etc/hyperion.config.json </dev/null >/dev/null 2>&1 &

sudo python /home/pi/shutdown.py &



# Freigabe der Rechte für GPIO

sudo chmod 222 /sys/class/gpio/export /sys/class/gpio/unexport

echo "25" > /sys/class/gpio/export

echo "out" > /sys/class/gpio/gpio25/direction

# Ende Freigabe



sudo irexec &


exit 0


und meine shutdown.py:

Code:
# shutdown script for Raspberry Model A
# watch LOW level on pin 5 to enter sleep mode
# status led on pin 7

import RPi.GPIO as GPIO
import os
import time

# use the pin number as on the raspi board

GPIO.setmode(GPIO.BOARD)

# set pin 7 as output and LOW, pin 5 is input
# Pin zum Ausschalten

GPIO.setup(7, GPIO.OUT)
GPIO.output(7, False)
GPIO.setup(5, GPIO.IN)

# Pins zur Relaissteuerung

GPIO.setup(22, GPIO.OUT)
GPIO.output(22, True)
GPIO.setup(16, GPIO.IN)
GPIO.setup(18, GPIO.IN)

while True:

# Relaisschaltung
   if not (GPIO.input(18)):
      GPIO.output(22, False)
   elif not (GPIO.input(16)):
      GPIO.output(22, True)
# /Relaisschaltung



# Shutdown
   elif not (GPIO.input(5)):
      os.system("sudo shutdown -h now")
# /Shutdown
   else:
      time.sleep(.5)



Evtl. hilft das ja jemanden Laughing


.
 
Benutzer-Profile anzeigen Private Nachricht senden

Pieper



Anmeldungsdatum: 19.02.2014
Beiträge: 6

BeitragVerfasst am: 22. Feb 2014 16:41   Titel:

Hier nochmals die Site, die zum Durchbruch führte:

http://wiki.ubuntuusers.de/Lirc/Tasten_mit_Funktionen_belegen
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Software Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy