Enigma ehttpd

Alles rund um das grafische Benutzerinterface Enigma
z3r0
Einsteiger
Einsteiger
Beiträge: 141
Registriert: Mittwoch 24. März 2004, 21:32

Enigma ehttpd

Beitrag von z3r0 »

Ich habe mich am Wochenende damit beschaeftigt XMG Enigma-tauglich zu bauen. Es sieht soweit ganz gut aus. Das Tool ist bis auf einige Punkte Neutrino-kompatibel. Ein paar essentielle Sachen fehlen aber noch, oder sind wohl noch etwas "buggy". Ich habe mich zum grossen Teil an das Enigma-WiKi zum ehttpd gehalten. Getestet habe ich mit dem JtG-Image.

http://wiki.tuxbox-cvs.sourceforge.net/Ehttp_api_doku

- der Aufruf "/xml/boxstatus" liefert mir das Jahr 2038. Es ist auch immer die gleiche Uhrzeit, egal wann ich den Aufruf mache.
- /xml/imageinfo liefert einen 404
- /cgi-bin/streaminfo liefert einen 404
- der Aufruf "/channels/getcurrent" liefert nur den Sendernamen. Waere schoen, wenn hier die Channel-Id mitgegeben wuerde.
- im Aufruf "/xml/currentservicedata" fehlt der Video-Pid
- Es fehlt ein Aufruf zum Aufräumen der Timer
- wie ändert und löscht man einen Timer?

Ein weiteres Problem ist der SPTS-Modus. Ich habe diesen in einer Telnet-Session gesetzt. Das Setzen war wohl erfolgreich, das sagte zumindest die daraufhin erfolgte Status-Abfrage. Es wurde aber weiterhin PES aufgenommen, eine Wiedergabe mit VLC, mplayer funktionierte auch nicht.
digi_casi

Re: Enigma ehttpd

Beitrag von digi_casi »

z3r0 hat geschrieben:I
- der Aufruf "/xml/boxstatus" liefert mir das Jahr 2038. Es ist auch immer die gleiche Uhrzeit, egal wann ich den Aufruf mache
das is wohl ein bug, den ich mal fixen muss.

- /xml/imageinfo liefert einen 404
dieser aufruf ist ersetzt worden durch: /xml/boxinfo
- /cgi-bin/streaminfo liefert einen 404
muss /xml/streaminfo heissen
- der Aufruf "/channels/getcurrent" liefert nur den Sendernamen. Waere schoen, wenn hier die Channel-Id mitgegeben wuerde.
das ist eine funktion fuer dreamtv gewesen... vielleicht fragst du mal lazyt, wie er die benutzt hat. da gibts noch /cgi-bin/getServices?listcontent=true
- im Aufruf "/xml/currentservicedata" fehlt der Video-Pid
die video pid passt da nicht dazu. wenn du die pids brauchst musst du noch /xml/streaminfo aufrufen, da stehen alle drin.
- Es fehlt ein Aufruf zum Aufräumen der Timer
die gibts: /cleanupTimerList
- wie ändert und löscht man einen Timer?
da muss ich mal nachschauen.. weiss ich jetzt nicht auswendig.
z3r0
Einsteiger
Einsteiger
Beiträge: 141
Registriert: Mittwoch 24. März 2004, 21:32

Beitrag von z3r0 »

Zitat:

- im Aufruf "/xml/currentservicedata" fehlt der Video-Pid

die video pid passt da nicht dazu. wenn du die pids brauchst musst du noch /xml/streaminfo aufrufen, da stehen alle drin.
Wieso passt er da nicht dazu? Die Audio-Pids sind doch auch drin, sowie alle möglichen weiteren Parameter. Es duerfte auf jeden Fall nicht schaden, wenn hier noch der Video-Pid zurückgegeben wird. Es werden fuer die Sofort-Aufnahme alle Pids + Beschreibung (AC3, Stereo) benötigt. Waere schade, wenn dafür zwei Aufrufe noetig waren.
Zitat:

- der Aufruf "/channels/getcurrent" liefert nur den Sendernamen. Waere schoen, wenn hier die Channel-Id mitgegeben wuerde.

das ist eine funktion fuer dreamtv gewesen... vielleicht fragst du mal lazyt, wie er die benutzt hat.
Gibt es alternativ einen Aufruf um die aktuelle Channel-ID abufragen? Oder einen Aufrum um den aktuellen EPG zu erfragen? Also den EPG der gerade läuft, und nicht den des ganzen Tages.
z3r0
Einsteiger
Einsteiger
Beiträge: 141
Registriert: Mittwoch 24. März 2004, 21:32

Beitrag von z3r0 »

Der Aufruf "/channels/getcurrend" hat sich erledigt.

