Hauptmenü

LIRC /IREXEC zickt

Begonnen von Hans Preuth, 11 Dezember 2017, 22:05:10

Vorheriges Thema - Nächstes Thema

Wernieman

- 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

Hans Preuth

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!

Wernieman

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 ...
- 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

Hans Preuth

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

Wernieman

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"
- 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

Hans Preuth

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 ?

Wernieman

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

- 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

Hans Preuth

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?


Wernieman

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.
- 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

Hans Preuth

also in Zeile 7 und 23 jeweils "localhost:7072" ?

Wernieman

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?
- 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

Hans Preuth

Im Pfad var/log/ fehlt fhem/schalte_fhem - soll ich die Ordner anlegen?
IREXEC scheint zu laufen.
Aber der Rest ?

Wernieman

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...
- 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

Hans Preuth

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 ...

Wernieman

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.
- 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