Aktuelles TV-Programm in FHEM

Begonnen von Kuzl, 20 Oktober 2014, 20:41:43

Vorheriges Thema - Nächstes Thema

mumpitzstuff

Was passiert wenn du auf der Shell diesen Befehl eingibst:

perl /opt/fhem/tv/tv.pl dmy_TV parse

perl sollte ja irgendwie schon bekannt sein, denn fhem läuft ja auch.

TWART016

Auf der shell läuft alles durch und der dummy füllt sich.

mumpitzstuff

Okay dann war wahrscheinlich was mit meinem Befehl falsch.

Dann leg dir mal das at zum Parsen an:

defmod at_TV_UPDATE at +*00:15:00 "perl /opt/fhem/tv/tv.pl dmy_TV parse"

Und die beiden Readingsgroups die im Wiki beschrieben sind. Diese musst du allerdings so anpassen, das sie zu deinen Sendern passen. Ich denke das ist selbsterklärend. Falls nicht, melde dich noch mal.

Danach sollte in den Readingsgroups dein TV Programm zu sehen sein.

TWART016

Jedesmal wenn die guide.xml erstellt wird, liegt sie im falschen Pfad under .wg++.  Ziel ist jedoch /opt/fhem/tv/. Wie muss ich das in der config Datei eingeben?

ch.eick

Zitat von: TWART016 am 08 April 2019, 10:28:29
Jedesmal wenn die guide.xml erstellt wird, liegt sie im falschen Pfad under .wg++.  Ziel ist jedoch /opt/fhem/tv/. Wie muss ich das in der config Datei eingeben?
Moin.
Schau Dir im TV.pl Skript mal das eher Kommando an, ob da der Pfad richtig gesetzt wird.

Gruß Christian

Gesendet von meinem SM-G930F mit Tapatalk

RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

TWART016

Bei sub tvParse steht die Zeile
my $obj = XML::Bare->new(file => '/opt/fhem/tv/rytecDE_Basic');

Hat das damit was zu tun? Meine Datei heißt guide.xml

Ansonsten sehe ich kein Pfad wo man das eintragen kann.

ch.eick

Hallo TWARTO16,

Der download ist an dieser Stelle eingetragen:

my $output = qx(wget http://www.vuplus-community.net/rytec/rytecDE_Basic.xz -O /opt/fhem/tv/rytecDE_Basic.xz 2>&1);


was dann mit dem Eintrag übereinstimmt

my $obj = XML::Bare->new(file => '/opt/fhem/tv/rytecDE_Basic');


Warum Deine Datei guide.xml heist kann ich nicht sagen.

Ruf einfach auf der Shell diese Kommando auf und die Datei wird unter dem richtigen Namen und Pfad gespeichert.

/opt/fhem/tv/tv.pl dmy_TV download


Gruß
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

mumpitzstuff

Wenn du z.B. wie im Wiki beschrieben das generieren der xml Datei mit Crontab startest:

30 0 * * 1,4 /usr/bin/screen -dmS webgrab /home/<user z.B. pi>/.wg++/run.sh

Das wird eine guide.xml im Verzeichnis .wg++ abgelegt ABER es wird eine weitere unter .wg++/rex abgelegt. Diese Datei kannst du z.B. durch eine Erweiterung im Script .wg++/run.sh nach /opt/fhem/tv kopieren und fhem die entsprechenden Rechte geben.

cp /home/pi/.wg++/rex/guide.xml /opt/fhem/tv/rytecDE_Basic
chown fhem: /opt/fhem/tv/rytecDE_Basic


In diesem Fall musst du den Pfad im Script tv.pl gar nicht mehr anpassen. Pass aber bitte auf, das du keinen Download mehr ausführst, sondern nur noch das parsen, ansonsten überschreibt dir die Funktion tvDownload() deine mühsam erstellte Datei wieder.

mumpitzstuff

TWARTO16 erstellt sich sein Tv Programm mit wg++ selbst. Aus diesem Grund braucht er kein Download mehr.

Zitat von: ch.eick am 08 April 2019, 15:40:35
Hallo TWARTO16,

Der download ist an dieser Stelle eingetragen:

my $output = qx(wget http://www.vuplus-community.net/rytec/rytecDE_Basic.xz -O /opt/fhem/tv/rytecDE_Basic.xz 2>&1);


was dann mit dem Eintrag übereinstimmt

my $obj = XML::Bare->new(file => '/opt/fhem/tv/rytecDE_Basic');


Warum Deine Datei guide.xml heist kann ich nicht sagen.

Ruf einfach auf der Shell diese Kommando auf und die Datei wird unter dem richtigen Namen und Pfad gespeichert.

/opt/fhem/tv/tv.pl dmy_TV download


Gruß
    Christian

pfeffi

#1029
Habe noch mal eine Frage zu der Variante 2.
habe alles am laufen, nur der dummy dmy_TV   wird nicht befüllt.
wenn ich    perl /opt/fhem/tv/tv.pl dmy_TV parse                 eingebe, bekomme ich folgende Fehlermeldung
                 sh: 1: /opt/fhem/fhem.pl: Permission denied     

vermute es liegt an irgendwelchen Rechten, aber an welchen?  evtl. telnet?
die Rechte der fhem.pl sind    -rw-rw-rw- 1 fhem dialout 156888 Apr 29 13:36 /opt/fhem/fhem.pl
Hat jemand einen Tip für mich?       

mumpitzstuff

#1030
x für ausführen fehlt.

-rwxr-xr-x  1 fhem dialout 156879 Apr  9 00:19 fhem.pl

drwxr-xr-x  2 fhem dialout   4096 Apr 14 02:29 tv

-rwxr--r--  1 fhem dialout    7519 Apr 14 02:29 tv.pl

So sieht es bei mir aus.

pfeffi

#1031
hmmm,  seltsam,  okay, das wars, funktioniert alles super
Danke schön für die Hilfe

pfeffi

#1032
doch zu früh gefreut
habe alle gewünschten Sender hinzugefügt und bekomme jetzt die Fehlermeldung:

Can't exec "/bin/sh": Die Argumentliste ist zu lang at /opt/fhem/tv/tv.pl line 207.

line 207 ist:
system('/opt/fhem/fhem.pl 7073 "'.$sendTelnet.'"');

es funktioniert mit 13 Sender im channelfilter

mumpitzstuff

hmm das muss dann wohl auf die Optimierung zurückzuführen sein, die ich vor kurzem übernommen habe. Ich denke mal drüber nach, wie ich das vielleicht mit einem Parameter in dem Script steuerbar mache, so das man alle x Sender ein Telnet command los schickt und nicht immer alle sammelt.

pfeffi

#1034
Okay,  dann muß ich warten bis es soweit ist, hatte keine Vorstellung woran es liegen könnte

vielleicht geht ja mit einem zweiten script und dummy