Forum: PC-Programmierung Raspi - LIRC + Inet-Radiostream


von Klaus R. (klaus2)


Lesenswert?

Hallo zusammen,

ich habe mpg123 als Player für wählbare Inet-Streams auf einem R2B+ 
laufen, Anzeige über ein 2x16LCD, Steuerung über 6 Tasten. Alles auf 
einem i2c shield. Läuft soweit super.

Nun würde ich gerne LIRC nutzen um neben den Tasten auch eine IR FB 
nutzen zu können, aber es stellen sich folgende Fragen:

1) Meine Steuerung läuft über ein bash, welches zyklisch die Tasten im 
i2c shield abfragt. Wenn ich nun "ver-ODER-t" auch auf einen input aus 
LIRC reagieren möchte, wie frage ich das ab - auf einem uC hätte ich 
dazu eine entsprechende Variable, aber beim Raspi? Kann LIRC meinem bash 
den Tastendruck iwie über shared memory übergebn o.ä.? Wo finde ich ein 
Beispiel für sowas? (Script A schreibt in golbale Variable, Script B 
prüft diese)

2) Wenn der TSOP an GPIO18 hängt, wird der dann gepollt??? Das würde ja 
eine recht hohe Prozessorlast erzeugen und mit mpg123 ist der ja so 
schon gut beschäftigt? Wie erreicht man, dass beides gleichzeitig 
"flüssig" läuft?

...mir fehlt leider noch etwas die Erfahrung in der Raspi-Denke.

Klaus.

von test (Gast)


Lesenswert?

Google nach "lirc bash" liefert gleich das

https://wiki.ubuntuusers.de/Lirc/Tasten_mit_Funktionen_belegen/

Ein RAM Filesystem erzeugen und in der llircrc der touch dummy Files 
erzeugen die dein bash Script pollt (und dann löscht).

Ein wenig unelegant, aber das einfachste für den Anfang.

Python wäre eleganter.

von Klaus R. (klaus2)


Lesenswert?

...und was wäre das zauberwort bei python um zwischen zwei tasks daten 
auszutauschen?

Btw: Gibt es bei Raspi einen scheduler, dem ich mein bash anvertrauen 
kann? Momentan lasse ich es nämlich am Ende immer 0.2s schlafen, was ja 
aber auch nicht "elegant" ist.

EDIT: Verstehe, die bash als phython und dann die lb einbinden...nungut, 
die bash wollte ich nicht umschreiben, daher die frage nach einer 
globalen var. Wäre eine "pipe" eine Option, lässt sich damit aus der 
LIRC config etwas in das inet bash "pipen"?

Klaus.

: Bearbeitet durch User
von test (Gast)


Lesenswert?

Dateien im temp Filesystem (welches eine RAM Disk ist) als "globale 
Variable" (IPC) ist unter Linux vollkommen akzeptiert.
Mach das doch einfach mit der lircrc, ist das einfachste.

Es geht natürlich auch eleganter. Z.B. über Sockeds, das sieht aus wie 
Dateien, sind real aber keine.

Du kannst also die Info von lirc direkt bekommen indem du die "Dateien" 
liest die lirc anlegt
http://www.lirc.org/html/lircd.html#lbAG

von Klaus R. (klaus2)


Lesenswert?

OK, Danke! Ich versuche es erstmal mit

f = open("demofile.txt", "w")
f.write("Woops! I have deleted the content!")

und lese die Datei dann im bash und prüfe auf "which key"...

-> Und wie ist das nun mit dem polling vom IR empfänger, läuft das wrkl 
so?

Klaus.

von test (Gast)


Lesenswert?

IR Empfänger pollen ist nix was den pi großartig auslastet.
Wie gut das funktioniert hängt am Ende davon ab ob lirc den IR Code 
kennt (raw codes sind Mist, am besten die lirc.conf manuell schreiben). 
Ferner hängt es davon ab ob die Fernbedienung brauchbare Codes sendet 
(Kennungen für Taste wiederholt gedrückt und gehalten müssen korrekt 
gesendet werden). Aber das sind Feinheiten.

von Klaus R. (klaus2)


Lesenswert?

OK, ich schaue erstmal was der Raspi mit laufendem LIRC sagt und ob er 
die codes mit 455kHz träger de B&O erkennt... (er soll ja auch den 
receiver steuern können).

