Aufnahmestatus abfragen

  • Hallo Leute,


    ich schätze, ich bin mit meinem Thema hier richtig, denn ich habe ein Problem, bei dem mir die Developer in Null Komma nix helfen können:


    Ich benötige, um die Dreambox nicht bei einer Aufnahme zu stören, eine Information, ob gerade eine Aufnahme läuft. Das Problem ist, dass ich bestimmte Kopieraktionen per FTP vom PC zur Dreambox automatisieren aber das nicht während einer laufenden Aufnahme tun möchte. Ideal wäre es für mich, diese Info aus einer Datei auf der Dreambox auslesen zu können, also durch Abruf der Datei per FTP-Client oder auch wget. Über Telnet irgendwelche Dinge auf der Dreambox zu tun und die Antwort auszuwerten, wäre auch noch machbar.


    Danke schon mal.

  • das wird nicht in einer datei gespeichert. du müsstest enigma 'umbauen' und dir den aktuellen status jeweils in ein file schreiben lassen.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Das script aus dem Anhang schaut einfach ob der Harddiskplatz abnimmt (=Aufnahme) um wenn länger Standby besteht Deepstandby zu machen ausser es wird gerade was aufgenommen

  • Danke für die Anregung. Gute Idee. Wenn ich das richtig sehe, wird die restliche Harddiskkapazität im Abstand von 5 Sekunden gemessen.


    Ich habe mir nun auch Gedanken gemacht, und bin von einer anderen Seite an das Problem herangegangen: Da ich den Status vom PC aus feststellen wollte, habe ich dort per FTP den LIST-Befehl auf das Verzeichnis /var/mnt/hdd ausgeführt und die Zeit gemessen, in der dieser Befehl ausgeführt wird. Ist die Festplatte im Standby (nach den eingestellten 2 Minuten), dauert der FTP-Zugriff ein paar Sekunden. Das ist dann für mich das Zeichen, dass keine Aufnahme läuft. Das habe ich allerdings mit den normalen Bordmitteln von Windows im DOS-Fenster nicht hinbekommen, da der TIME-Befehl keine Sekunden ausgibt. Also musste ich mir noch ein kleines Tool schreiben, welches den FTP-Zugriff erledigt und die Zugriffszeit als errorlevel zurückgibt.


    Vielen Dank noch mal.

  • das ist aber keine gute methode um aufnahme festzustellen, Harddisk kann auch aus anderen Gründen aufgewacht sein (grade film angeschaut, picon geladen,..), oder es kann wegen Netzwerproblemen länger dauern.


    Es gibt übrigens schon images über die wir nicht sprechen die in /tmp ein record file oder so ähnlich anlegen wenn aufgenommen wird.


    Wenn du es unbedingt gleich am PC machen willst map die hdd als sambashare dann kannst du am PC direkt erkennen ob sich der freespace des devices verändert.


    Und im übrigen wäre so eine Abfrage im WebIF als Feature request nicht schlecht - so in der Art http://dbox/web/recording und als antwort kommt xml mit yes/no.


    LG
    gutemine

  • Leuts, nicht so kompliziert, wenns auch ganz einfach geht. :winking_face:


    http://IPDERBOX/xml/boxstatus


    liefert Dir schön sauber folgendes zurück:


    XML
    <?xml version="1.0" encoding="UTF-8"?>
    <boxstatus>
    	<current_time>Thu Jan 10 22:52:00 2008</current_time>
    	<standby>0</standby>
    	<recording>0</recording>
    	<mode>0</mode>
    	<ip>192.168.0.2</ip>
    
    
    </boxstatus>


    Man beachte Recording, welcher , sobald die Dream aufnimmt, ne 1 ausgibt.


    Grüße
    Dr. Best

  • Hallo gutemine und danke für deinen Beitrag. Ich wollte dir gerade antworten, da kam der letzte Beitrag rein. Das ist natürlich genau das, was ich gesucht habe. Die Lösung ist jetzt klar: Mit wget komme ich an die Datei boxstatus, und mit find suche ich in der Datei nach der Zeichenkette <recording>0</recording>. Danach die Abfrage über errorlevel.


    Klappt ganz wunderbar. Vielen Dank Dr.Best


    Hier noch mal das Skript:


    **********************************************************


    echo off


    wget.exe -P D:\Extra\CopyApps\DVB\Update4\Temp http://192.168.0.20/xml/boxstatus


    find "<recording>0</recording>" D:\Extra\CopyApps\DVB\Update4\Temp\boxstatus > NUL


    if errorlevel==1 echo Aufnahmestatus = 1


    if not errorlevel==1 echo Aufnahmestatus = 0


    pause


    **********************************************************


    Nachtag:


    Gibt es eigentlich irgendwo im net eine Doku über Enigma, "das Fremdimage" (bin gerade angezählt worden, weil ich es beim Namen genannt habe) oder das WebIF, was alles abzufragen geht usw?


    Was hat mode für eine Bedeutung in der Datei boxstatus?

    3 Mal editiert, zuletzt von hajufu ()

  • Mit mode kannst Du abfragen, ob Du Dich im File, Radio oder TV Modus befindest.


    Ne Doku gibt es kaum für Enigma 1. Ich würde Dir vorschlagen, den Source Code durchzugehen... :winking_face:


    http://cvs.tuxbox.org/cgi-bin/…x/apps/tuxbox/enigma/src/



    Dann schauste Dir die Sourcen von den _dyn Dateien an, da ist Source Code für das WebInf.


    In dem InitializeDyn (immer ganz unten) siehst Du dann die Funktionsaufrufe für vom Webinf.


    z.b. in enigma_dyn_xml.cpp:


    void ezapXMLInitializeDyn(eHTTPDynPathResolver *dyn_resolver, bool lockWeb)
    {


    dyn_resolver->addDyn("GET", "/xml/boxinfo", getXMLBoxInfo, lockWeb);
    dyn_resolver->addDyn("GET", "/xml/boxstatus", getXMLBoxStatus, lockWeb);
    dyn_resolver->addDyn("GET", "/xml/currentservicedata", getXMLCurrentServiceData, lockWeb);
    dyn_resolver->addDyn("GET", "/xml/serviceepg", getXMLServiceEPG, lockWeb);
    dyn_resolver->addDyn("GET", "/xml/serviceepg.xsl", getXSLServiceEPG, lockWeb);
    dyn_resolver->addDyn("GET", "/xml/services", getXMLServices, lockWeb);
    dyn_resolver->addDyn("GET", "/xml/streaminfo", getXMLStreamInfo, lockWeb);
    dyn_resolver->addDyn("GET", "/xml/streaminfo.xsl", getXSLStreamInfo, lockWeb);
    dyn_resolver->addDyn("GET", "/xml/timers", getXMLTimers, lockWeb);
    }