Den laufenden Sender + die Channel-Id bekommt man auch aus /xml/streaminfo
Service Provider ProSiebenSat.1
Service Reference 1:0:1:382:21:85:c00000:0:0:0:
Fehlen momentan nur noch die kompletten Pids, Ändern/Löschen der Timer, sowie eine korrekte Box-Zeit
digi_casi

Beitrag von digi_casi »

zum umschalten der audio tracks braucht man halt die pids... zum umschalten der video channels nur die service references.
und bei den untervideokanaelen weiss ich gar net, wie man da an die video pids rankommen soll...
wieso brauchst du fuer direktaufnahme die video pid? die service reference sollte da doch reichen...
ne, geht sogar ganz ohne:
/cgi-bin/videocontrol?command=record
z3r0
Einsteiger
Einsteiger
Beiträge: 141
Registriert: Mittwoch 24. März 2004, 21:32

Beitrag von z3r0 »

Irgendwie sind die ganzen Pid-Aufrufe so nicht brauchbar. Es fehlt ein Aufruf der nur die Pids, sowie die Beschreibung zurückgibt. Die Viedo-Pid brauche ich nicht fuer die Direktaufnahme, sondern fuer udrec(Sofortaufnahme oder Timeraufnahme). Es wird ein Dialog angezeigt, in dem der User die gewünschten Pids selektiert. Ich brauche die Video-Pid (+Audio-Pids mit Beschreibung) auch fuer die Wiedergabe (ähnlicher Dialog wie Aufnahme). Klar kann ich mir die ganzen Pids mit 2-3 Aufrufen zusammensammeln. Sinnvoll waere es aber auf alle Faelle alle Pids mit nur einem Aufruf zu holen.

/xml/streaminfo liefert nur einen Audio-Pid, ohne Beschreibung
/xml/currentservicedata liefert alles, nur keinen Video-Pid
Die Pids der Unterkanäle sind für mich nicht interessant, sondern nur der Video-Pid des gerade laufenden Senders.

Es gibt da noch einen Aufruf video.pls. Koenntest du einen ähnlichen Aufruf basteln, der die gleichen Pids wie hier zurückgibt + Beschreibung fuer die Audio-Pids??
Zuletzt geändert von z3r0 am Montag 25. Juli 2005, 16:17, insgesamt 1-mal geändert.
__Ghost__
Developer
Beiträge: 245
Registriert: Mittwoch 13. März 2002, 21:19

Beitrag von __Ghost__ »

Hi,

also für den aktuell laufenden sender bekommt man die pids mit

/control/zapto?getallpids

oder

/control/zapto?getpids

letzteres allerdings nur die gerade ausgewählte vpid und apid

cu
z3r0
Einsteiger
Einsteiger
Beiträge: 141
Registriert: Mittwoch 24. März 2004, 21:32

Beitrag von z3r0 »

Alles klar. Genau das habe ich gesucht.

Muss die Methode noch nicht mal neu schreiben, da diese 1:1 von Neutrino stammt.

Fehlt noch das ändern/löschen der Timer und die Box-Zeit
digi_casi

Beitrag von digi_casi »

/deleteTimerEvent?ref=#REFERENCE#&start=#START#&type=#TIMERTYPE#&force=no/yes
/editTimerEvent?<dieselben parameter wie addtimerevent> plus old_type=...&old_stime=...
zur identifikation des timers.
bei old_data muss der parameter <typedata> (habe ich erst kuerzlich reingemacht) aus der timerliste uebernommen werden
und old_stime ist die alte startzeit <start>
z3r0
Einsteiger
Einsteiger
Beiträge: 141
Registriert: Mittwoch 24. März 2004, 21:32

Beitrag von z3r0 »

Danke, Löschen geht nun auch.

Für das "Ändern" brauch ich wohl ein neues Image.
emmeli
Interessierter
Interessierter
Beiträge: 73
Registriert: Freitag 14. Juni 2002, 19:44

Beitrag von emmeli »

hm,

also meine boxzeit passt schon.
<currenttime>Mon Jul 25 17:49:41 2005</currenttime>
mfg emmeli
z3r0
Einsteiger
Einsteiger
Beiträge: 141
Registriert: Mittwoch 24. März 2004, 21:32

Beitrag von z3r0 »

Aus welchem Aufruf stammt deine Box-Zeit?

ich habe meine aus /xml/boxstatus

<current_time>Mon Jan 18 22:40:48 2038
</current_time>
digi_casi

Beitrag von digi_casi »

also ich habe auch den 18. januar... aber ich meine, auch schon mal die richtige gesehen zu haben...
emmeli
Interessierter
Interessierter
Beiträge: 73
Registriert: Freitag 14. Juni 2002, 19:44

Beitrag von emmeli »

ok, hab geschummelt.

habe nur http://<boxip>/xml eingegeben.

