Lirc Initialisierung stoppt FHEM

Begonnen von will67, 12 April 2017, 22:24:09

Vorheriges Thema - Nächstes Thema

will67

Hallo Zusammen,
nach viel Lesen im Forum und Ausprobieren habe ich meinen FHEM Server mit einigen Homatic Komponenten, einem SelbstbauCUL, einer GPIO Relaiskarte auf einem Raspberry 1B am Laufen.
Auch das SIP Modul als Teilnehmer an der Fritzbox funktioniert und ich kann mit DTMF Sequenzen von beliebigen internen Telefonen Aktionen (notifys) triggern.

Jetzt komme ich mit dem LIRC Modul einfach nicht weiter.
Lirc ist installiert und mit
sudo /etc/init.d/lirc stop
mode2 -d /dev/lirc0

sehe ich, dass mein IR Empfänger (TSOP1738, an GPIO17) Daten der Fernbedienung empfängt.


# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS="--uinput"

#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD=false

#Don't start irexec, even if a good config file seems to exist.
#START_IREXEC=false

#Try to load appropriate kernel modules
LOAD_MODULES=true

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="default"
# usually /dev/lirc0 is the correct setting for systems using udev
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""



Dann habe ich die Verknüpfung zu FHEM gebaut.
In /etc/lirc habe ich die Datei "lircd.conf" entsprechend meiner Fernbedienung von http://lirc.sourceforge.net/remotes kopiert. Außerdem habe ich dort eine Datei lircrc angelegt:

begin
        prog = fhem
        button = KEY_POWER
        config = IR_KEY_POWER
end
begin
        prog = fhem
        button = KEY_OK
        config = IR_KEY_OK
end


Das Perl Modul Lirc::Client ist ebenfalls installiert und Reboots müßte ich auch ausreichend gemacht haben.

Wenn ich nun das Lirc Modul in FHEM anspreche indem ich in der Command Line der Weboberfläche:

define Infrarot LIRC /etc/lirc/lircrc

eingebe, stürzt mir FHEM ab.
Im Logfile finde ich nach dem Restart folgende Meldung:

2017.04.12 20:14:28 3: LIRC opening Infrarot device /etc/lirc/lircrc
couldn't connect to Lirc::Client=HASH(0x2352648)->dev: No such file or directory at ./FHEM/00_LIRC.pm line 46.


Im Code vom Perl Lirc::Client habe ich gesehen, dass dort als Device "/dev/lircd" als default verwendet wird. Angelegt ist aber "dev/lirc0". Also hab ich im fhem/00_Lirc.pm den Constructor probeweise auf 
  my $lirc = Lirc::Client->new({
        prog    => 'fhem',
        rcfile  => "$config",
        dev     => "/dev/lirc0",
        debug   => 0,
        fake    => 0,
    });

geändert.

Das ergab dann folgenden Fehler:
2017.04.12 21:47:21 3: LIRC opening Infrarot device /etc/lirc/lircrc
couldn't connect to Lirc::Client=HASH(0x1e6d030)->dev: Permission denied at ./FHEM/00_LIRC.pm line 46.


Daraufhin habe ich den fhem user in die Gruppe "video" aufgenommen, der das lirc Device "/dev/lirc0" zugeordnet ist.

pi@raspberrypi:/opt/fhem/FHEM $ ls -l /dev/lirc*
crw-rw---- 1 root video 244, 0 Apr 12 20:37 /dev/lirc0


Jetzt lautet die Fehlermeldung im Logfile:
2017.04.12 21:52:46 3: LIRC opening Infrarot device /etc/lirc/lircrc
couldn't connect to Lirc::Client=HASH(0x3a4d6f8)->dev: Connection refused at ./FHEM/00_LIRC.pm line 46.


Frage1: Hat jemand einen Tipp für mich, was in der Konfiguration noch fehlt oder was ich falsch mache?

Frage2: Mein eigentliches Ziel ist nicht mit einem Tastendruck eine Aktion auszulösen, sondern ich möchte per IR Fernbedienung z.B. 8-stelligen Codes eingeben können, um mit denen dann unterschiedliche Aktionen auszulösen. Hat jemand sowas schon realisiert oder einen Tipp für mich wie das gehen könnte?

Vielen Dank.
   

Thorsten Pferdekaemper

Hi,
für das erste Problem würde ich Dir empfehlen, fhem mal probehalber unter root laufen zu lassen, um Berechtigungsprobleme auszuschließen. Wenn das nicht hilft, dann solltest Du das ganze in den Forenbereich verschieben, wo LIRC diskutiert wird.
Für die zweite Frage gibt's das Modul sequence. Details dazu stehen z.B. in der Commandref.
Gruß,
   Thorsten
FUIP

will67

#2
Danke für den Tipp mit dem sequence command. Ich habe die Commandref dazu gelesen und denke das ich damit weiter komme - wenn mein Lirc funktioniert.