Danke! Klaus.

: Bearbeitet durch User
von Planlos (Gast)


Lesenswert?

Schau dir vielleicht mal mpd als Ersatz für mpg123 an 
(https://www.musicpd.org/)

Das macht sehr viel von dem, was du per Bash hinfrickeln willst schon 
selber, lässt sich aber trotzdem bash-fernsteuern, gibt passende 
client-Programme.

Dann kann dein GPIO-Poll-Programm den Player genauso steuern, wie der 
LIRC-Empfänger, eine USB-Tastatur oder eines der vielen Client-Programme 
für Händies.

von Planlos (Gast)


Lesenswert?


von Klaus R. (klaus2)


Lesenswert?

Hallo,

bei mir scheitert es leider gerade an der LIRC Installation, so richtig 
finde ich dazu aber nichts:

SOLL:

lsmod | grep lirc
lirc_rpi                9032  0
lirc_dev               10583  1 lirc_rpi
rc_core                24377  1 lirc_dev

IST:

pi@xxx_PI:~ $ lsmod | grep lirc
lirc_rpi                8001  2
lirc_dev                8313  1 lirc_rpi

-> rc_core fehlt aber ich kann mir weder einen Reim daraus machen was da 
schief läuft, noch wo mein Fehler liegt. Da sich aber die meisten 
Installationsanleitungen NICHT auf die 0.9.4c-9 beziehen, ist es schwer 
das rauszufinden.

Klaus.

von test (Gast)


Lesenswert?

Hat der pi keinen Packetmanaget... apt-get install lirc oder so ähnlich?

von Klaus R. (klaus2)


Lesenswert?

...doooch, das war ja alles erfolgreich! zgT sehe ich auch keine 
Unterscheide zum soll, außer hier wieder in der 3. letzten Zeile:

pi@oneplus_PI:/boot $ systemctl status lircd.service
● lircd.service - Flexible IR remote input/output application support
   Loaded: loaded (/lib/systemd/system/lircd.service; enabled; vendor 
preset: enabled)
   Active: active (running) since Fri 2018-09-21 00:10:28 CEST; 19h ago
     Docs: man:lircd(8)
           http://lirc.org/html/configure.html
 Main PID: 365 (lircd)
   CGroup: /system.slice/lircd.service
           └─365 /usr/sbin/lircd --nodaemon

Sep 21 00:10:30 oneplus_PI lircd[365]: lircd-0.9.4c[365]: Info: Cannot 
configure the rc device for /dev/lirc0
Sep 21 00:10:30 oneplus_PI lircd[365]: lircd-0.9.4c[365]: Notice: 
accepted new client on /var/run/lirc/lircd
Sep 21 00:10:30 oneplus_PI lircd-0.9.4c[365]: Notice: 
/etc/lirc/lircd.conf.d/devinput.lircd.conf: devinput: Multiple values 
for same code:
Sep 21 00:10:30 oneplus_PI lircd-0.9.4c[365]: Notice: 
/etc/lirc/lircd.conf.d/devinput.lircd.conf: devinput: Multiple values 
for same code:
Sep 21 00:10:30 oneplus_PI lircd-0.9.4c[365]: Warning: Duplicate remotes 
"devinput" found, problems ahead
Sep 21 00:10:30 oneplus_PI lircd-0.9.4c[365]: Notice: lircd(default) 
ready, using /var/run/lirc/lircd
Sep 21 00:10:30 oneplus_PI lircd-0.9.4c[365]: Notice: accepted new 
client on /var/run/lirc/lircd

Problem(?):
Sep 21 00:10:30 oneplus_PI lircd-0.9.4c[365]: Info: Cannot configure the 
rc device for /dev/lirc0

Sep 21 00:10:30 oneplus_PI lircd-0.9.4c[365]: Notice: accepted new 
client on /var/run/lirc/lircd
Sep 21 00:10:30 oneplus_PI lircd-0.9.4c[365]: Notice: accepted new 
client on /var/run/lirc/lircd

: Bearbeitet durch User
von Klaus R. (klaus2)


Lesenswert?

- in der Anleitung waren einige Befehle falsch geschrieben
- die TSOP Belegung ist dort falsch beschrieben
- rc_code (whatever that is) ist nicht nötig

-> RasPi "lirct".

Klaus.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.