???? irexec wird durch "lirc" versorgt ... kannst Du mir bitte Deine Config von lircd und irexec zukommen lassen?
Die Lircd:
[begin remote
name /home/pi/lircd.conf
bits 13
flags RC5|CONST_LENGTH
eps 30
aeps 100
one 963 814
zero 963 814
plead 987
gap 113806
min_repeat 2
# suppress_repeat 2
# uncomment to suppress unwanted repeats
toggle_bit_mask 0x800
begin codes
key_1 0x1141
key_2 0x1142
key_3 0x1143
key_4 0x1144
key_5 0x1145
key_6 0x1146
key_7 0x1147
key_8 0x1148
key_9 0x1149
key_0 0x1140
key_clear 0x1171
]
wo finde ich die conf von irexec?
Und wenn ich Dichr ciht verstanden habe, funktioniert bei Dir auf einem anderen System lirc/irexec??
Ja, auf einen anderen Raspi funktioniert es einwandfee - als GUI nutze ich Pilight.
Und wie gesagt wenn ich irexec "von Hand starte" läuft es auch (x.sh uns GPIO,s)
auch sehe ich mit irw die Pulse. Ich kann den lirc fehlerfrei starten und stoppen.
( Starting lirc (via systemctl): lirc.service) Ich bekomme ihn nicht im Hintergrund zum laufen - was ganz klar an meiner Unwissenheit liegt!! Bin halt ein Anfänger und eher auf der Hardwareseite Zuhause.
Lt. "HTOP" laüft er. Kann es an die Rechteverteilung liegen?
1. Bitte verwende demnächst die CODE-Tags (das # im Editor) zum posten von Codes. Macht es etwas übersichtlicher
2. Könntest Du uns den Inhalt folgender Datei geben?
cat /etc/lirc/lircrc
3. Du sprichst von GUI? Was hast Du für ein System installiert?
begin
button = key_1
prog = irexec
config = sudo gpio mode 2 out && gpio write 2 0
toggle_reset
config = sudo gpio write 2 1
end
begin
button = key_2
prog = irexec
config = sudo gpio mode 3 out && gpio write 3 0
end
begin
button = key_3
prog = irexec
config = sudo gpio mode 6 out && gpio write 6 0
end
begin
button = key_4
prog = irexec
config = sudo gpio mode 7 out && gpio write 7 0
end
begin
button = key_9
prog = irexec
config = sudo gpio mode 4 out && gpio write 4 0
end
begin
button = key_clear
prog = irexec
config = sudo gpio mode 5 out && gpio write 5 0
end
begin
button = key_play
prog = irexec
config = sudo /home/pi/raspberry-remote/scripte/./woall_on.sh
end
begin
button = key_pause
prog = irexec
config = sudo /home/pi/raspberry-remote/scripte/./woall_off.sh
end
begin
button = key_fastforward
prog = irexec
config = sudo /home/pi/raspberry-remote/scripte/putzlicht_on.sh
end
begin
button = key_record
prog = irexec
config = sudo /home/pi/raspberry-remote/scripte/putzlicht_off.sh
end
begin
button = key_pvr
prog = irexec
config = sudo /home/pi/raspberry-remote/scripte/nacht.sh
end
Zur Frage 3: Auf dem Raspi wo LIRC funktioniert ist Jessie und Pilight installiert. Läuft seit 3 Jahren ohne update und ohne Probleme.
Auf dem Raspi (3) mit Fhem (auch Jessie ,aber aktuell) habe die Probleme. Auch der Befehl "toggle_reset" unter key_1 scheint nicht erlaubt zu sein - mit ihm stürzt Fhem ab. Aber auch ohne gehts nicht.
Nur mal als Vergleich meine:
begin
remote = TT
button = vol-
prog = irexec
repeat = 1
config = /opt/fhem/schalte-fhem.sh myMPD volumeDown
end
remote brauche ich, da ich mehr als eine Fernbedienung habe. "toggle_reset" habe ich noch nie verwendet.
Das Script ist total Einfach (schon mehrfach erwähnt)
#!/bin/bash
# Programme
nc="/bin/nc"
log="/var/log/fhem/schalte_fhem"
debug=0
server=<FHEM-Server>
if [ $# -lt 2 ];
then
echo "Zuwenig Parameter!"
echo "1. Was"
echo "2. Wie (on,off)"
exit 1
fi
if [ "$debug" -ne 0 ]
then
echo "`date` : Debug: Schalte Fhem mit \"$0 $@\"" >>$log
fi
#fhem "set $1 $2"
echo -en "set ${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
Probiere es mal bitte
mal ne doofe Frage: muss Lirc nicht erst ohne fhen funktionieren bevor ich es an fhem übergebe? Bei mir schaltet aber keines meiner scripte.
Das direkte schalten der GPIO,s via FB-Geber funktioniert. Die Scripte alleine für sich via Terminal auch. Also die Scripte für sich funktionieren. Ich kann sie nur nicht via FB schalten. Es sei denn ich starte Irexec im Terminal dierekt also irexec -> enter. Dann läut alles einwandfrei. Nur nicht im Hintergrund - also keine weitere Bedienung des RPI möglich.
ach sooooo ... dann hast Du den Deamon lircd laufen, aber nicht den irexec.
Zeig mir mal Deine:
Zitat/etc/init.d/lirc
Und .. wie sieht die erste Zeile der lircrc aus?
head -n1 /etc/lirc/lircrc
bzw. mal als Test:
grep UNCONFIGURED /etc/lirc/lircrc
Ja, so stellt sich das für mich auch da - Ich habe das wohl umständlich beschrieben sorry :-[
#! /bin/sh
### BEGIN INIT INFO
# Provides: lirc
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts LIRC daemon.
# Description: LIRC is used to control different
# infrared receivers and transceivers.
### END INIT INFO
load_modules ()
{
MODULES_MISSING=false
log_daemon_msg "Loading LIRC modules"
for mod in $*; do
if [ $mod = "udev" ]; then
log_end_msg 0
log_success_msg "Restarted via udev, don't reload modules"
break
else
modprobe $mod 2> /dev/null || MODULES_MISSING=true
fi
done
log_end_msg $?
if $MODULES_MISSING; then
log_failure_msg "Unable to load LIRC kernel modules. Verify your"
log_failure_msg "selected kernel modules in /etc/lirc/hardware.conf"
START_LIRCMD=false
START_LIRCD=false
fi
}
build_args ()
{
ARGS="$*"
## Try to find an lirc device.
if [ -z "$DEVICE" ]; then
if [ -c $dev ]; then
DEVICE="$dev"
break
fi
fi
if [ -n "$DEVICE" ] && [ "$DEVICE" != "none" ]; then
ARGS="--device=$DEVICE $ARGS"
fi
if [ -n "$DRIVER" ] && [ "$DRIVER" != "none" ]; then
ARGS="--driver=$DRIVER $ARGS"
fi
echo $ARGS
}
. /lib/lsb/init-functions
test -f /usr/sbin/lircd || exit 0
test -f /usr/sbin/lircmd || exit 0
START_LIRCMD=true
START_LIRCD=true
START_IREXEC=true
if [ -f /etc/lirc/hardware.conf ];then
. /etc/lirc/hardware.conf
fi
if [ ! -f /etc/lirc/lircd.conf ] || grep -q "^#UNCONFIGURED" /etc/lirc/lircd.conf; then
if [ "$1" = "start" ]; then
log_success_msg "No valid /etc/lirc/lircd.conf has been found."
log_success_msg "Remote control support has been disabled."
log_success_msg "Reconfigure LIRC or manually replace /etc/lirc/lircd.conf to enable."
fi
START_LIRCD=false
START_LIRCMD=false
START_IREXEC=false
fi
if [ ! -f /etc/lirc/lircmd.conf ] || grep -q "^#UNCONFIGURED" /etc/lirc/lircmd.conf; then
START_LIRCMD=false
fi
if [ ! -f /etc/lirc/lircrc ] || grep -q "^#UNCONFIGURED" /etc/lirc/lircrc; then
START_IREXEC=false
fi
case "$1" in
start)
[ -d "/var/run/lirc" ] || mkdir -p "/var/run/lirc"
if [ "$LOAD_MODULES" = "true" ] && [ "$START_LIRCD" = "true" ]; then
load_modules $2 $MODULES
fi
if [ "$START_LIRCD" = "true" ]; then
log_daemon_msg "Starting remote control daemon(s) : LIRC "
LIRCD_ARGS=`build_args $LIRCD_ARGS`
if [ ! -z "$LIRCD_ARGS" ]; then
start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/lircd -- $LIRCD_ARGS < /dev/null
# retain compatibility with old clients
ln -fs ../var/run/lirc/lircd /dev/lircd
log_end_msg $?
else
log_end_msg 1
fi
fi
if [ "$START_LIRCMD" = "true" ]; then
log_daemon_msg "Starting remote control mouse daemon : LIRCMD "
start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/lircmd < /dev/null
log_end_msg $?
fi
if [ "$START_IREXEC" = "true" ]; then
log_daemon_msg "Starting execution daemon: irexec"
start-stop-daemon --start --quiet --oknodo --exec /usr/bin/irexec -- -d /etc/lirc/lircrc < /dev/null
log_end_msg $?
fi
;;
stop)
if [ "$START_IREXEC" = "true" ]; then
log_daemon_msg "Stopping execution daemon: irexec"
start-stop-daemon --stop --quiet --exec /usr/bin/irexec
log_end_msg $?
fi
if [ "$START_LIRCMD" = "true" ]; then
log_daemon_msg "Stopping remote control mouse daemon: LIRCMD"
start-stop-daemon --stop --quiet --exec /usr/sbin/lircmd
log_end_msg $?
fi
if [ "$START_LIRCD" = "true" ]; then
log_daemon_msg "Stopping remote control daemon(s): LIRC"
start-stop-daemon --stop --quiet --exec /usr/sbin/lircd
log_end_msg $?
fi
;;
reload|force-reload)
if [ "$START_IREXEC" = "true" ]; then
start-stop-daemon --stop --quiet --signal 1 --exec /usr/bin/irexec
fi
if [ "$START_LIRCD" = "true" ]; then
start-stop-daemon --stop --quiet --signal 1 --exec /usr/sbin/lircd
fi
if [ "$START_LIRCMD" = "true" ]; then
start-stop-daemon --stop --quiet --signal 1 --exec /usr/sbin/lircmd
fi
;;
restart)
$0 stop
sleep 1
#passes parameter $2 which is possibly our udev paramater
$0 start $2
;;
*)
echo "Usage: /etc/init.d/lircd {start|stop|reload|restart|force-reload}"
exit 1
esac
exit 0
die erste Zeile beginnt mit begin
begin
button = key_1
prog = irexec
config = sudo gpio mode 2 out && gpio write 2 0
end
Deine Testzeile "grep un ..." bewirkt nichts
Habe jetzt 3 Aufgaben für Dich:
Die einfache:
1. Einfach
Läuft denn irexec?
ps aux | grep [i]rexec
2. Komplizierter:
Mach bitte mail 2 Fenster auf. Bitte bei beiden "root" werden durch
sudo -i
In Einem bitte mal eingeben:
tail -f /var/log/syslog
In dem 2. Bitte:
/etc/init.d/lirc stop
/etc/init.d/lirc stop
Nun sollte im 1. Fenster nach dem 2. Befehl des 2. Fenster so etwas stehen:
Dec 13 20:53:08 mimi systemd[1]: Starting LSB: Starts LIRC daemon....
Dec 13 20:53:08 mimi lirc[13898]: * Loading LIRC modules
Dec 13 20:53:08 mimi lirc[13898]: ...done.
Dec 13 20:53:08 mimi lirc[13898]: * Starting remote control daemon(s) :
Dec 13 20:53:08 mimi lirc[13898]: ...done.
Dec 13 20:53:08 mimi lircd-0.9.0[13913]: lircd(default) ready, using /run/lirc/lircd
Dec 13 20:53:08 mimi lirc[13898]: * Starting execution daemon: irexec
Dec 13 20:53:08 mimi lircd-0.9.0[13913]: accepted new client on /run/lirc/lircd
Dec 13 20:53:08 mimi lirc[13898]: ...done.
Dec 13 20:53:08 mimi systemd[1]: Started LSB: Starts LIRC daemon..
Naütlrich mit einem anderen Rechnernamen als "mimi". Wichtig ist hier die Zeile:
* Starting execution daemon: irexec
Erscheint Die bei Dir?
3. Läuft denn jetzt irexec (siehe 1.)
Zu 1: Nein, leider nicht
root 698 0.0 0.0 1888 92 ? Ss 21:55 0:00 /usr/bin/irexe -d /etc/lirc/lircrc
pi 817 0.0 0.0 1888 92 ? Ss 21:55 0:00 /usr/bin/irexe -d
pi 942 0.0 0.0 1888 92 ? Ss 21:55 0:00 /usr/bin/irexe -d
pi 1156 0.0 0.0 1888 92 ? Ss 21:55 0:00 /usr/bin/irexe -d
pi 1174 0.0 0.0 1888 92 ? Ss 21:55 0:00 /usr/bin/irexe -d
Zu 2: ich denke mal Du meist : /etc/init.d/lirc stop & /etc/init.d/lirc start und nicht stop
Dec 13 21:55:23 raspberrypi systemd[1]: Time has been changed
Dec 13 21:55:23 raspberrypi dhcpcd[530]: wlan0: no IPv6 Routers available
Dec 13 21:55:42 raspberrypi ntpd_intres[757]: parent died before we finished, exiting
Dec 13 21:55:44 raspberrypi systemd[1]: Starting Session c3 of user pi.
Dec 13 21:55:44 raspberrypi systemd[1]: Started Session c3 of user pi.
Dec 13 21:55:45 raspberrypi lircd-0.9.0-pre1[685]: accepted new client on /var/run/lir c/lircd
Dec 13 21:55:49 raspberrypi systemd[1]: Starting Session c4 of user pi.
Dec 13 21:55:49 raspberrypi systemd[1]: Started Session c4 of user pi.
Dec 13 21:55:50 raspberrypi lircd-0.9.0-pre1[685]: accepted new client on /var/run/lir c/lircd
Dec 13 21:57:17 raspberrypi rsyslogd-2007: action 'action 17' suspended, next retry is Wed Dec 13 21:57:47 2017 [try http://www.rsyslog.com/e/2007 ]
Dec 13 21:58:37 raspberrypi systemd[1]: Stopping LSB: Starts LIRC daemon....
Dec 13 21:58:37 raspberrypi rsyslogd-2007: action 'action 17' suspended, next retry is Wed Dec 13 21:59:07 2017 [try http://www.rsyslog.com/e/2007 ]
Dec 13 21:58:37 raspberrypi lircd-0.9.0-pre1[685]: removed client
Dec 13 21:58:37 raspberrypi lircd-0.9.0-pre1[685]: removed client
Dec 13 21:58:37 raspberrypi lircd-0.9.0-pre1[685]: removed client
Dec 13 21:58:37 raspberrypi lircd-0.9.0-pre1[685]: removed client
Dec 13 21:58:37 raspberrypi lircd-0.9.0-pre1[685]: removed client
Dec 13 21:58:37 raspberrypi lirc[1207]: Stopping execution daemon: irexec:.
Dec 13 21:58:37 raspberrypi lircd-0.9.0-pre1[685]: caught signal
Dec 13 21:58:37 raspberrypi lirc[1207]: Stopping remote control daemon(s): LIRC:.
Dec 13 21:58:37 raspberrypi systemd[1]: Stopped LSB: Starts LIRC daemon..
Dec 13 21:58:56 raspberrypi systemd[1]: Starting LSB: Starts LIRC daemon....
Dec 13 21:58:56 raspberrypi lirc[1244]: Loading LIRC modules:.
Dec 13 21:58:56 raspberrypi kernel: [ 233.285835] input: lircd as /devices/virtual/in put/input1
Dec 13 21:58:56 raspberrypi lircd-0.9.0-pre1[1254]: lircd(default) ready, using /var/r un/lirc/lircd
Dec 13 21:58:56 raspberrypi lirc[1244]: Starting remote control daemon(s) : LIRC :.
Dec 13 21:58:56 raspberrypi lircd-0.9.0-pre1[1254]: accepted new client on /var/run/li rc/lircd
[color=red]Dec 13 21:58:56 raspberrypi lirc[1244]: Starting execution daemon: irexec:.
Dec 13 21:58:56 raspberrypi systemd[1]: Started LSB: Starts LIRC daemon..
Würde ja passen
Nach erneuten Eingabe von : ps aux | grep rexec erscheint diese Meldung : root 1259 0.0 0.1 1888 1040 ? Ss 21:58 0:00 /usr/bin/irexec -d /etc/lirc/lircrc
Zu3 :irexec läuft aber leider immer noch nicht.
Also eigentlich:
Dec 13 21:58:56 raspberrypi lirc[1244]: Starting execution daemon: irexec:
Und dem folgenden:
root 1259 0.0 0.1 1888 1040 ? Ss 21:58 0:00 /usr/bin/irexec -d /etc/lirc/lircrc
Sollte er gestartet sein.
Sieht bei mir nicht anders aus:
irexec 847 0.0 0.0 6440 108 ? Ss 08:10 0:00 /usr/bin/irexec -d /etc/lirc/lircrc
Was mich wundert, Du hast zuerst 5? irexec laufen? Wirklich so viele??
Achte bitte mal erstmal darauf, das Du nur 1! laufen hast. Ich verstehe aber die Aussage zu 3 nicht. Das Programm an sich läuft doch laut Ende der Aussage zu 2.? Oder ist Deine Aussage so nicht richtig? Es geht mir (momentan) noch nicht ums funktionieren. Das ist der nächste Stepp.
Könntest Du mir bitte mal die komplette /etc/lirc/lircrc geben? Wenn zu viel Privates, gerne auch per PM.
Hallo - ich bewundere Deine Geduld mit mir!
Hier meine Lircrc
root@raspberrypi:/etc/lirc# cat lircrc
begin
button = key_1
prog = irexec
config = sudo gpio mode 2 out && gpio write 2 0
end
begin
button = key_2
prog = irexec
config = sudo gpio mode 3 out && gpio write 3 0
end
begin
button = key_3
prog = irexec
config = sudo gpio mode 6 out && gpio write 6 0
end
begin
button = key_4
prog = irexec
config = sudo gpio mode 7 out && gpio write 7 0
end
begin
button = key_9
prog = irexec
config = sudo gpio mode 4 out && gpio write 4 0
end
begin
button = key_clear
prog = irexec
config = sudo gpio mode 5 out && gpio write 5 0
end
begin
button = key_play
prog = irexec
config = sudo /home/pi/raspberry-remote/scripte/./woall_on.sh
end
begin
button = key_pause
prog = irexec
config = sudo /home/pi/raspberry-remote/scripte/./woall_off.sh
end
begin
button = key_fastforward
prog = irexec
config = sudo /home/pi/raspberry-remote/scripte/putzlicht_on.sh
end
begin
button = key_record
prog = irexec
config = sudo /home/pi/raspberry-remote/scripte/putzlicht_off.sh
end
begin
button = key_pvr
prog = irexec
config = sudo /home/pi/raspberry-remote/scripte/nacht.sh
end
warum die IREXEC nach dem Start 4 mal läuft weiß ich nicht. Ich starte es auch nicht 4 x über die rc.local ...
ZitatZu3 :irexec läuft aber leider immer noch nicht.
meinte ich es funktioniert noch nicht wie gedacht -da habe ich mich falsch ausgedrückt.
so nun läuft die irexec nur noch einemal
Zitatroot 696 0.0 0.1 1888 1036 ? Ss 19:46 0:00 /usr/bin/irexec -d /etc/lirc/lircrc
es war wohl letztendlich der Eintrag in : ~/.profile
dafü habe ich nun folgende Fehlermeldung
Zitat/etc/lirc $ /etc/init.d/lirc start
[....] Starting lirc (via systemctl): lirc.serviceFailed to start lirc.service: Access denied
failed!
mit root rechte gehts
aber funktionieren tut,s immer noch nicht - keine Funktion der FB
Zitat[ ok ] Starting lirc (via systemctl): lirc.service.
/etc/lirc $ /etc/init.d/lirc start
[....] Starting lirc (via systemctl): lirc.serviceFailed to start lirc.service: Access denied
failed!
Dad knling komisch.
Würde es jetzt mal "sauber" machen und neu installieren (alles als root):
1. Sicherheitscopy:
cp /etc/lirc /etc/lirc.backup
2. Entfernen
apt-get purge lirc
apt-get autoremove
apt-get autoclean
3. Sicherheitshalber update der Sourcen
apt-get update
4. Neuinstallation
apt-get install lirc
Jetzt die Gesicherte Config wieder einfügen, aber auf die Berechtigung achten! Und deshalb nicht per cp, sondern per "überlegen". Du könntet auch schrittweise vorgehen, d.h. erstmal key_1 und dann erst weitergehen ...
P.S. Du hast lirc sudo rechte gegeben? Hast Du sonsto noch Rechte vergeben? Oder es eingetragen?
(Wie Dein erwähntes .profile)
so, ich habe alles deinstalliert und installiert. Die lircrc besteht aus nur 2 Befehlen
pi@raspberrypi:/etc/lirc $ cat lircrc
begin
button = key_fastforward
prog = irexec
config = sudo /home/pi/raspberry-remote/scripte/putzlicht_on.sh
end
begin
button = key_record
prog = irexec
config = sudo /home/pi/raspberry-remote/scripte/putzlicht_off.sh
end
Die Abfrage via pi@raspberrypi:/etc/lirc $ ps aux | grep
rexec sagt das es nun auch nur 1 mal läuft. Hier wird ircxec übrigens rot angezeigt. Hmm?
root 688 0.0 0.0 1888 92 ? Ss 21:12 0:00 /usr/bin/irexec -d /etc/lirc/lircrc
Die FB hat aber immernoch keine Funktion.
Starte ich irexec "von Hand" nochmal -
Zitatpi@raspberrypi:~ $ irexec
kann ich mit der FB korrekt schalten - - das Script bzw. der Inhalt der LIRCRC und läuft also. Den Inhalt der LIRC habe ich mit chmod +x volle Rechte, so glaube ich, gegeben.
?? Du must es per Hand starten? Wie ist er Befehl?
Das es rot ist, liegt am grep. Der markiert alle "Suchwörter" in der Konsole. Das Du im "ps aux" nach irexec greps, zeigt er es ...
Edit:
Jetzt bewege ich mich gerade auf dünnen Eis, da ich aktuell nur einen ubuntu-Server zum angucken habe. Kannst Du mir bitte mal geben:
cat /etc/lirc/hardware.conf
hast Du eigentlich eine /etc/lirc/lircrc oder eine /etc/lirc/.lircrc?
Man beachte den "."
Per Hand - pi@raspberrypi:~ $ irexec -> Enter zum starten und Strg & c zum stoppen.
# /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=""
Lircrc ohne Punkt, also nicht versteckt.
Ich verstehe es nicht ... kann es mir nur vorstellen, das der irexec, aus welchen gründen auch immer, bei Dir zu früh gestartet wird und sich deshalb nicht mit dem lircd verbündet. Sorry, aber Fehlersuche mit einem bei mir (momentan) nicht reproduzierbarem Problem ist nicht einfach.
Sehe momentan 2 Lösungen:
1. Du nimmst irexec aus dem start vom lircd raus und definierst ein eigenes "Startscript".
2. Wir machen eine debugsession, d.h. Du könnest bei Dir den ssh port öffnen und wir gucken zusammen über eine screen session
Debugsession hört sich gut an - da Lehrne ich ja mal was - wann hast Du Lust? Und Schlimme an der Sache dass garantiert ich irgendwo Mist gebaut habe!
Zitatwann hast Du Lust?
Das ist die Falsche Frage, sie sollte lauten:
Zitatwann hast Du Zeit?
Könntest Du zwischen 8:00 und 15:00?
Ansonsten wird es erst "im neuen Jahr" ...
Da habe ich leider keine Zeit, Schade. Bin aber leider beruflich unterwegs. - Ich denke wir verschieben es aus neue Jahr. Aber dennoch Danke für Deine Mühe.
Naja ... kann beruflich mal eine Pause einlegen .. nur privat bin ich aktuell "eingespannt". Könntest Du auch kurzfristig?
Eventuell könnte es diese Woche ab 18:00 klappen, nur weiß ich es nur c.a. 6 Stunde vorher ...
Sorry, das ich mich jetzt erst melde. Bin auch erst seit heute wider zu Hause. Muste am Wochenende auf meinem RPI ein Image zurückspielen. VERDADDELT! Habe den Ursprung wieder hergestellt. Auuußer IREXEC läuft wieder 3 mal. Und ich finde nicht wo er gestartet wird.
Ich bin Abends erst um ca 19:00 zu Hause. Da hätte ich Morgen und Freitag/Samstag Zeit.
oh, es hat sich gerade etwas verschoben leider kann ich nur noch Morgen.
Und bei mir ... ich bin jetzt wirklich für dieses Jahr "ausgebucht" .. sorry
Wird also er in "1 Jahr" *griiins*
Was mir heute mal so spontan eingefallen ist: Wer darf Deine Scripte eigentlich lesen/starten?
Wenn ich mir so angucke: /home/pi/raspberry-remote/scripte/putzlicht_off.sh
Liegt unter dem User PI und irexec läuft unter einem anderen User! Dann ist so klar, warum es läuft, wenn Du irexec manuell startest, wahrscheinlich User PI?
Bitte mal ordentlich machen ...
Ja, ich starte Irexec als "pi". Was meinst mit ordentlich machen?
Übrigens der "Mehrfachstart" von irexec hatte sich wieder durch die versteckte Datai ".profile" eingeschlichen.
irexec start im Normallfall eben NICHT unter dem User pi. Kannst ja mal gucken:
ps aux | grep [i]rexec
Du hast Recht irexec läuft als root
root 717 0.0 0.1 1888 1028 ? Ss 19:54 0:00 /usr/bin/irexec -d /etc/lirc/lircrc
????
ps aux | grep irexec
irexec 757 0.0 0.0 6440 1384 ? Ss Dez19 0:00 /usr/bin/irexec -d /etc/lirc/lircrc
Hast Du einen User irexec?
Sorry habe hier keinen Pi mit lirc, kann also dort nicht gucken, Obiges ist von einem Ubuntu, aber unter debian ist es auch so.
Einen User irexec habe ich nicht.
Bei der Eingabe von :"ps aux | grep irexec" erhalte ich das:
root 717 0.0 0.1 1888 1028 ? Ss Dez23 0:00 /usr/bin/irexec -d /etc/lirc/lircrc
pi 4182 0.0 0.1 4296 1848 pts/0 S+ 14:57 0:00 grep --color=auto irexec
Bei meinem 2. Raspi, der wie gesagt schon seit Jahre läuft, sie es übrigens ähnlich aus.
siehe hier:root 529 0.0 0.1 1892 1024 ? Ss Dez09 0:00 /usr/bin/irexec -d /etc/lirc/lircrc
pi 29574 0.0 0.1 4300 1840 pts/0 S+ 14:54 0:00 grep --color=auto irexec
Kein Problem .. dann läuft bei Dir der irexec unter root ... hast Du Debian oder Raspian "drauf"?
Könnnte auch der Standart bei der ARM-Distri sein. Wie schon mal geschrieben, kenne mich mit lirc/irexec aus, aber nicht unter dem raspi.
Was mir mal als Debuglösung eingefallen ist: Könntest Du Dir ein Script schreiben, was einfach nur mal ein Logfile schreibt?
ala:
#!/bin/bash
date >>/var/log/irexec.log
Wenn Du dieses mit irexec/einem Tastendruck verbindest, funktioniert es dann?
z.B. in einem Fenster:
tail -f /var/log/irexec.log
Wenn Du jetzt "die" Taste auf der fernbedienung drückst, müstest Du im Terminal die Uhrzeit sehen. So kannst Du erstmal ohne FHEM testen ...
Ansonsten .. wird erst in der 2. Januarwoche mit einer Debugsession
Habe Heilig Abend vormittags (meine Frau war Einkaufen und ich hatte Zeit) alles Neugemacht.
1. OS Jessie neu aufgesetzt -Image erstellt
2. WiringPi uns lirc installiert -> Fernbedienung geht
3. Fhem installiert -> FB geht
4. Fhem Backup installiert - > FB geht - aber einige scripte (.sh) laufen nicht
5. Fhem erlaubt Sudo zu nutzen wie hier beschrieben:
1. /etc/passwd
sudo nano /etc/passwd
Hier wird folgendes geändert:
fhem:x:999:20::/opt/fhem:/bin/none
in:
fhem:x:999:20::/opt/fhem:/bin/bash
Mit "Strg+O" speichern und mit "Strg+X" schließen.
2. /etc/sudoers
sudo nano /etc/sudoers
Hier wird folgendes ergänzt (irgendwo in der Datei):
Defaults requiretty
Defaults:%dialout !requiretty
Defaults:fhem !requiretty
fhem ALL=(ALL) NOPASSWD: ALL
Ergebniss -> scripte laufen FB geht nicht mehr.
"Sudoerlaubniss" rückgängig gemacht -> FB läuft - scripte nicht.
Sobald ich also Fhem die Erlaubniss erteile sudo nutzen zu dürfen funktioniert die Fernbedienung nicht mehr.
1. solche Zeilen verwendet man nicht:
fhem ALL=(ALL) NOPASSWD: ALL
Damit machst Du fhem praktisch zum root ... mit allen negativen Folgeerscheinungen.
Anstatt "ALL" schreibt man expliziete Programme rein.
Um es jetzt mal richtig zu machen, wofür brauchst Du sudo?
P.S. Leider findet man immer wieder diese Zeile im WEB .. gehört in die Schublade "gefährliches Halbwissen". Leider auch hier im Forum schon mehr als ein mal gefunden ... :o(
hmm, bei gefährlichem Halbwissen bin ich ziemlich weit Vorne dabei.
Sorry. :-[ Ich habe diese Zeilen natürlich auch aus dem Netz.
Aber ohne laufen ein Teil meiner Scripte nicht. Will sagen, ich kann diese via dummy/notify nicht schalten. Mit diesen Zeilen schon - aber die FB funktioniert nicht. Ohne diese Zeilen funktioniert meine FB. Habe ich hier ein "Rechteproblem"?
Welche Scripte funktionieren nicht?
Ich glaube, Du hast ein "globales" Rechteproblem ...
scripte wie zb.
{system "/home/pi/raspberry-remote/scripte/putzlicht_on.sh&"}
was heißt globales Problem?
Das Du nicht genau weißt, welche Rechte FHEM braucht/nicht braucht.
hast Du irgendwo ein "chown/chmod" ausgeführt?
Diie Frage ist eher, was pasiert in Deinem Script /home/pi/raspberry-remote/scripte/putzlicht_on.sh?
Also welche "Befehle" werden ausgeführt? Da kann man bestimmt viel feiner die rechte dosieren....
Edit:
Bin beruflich Linux-Systemadministrator. Da hat man mit der Feingraduierung von Systemrechten häufiger zu tuhen. Auch das viele Anleitung im "Hardwarebereich" pauschal erstmal zu viele Rechte verteilen ist auch schon heufig aufgefallen ...
ich habe z.b. via :
sudo chmod +x /home/pi/raspberry-remote/scripte/putzlicht_on.sh&
Rechte vergeben. Das habe ich mit allen Scripten im Pfad /home/pi/raspberry-remote/scripte/ xxx.sh&
so gemacht.
oh, Moment habe mich versehen nicht: chmod +x home/pi/raspberry-remote/scripte/putzlicht_on.sh&
sondern: chmod +x raspberry-remote/scripte/putzlicht_on.sh&
chmod +x raspberry-remote/scripte/putzlicht_on.sh&
Warum hängst Du ein & ans Ende????
Was mich interessiert, was steht IN Deinen Scripten .. gerne auch per PN oder Mail wenn Du Angst um den Inhalt hast ...
hast ne PN - aber nicht aus Angst. Aber so "müllt" sich der chat nicht so voll.
Naja .. mittlerweile wird es hier ein "privater Chat", deshalb hier eine Anmerkung:
sudo gpio mode 2 out
Der User fhem muß die gpio-Ports nutzen dürfen. Dazu muß er "nur" in der Gruppe gpio sein. Dann braucht er auch das "sudo" nicht mehr.
Dafür (Zitat):
sudo usermod -a -G gpio <Username>
Allerdings würde ich persöhnlich nicht über ein Programm gpio gehen, sondern direkt in die Relevanten Teile schreiben, wie z.B.
echo "23" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio23/direction
P.S. Du hast doch ein aktuelles Debian?
Zitatraspi1:~# cat /etc/debian_version
9.3
meine DEBIAN Vers. 8.0 Jessie - trotz update /upgrade.
Warum sagst Du der user fhem muss "nur" in der Gruppe GPIO sein? Hast Du da Sicherheitsbedenken? - Naja und anlegen müsste man den user fhem halt noch -oder. Ohne sudo wird es alles überschaubarer - so glaube ich.
BTW: hatte ich Dir eigentlich eine 2. PM gesendet - bin mir nicht sicher ob die durchgegangen ist - war vom Handy.
Egal,war das:
Also ich habe nun die 3 "requiretty" Einträge deaktiviert. Fhem hat leider immernoch root Rechte aber ich kann aus Fhem scripte schalten und die FB funktioniert auch!!
sudo nano /etc/sudoers:
pi ALL=(ALL) NOPASSWD: ALL
#Defaults requiretty
#Defaults:%dialout !requiretty
#Defaults:fhem !requiretty
fhem ALL=(ALL) NOPASSWD: ALL
Aber was ich hier wirklich gemacht habe kann ich nicht beurteilen!! Das war "tray and error" und garantiert Mist. Vielleicht hast Du da eine gescheite Lösung.
Sonst macht er ja eigentlich jetzt genau was er soll was er soll.
Wenn ich jetzt noch mit der IR- FB, ich denke via dummy und 4 notify meine 4 433 MHZ- Aktoren geschaltet bekomme steht schonmal ein Gerüst. Das ist aber ein zweites Kapitel.
Würde Dir empfehlen:
Per IR-Fernbediehnung einen Dummy schalten:
z.B. "set DummyIR pause"
Dann kannst Du per notify auf DummyIR:pause trickern und sachen erleidgen lassen
pause ist natürlich eine passende Taste auf der Fernbedienung. Anstatt dessen kannst Du jeden anderen Namen nehmen.
Das "nur" in "" war etwas ironisch gemeint. Dafür must Du natürlich NICHT einen neuen User anlegen, sondern die rechte vom User fhem erweitern. Siehe mein Posting.
Hi - so ich habe heute Zeit gefunden um ein wenig zu basteln.
ich habe fhem der Gruppe gpio hinzugefügt via:
sudo usermod -a -G gpio fhem
Alles schaltet nun ohne "sudo" (fhem IR-FB / irexec) NUR 3 armselige Scripte
kann fhem nur mit root- Rechte ausführen. Alle Scripte liegen in ein und dem selben Ordnerdrwxr-xr-x 2 pi pi 4096 Dez 30 18:19 .
drwxr-xr-x 6 pi pi 4096 Dez 24 17:32 ..
-rwxrwxrwx 1 pi pi 44 Nov 10 20:29 buereg_ob_off.sh
-rwxrwxrwx 1 pi pi 45 Nov 9 22:16 buereg_ob_on.sh
-rwxrwxrwx 1 pi pi 44 Nov 9 22:05 buereg_un_off.sh
-rwxrwxrwx 1 pi pi 46 Nov 9 21:57 buereg_un_on.sh
-rwxr-xr-x 1 pi pi 45 Nov 10 21:00 lafen_off.sh
-rwxr-xr-x 1 pi pi 45 Nov 10 20:59 lafen_on.sh
-rwxr-xr-x 1 pi pi 321 Nov 21 22:18 nacht_1_on.sh
-rwxrwxrwx 1 pi pi 180 Dez 17 20:47 putzlicht_off.sh
-rwxrwxrwx 1 pi pi 181 Dez 17 20:09 putzlicht_on.sh
-rwxr-xr-x 1 pi pi 46 Nov 7 20:21 receiver_off.sh
-rwxrwxrwx 1 pi pi 48 Nov 7 20:18 receiver_on.sh
-rwxr-xr-x 1 pi pi 45 Nov 10 20:48 stehl_off.sh
-rwxr-xr-x 1 pi pi 45 Nov 10 20:47 stehl_on.sh
-rwxr-xr-x 1 pi pi 50 Nov 10 20:08 TV_off.sh
-rwxr-xr-x 1 pi pi 50 Nov 10 20:07 TV_on.sh
-rwxr-xr-x 1 pi pi 135 Nov 8 21:46 woall_off.sh
-rwxr-xr-x 1 pi pi 138 Nov 8 21:45 woall_on.sh
das sind woall_xx.sh, putzlicht_xx.sh und nacht_1_on.sh. waarum???
Zeig mal den Inhalt
Hi und Sorry dass ich mich erst jetzt melde - ich war die ganze letzte Woche beruflich Unterwegs.
Nach einem heutigen "update und upgrade" kann ich auch die letzten armseligen Scripte, ohne dass Fhem Rootrechte hat, ausführen! Warum das nun plötzlich geht weiß ich nicht (Magic). Werde nun das System mal aufräumen und versuchen einen Dummy/notify via IR zu schalten. Dein Tipp Fhem der Gruppe GPIO hinzuzufügen war wohl der alles entscheidende Tipp! Alle andere Probleme führe ich auf ein von mir schlampig aufgesetztes System zurück.
Danke für Deine Geduld und Deine Mühe!
Das schöne über den irexec-Weg ist, das man das übergeben an FHEM unabhängig testen kann. Wenn das Script Funktioniert, ála:
schalte.sh IR Taste
Kann man dann innerhalb von FHEM per notify auswerten und hat das gewünschte Ergebnis ;o)
Irgendwo habe ich so ein Script schon gepostet ...
soo, habe nun mein System "aufgeräumt" und Dein Script installiert.
Aber ich bekomme keine Echo Ausgabe. Das Script als solches läuft (warum auch nicht).
Wenn ich IREXEC direkt starte bekomme ich die Echoausgabe via FB.
Und mit mit: "home/pi/raspberry-remote/scripte/schalte-fhem.sh" auch.
Sieht wieder nach einem Rechteproblem aus -oder?
Deim Script:
#!/bin/bash
# Programme
nc="/bin/nc"
log="/var/log/fhem/schalte_fhem"
debug=0
server=/opt/fhem/FHEM
if [ $# -lt 2 ];
then
echo "Zuwenig Parameter!"
echo "1. KEY_8"
echo "2. Wie (on,off)"
exit 1
fi
if [ "$debug" -ne 0 ]
then
echo "`date` : Debug: Schalte Fhem mit \"$0 $@\"" >>$log
fi
#fhem "set $1 $2"
echo -en "set ${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
Die Echo Ausgabe sollst Du nur bekommen, wenn Du zu wenig Parameter eingibst.
Oder meinst Du das Debug? Dann setze mal in den Anfang "Debug=1"
Ich glaube ich habe 2 Fehler:
1. ich kann das Script nicht via FB starten. Oder besser es startet nur wenn ich irexec vorher via Befehlszeile ( Irexec -> Enter) starte. Oder ich starte es "per Hand"
2. Wenn es startet Echo ausgabe "zu wenig Parameter. ...
wo muss ich denn mit dem "Debug=1" hin ?
1. Gib mir mal die Berechtigung des Scriptes.
ls -lha
2. Bezüglich Debug=1
Lies Dir bitte mal das Script durch
Und normalerweise wird es aufgerufen mit:
./script.sh was wohin
./script Lampe1 on
Zu1) -rwxr-xr-x 1 pi pi 499 Jan 16 19:17 /home/pi/raspberry-remote/scripte/schalte-fhem.sh
Zu2) ahh - Zeile 6 im schalte-fhem.sh von debug=0 auf =1 ändern.
hier die Ausgabe wenn ich es per Hand starte:
Use of uninitialized value $ARGV[0] in string eq at /opt/fhem/fhem.pl line 419.
Usage:
as server: fhem configfile
as client: fhem [host:]port cmd cmd cmd...
Zuwenig Parameter!
1. KEY_8
2. Wie (on,off)
und hier der in halt des Scripts:
#!/bin/bash
# Programme
nc="/bin/nc"
log="/var/log/fhem/schalte_fhem"
debug=1
server= /opt/fhem/fhem.pl
if [ $# -lt 2 ];
then
echo "Zuwenig Parameter!"
echo "1. KEY_8"
echo "2. Wie (on,off)"
exit 1
fi
if [ "$debug" -ne 0 ]
then
echo "`date` : Debug: Schalte Fhem mit \"$0 $@\"" >>$log
fi
#fhem "set $1 $2"
echo -en "set ${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
ist eigentlich meine Angabe des Servers in Zeile 7 korrekt?
server= /opt/fhem/fhem.pl
Ich glaube, da hast DU mich falsch verstanden ... mit "server" ist die Serveradresse gemeint. Nicht das "Server-Programm". In der Regel kommt dort "localhost" rein, es sei denn, Du sprichst eine andere Maschine an.
Die Datenübertragung an Fhem läuft mit:
echo -en "set ${1} ${2}\nquit\n" | $nc -w 5 $server 7072 >/dev/null
Und genau dort ist "$server" wichtig als Ziel.
also in Zeile 7 und 23 jeweils "localhost:7072" ?
Ich glaube, ich muß besser Dokumentieren ;o)
Nur im Folgenden Block wird konfiguriert:
nc="/bin/nc"
log="/var/log/fhem/schalte_fhem"
debug=0
server=<Serveradresse|localhost>
Den Rest bearbeitet man nur für Debugzwecke.
Btw. achte mal darauf, ob bei Dir der Pfad "log" existiert. z.B. durch
ls -lha /var/log/fhem/
Edit:
Funktioniert jetzt irexec und wir arbeiten nur am Script, oder hast Du noch irexec-Probleme?
Im Pfad var/log/ fehlt fhem/schalte_fhem - soll ich die Ordner anlegen?
IREXEC scheint zu laufen.
Aber der Rest ?
Du solltest den Ordner anlegen und User/Berechtigungen passend setzen. Alternativ einen passenden Ordner z.B. unter /opt/fhem/log anlegen ... mir gefällt es persöhnlich aber besser, Logfiles im "Logordner" /var/log" abzulegen...
soo, den Ordner habe ich nun angelegt und ich hoffe mit den nötigen Rechten ausgestattet
siehe hier: ls -lha /var/log/fhem/
insgesamt 12K
drwxr-xr-x 3 root root 4,0K Jan 18 19:16 .
drwxr-xr-x 8 root root 4,0K Jan 18 19:06 ..
drwxr-xr-x 2 root root 4,0K Jan 18 19:16 schalte_fhem
und im Script bei Server=localhost -mit port(7072) oder ohne? und nun ...
Einfach nur den Servernamen (also localhost bei Dir). Die Portangabe habe ich noch nicht Variable gemacht.
Jetzt müstest Du als User, der das Script aufrufen darf, mal Testen, ob die Kommunikation stimmt.
also z.B.
./schalte_fhem.sg Licht on
Natürlich bitte Licht durch passendes ersetzen. Jetzt sollte in Fhem genau das geschaltet werden. Wenn DAS klappt, kannst Du das Script in irexec als aufzurufendes Programm eintragen.
Nur mal so als Beispiel von mir:
begin
remote = PANASONIC
button = setup
prog = irexec
repeat = 0
config = /opt/fhem/schalte-fhem.sh Rechner on
end
Natürlich wieder Pfade (hier /opt/fhem) anpassen! Kannst DU eigentlich verstehen, was ich hiermit bezwecke?
Btw:
Kann Dir immer noch anbieten, das wir mal eine Debugsitzung machen.
Soo, habe alles so erledigt wie Du es vorgeschlagen hast und einige Dummy-Taster (toggle) in Fhem angelegt. Diese schalte ich nun via LIRC (irexec). Und alles funktioniert einwandfrei !!! Manchmal schaltet der ein oder andere Aktor nicht - das schiebe ich mal auf meinen SIGNALduino (Freiverdrahtung) und die 433 MHZ Aktoren. On Top müssen die noch durch eine Betondecke funken. Der Fehler ist aber auch zu vernachlässigen. Die 868 MHZ - Strecken funktionieren nahezu 100 %. Werde nun noch die restlichen Tasten belegen - sollte aber pflegeleicht von Statten gehen. Ne Frage - wozu dient bei Dir der "repeat=0" Eintrag in der IREXEC. - Tasten entprellen?
wie auch immer ersteinmal vielen Dank für Deine geduldige Hilfe und Unterstützung. Habe ne Menge gelernt. Ich melde mich wenn alles geklappt hat. Als Nächstes steht ein DHT22 und anderer CUL (mit CC1101) auf der Liste. "Schaun wir mal".
Siehe Doku von Irexec, besser:
https://wiki.ubuntuusers.de/Lirc/Tasten_mit_Funktionen_belegen/
repeat Anweisung, wie mit wiederholten Impulsen umgegangen werden soll.
Wenn Du es nicht drin hast, kann bei dauerhaften drücken (auf der Taste bleiben), der Befehl mehrfach aufgerufen werden. ist z.B. bei Laut/Leiste sinnvoll, aber meistens nicht.
Nur mal so als Beispiel für eine Anwendung:
begin
remote = TT
button = vol-
prog = irexec
repeat = 1
config = /home/irexec/schalte-fhem.sh myMPD volumeDown
end
Was war jetzt eigentlich das Problem, welches ursprünglich bei Dir irexec/fhem gestört hat?
Hast recht, die Ubuntu - Beschreibung ist die Bessere. Mein Problem war wahrscheinlich
dass mehrfache starten von IREXEC in ./Profile und ... Dazu kam noch mein mangelhaftes Verteilen der Rechte und das ich Dein Skript zuerst nicht verstanden habe.
Mit der Bewschreibung .. ist es dann O.K.?
Würde es sonst mal im Wiki Hinterlegen
Absolut - funktioniert hervorragend !! Und vor allen Dingen schnell!!