mfg emmeli
z3r0
Einsteiger
Einsteiger
Beiträge: 141
Registriert: Mittwoch 24. März 2004, 21:32

Beitrag von z3r0 »

Da kommt nichts.
emmeli
Interessierter
Interessierter
Beiträge: 73
Registriert: Freitag 14. Juni 2002, 19:44

Beitrag von emmeli »

man(n) kann hier leider keine bilder anhängen. also musst du es halt glauben.

schummeln ist erlaubt, aber lügen nicht. :wink:

mfg emmeli
Sat_Man
Einsteiger
Einsteiger
Beiträge: 351
Registriert: Donnerstag 24. Oktober 2002, 20:14

Beitrag von Sat_Man »

digi_casi hat geschrieben:also ich habe auch den 18. januar... aber ich meine, auch schon mal die richtige gesehen zu haben...
Also mit dem letzten Image für die 7020 vom 29.06.2005, wird noch das richtige Datum angezeigt. Der Fehler muss sich also seit diesem Datum eingeschlichen haben.
Mfg Sat_Man
digi_casi

Beitrag von digi_casi »

aber das ctime(&atime) is seit ewigkeiten so...
digi_casi

Beitrag von digi_casi »

doch nicht :D
ist ne zeile verlorengegangen :roll:
z3r0
Einsteiger
Einsteiger
Beiträge: 141
Registriert: Mittwoch 24. März 2004, 21:32

Beitrag von z3r0 »

Danke, mit dem CVS-Stand von heute funktioniert nun die Uhrzeit. Leider bin ich auf 2 weitere Probleme gestossen.

1. Beim Schreiben des Timers bleibt der Parameter "after_event" unberücksichtigt. Probiert habe ich es mit:
after_event=shutdown oder
afterevent=shutdown

2.
edit1:
Es heisst "/changeTimerEvent?<...>" und nicht "editTimerEvent". Damit hat sich mein 2. Problem erledigt.

edit2: aber einen weitern Bug(oder ist das grundsätzlich nicht möglich?) gefunden. Es ist nicht möglich den Sender zu ändern.

edit3: Im WebIF lassen sich keine Wiederhol-Tage einstellen. Die Einstellungen bleiben beim Speichern unberücksichtigt.
digi_casi

Beitrag von digi_casi »

z3r0: kannst du n bisschen java_script?
es waere viel einfacher, wenn du dir einfach die webif files anschauen wuerdest. da siehst du genau, wie das implementiert ist und wie die parameter heissen.
digi_casi

Beitrag von digi_casi »

den sender kann man (wenn ich mich recht erinnere) nicht aendern. da muss man den timer loeschen und einen neuen erstellen.
die wochentage kann man angeben mit: mo=on&tu=on.... etc.
der parameter fuer after_event heisst after_event und die werte sind numerisch... z.b. ePlaylistEntry::doShutdown (da musst mal gucken, welchen wert der hat).
z3r0
Einsteiger
Einsteiger
Beiträge: 141
Registriert: Mittwoch 24. März 2004, 21:32

Beitrag von z3r0 »

z3r0: kannst du n bisschen java_script?
Joa, nur funktioniert das Setzen der Wiederholtimer auch im WebIF nicht.

Die Keys fuer die After-Events habe ich gefunden, falls die mal jemand brauchen sollte.
67108864 = shutdown
134217728 = standby
z3r0
Einsteiger
Einsteiger
Beiträge: 141
Registriert: Mittwoch 24. März 2004, 21:32

Beitrag von z3r0 »

Mit dem CVS-Stand von gestern funktioniert die ngrab-Aufnahme nicht mehr.

Um eine Aufnahme zu starten wird normalerweise uber den TCP-Port 31340 der Request an die Box abgeschickt. Die Box sollte in diesem Fall auf den Request antworten. Tut sie aber nicht, sie schliesst den Socket einfach.

Hier ein Beispiel mit udrec

F:\Java\workspace\XMediaGrabber>udrec.exe
15:32:27 listening to any host on port 4000
15:33:01 wait xml
15:33:01 to DBox: VIDEO 31341 16 0 1 vaa 4ff 500 501

Unbehandelte Ausnahme: System.Net.Sockets.SocketException: Eine vorhandene Verbi
ndung wurde vom Remotehost geschlossen
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size,
SocketFlags socketFlags)
at System.Net.Sockets.Socket.Receive(Byte[] buffer)
at Record.Start()
at DBoxRecordControl.Start()
at udrec.Main(String[] args)

F:\Java\workspace\XMediaGrabber>
Vor dem Update gestern funktionierte das definitiv mal.
digi_casi

Beitrag von digi_casi »

jo, das streaming geht ja an enigma vorbei...
hast du die richtige services und inetd.conf auf der box mit dem port... da hat ghost was geaendert...