Leider hat sich mein generelles Lirc Problem noch nicht gelöst.
Ich bin aber einen Schritt weiter, es scheint so zu sein, dass der lircd nicht automatisch beim Booten gestartet wird.

irw liefert nach dem Reboot die gleiche Meldung wie FHEM: connection refused:
pi@raspberrypi:~ $ irw /dev/lirc0
connect: Connection refused


pi@raspberrypi:~ $ sudo ps -x | grep lirc
pi@raspberrypi:~ $

zeigt, dass kein lirc läuft (?)!

Dann wollte ich mit irw testen, ob lirc überhaupt richtig installiert ist und habe lircd von der Commandline gestarted:

pi@raspberrypi:~ $ sudo lircd  -d /dev/lirc0
pi@raspberrypi:~ $ irw
00000000df20dd22 00 KEY_OK LG_AKB33871420_for_TV-LCD_Mxx62D

Resultat: keine Fehlermeldung á la " lircd läuft doch schon", sondern e vóila: der Tastendruck wird erkannt!

Also: irgendwie schafft es meine Installation nicht den Lircd zu starten. Vieleicht hat jemand dazu noch eine spontane Idee?
Ich habe diverse Foren durchsucht aber keiner der Tipps hat bei mir geholfen.

Btw: evtl. kann man FHEM noch etwas robuster machen, bei mir stürzt es ab, wenn ich Lirc verwenden will, der deamon aber nicht läuft. Eine Fehlermeldung würde doch reichen...


Update: nachdem ich jetzt in die Datei /etc/init.d/fhem eine Zeile zum Starten des lircd eingwbaut habe, kann ich nach dem Reboot mit irw die Fernbedienungstasten erkennen.
Die FHEM Weboberfläche stürzt aber weiterhin ab, wenn ich
define Infrarot LIRC /etc/lirc/lircrc
in die FHEM web commandline eingebe.
Der Fehler im Logfile:
2017.04.14 13:59:05 3: LIRC opening Infrarot device /etc/lirc/lircrc
couldn't connect to Lirc::Client=HASH(0x23aefb8)->dev: Connection refused at ./FHEM/00_LIRC.pm line 46.

bleibt.


Update 2: kann es sein, dass sich das FHEM LIRC Modul mit einem IR Empfänger an GPIO 17 nicht mit dem Relaismodul verträgt, dass auf GPIO 22 & 23 zugreift? Das Relaismodul lässt sich problemlos schalten.



Thorsten Pferdekaemper

Hi,
wie schon gesagt: Am besten verschiebst Du das mal in den richtigen Forenbereich.
Gruß,
   Thorsten
FUIP

Wernieman

Ich möchte Dir einen anderen Tipp/Empfehlung geben. Nach diversen rumprobieren mit lirc und Fhem bin ich einen andweren Weg gegangen.

Ich habe lirc und irexec verwendet. Wenn jetzt ein Button gedrückt wird, startet irexec ein kleines Script, was den Tastendruck an Fhem meldet.

z.B.
begin
        prog = fhem
        button = KEY_POWER
        config = IR_KEY_POWER
        config = /home/irexec/schalte-fhem.sh IR_KEY_POWER on
end


Das Script ist relativ einfach:
cat /home/irexec/schalte-fhem.sh
#!/bin/bash
# Programmdefinitionen
nc="/bin/nc"
echo="/bin/echo"
log="/var/log/fhem/schalte_fhem"
PW="Passwort"
Server="FHEM-Server"

if [ $# -lt 2 ];
then
  echo "Zuwenig Parameter!"
  echo "1. Was"
  echo "2. Wie (on,off)"
  exit 1
fi

# Erste Zeile ohne Passwort
#$echo -en "set ${1} ${2}\nquit\n" | $nc -w 5 ${Server} 7072 >/dev/null
$echo -en "${PW}\nset ${1} ${2}\nquit\n" | $nc -w 5 ${Server} 7072 >/dev/null

error=$?
if [ "$error" -ne 0 ]
then
  echo "`date` : Fehler $error beim Aufruf \"$0 $@\"" >>$log
  exit 1
fi


Hat auch den Vorteil, das das Gesammtsystem schneller reagiert als mit direktem lirc-Verarbeitung.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

will67

Danke für die Hinweise. "Sequence" und "irexec" werde ich verwenden.
Mein Problem, dass der LIRCD nicht automatisch startet, lag wohl doch an einer korrupten /etc/lirc/lircd.conf.
Mit den Ausgaben von
sudo journalctl  | grep lirc bin ich dem Problem auf die Spur gekommen. Lircd wurde aufgrund der korrupten conf Datei gleich wieder beendet.

Jetzt startet lirc mit jedem Reboot und bleibt auch aktiv und irw erkennt auch meine Tasten:

pi@raspberrypi:~ $ irw
00000000df20dd22 00 KEY_OK LG_AKB33871420_for_TV-LCD_Mxx62D


Man tastet sich halt langsam an die Linuxbasics ran...