tobias.s Posted October 31, 2011 Posted October 31, 2011 Hallo, bei mir läuft der DVBViewer wunderbar. Was ich an meinem HTPC vermisse ist eine simple Aufnahmeanzeige am Gehäuse, z.B. eine rote LED die aufleuchtet wenn der DVBViewer gerade was aufnimmt. Ich beginne immer zu rätseln wenn der HTPC an ist und keiner davor sitzt, ob fälschlicherweise jemand an die HTPC Tastatur dran gekommen ist und den PC aus dem Standby aufgeweckt hat. Eine simple LED könnte da Gewissheit schaffen, dass alles in bester Ordnung ist. Danke für jeglich Info... Achso..löten kann ich Grüße, tobias Quote
Joshua06 Posted October 31, 2011 Posted October 31, 2011 Also per LED ist mir jetzt nichts bekannt. Was aber geht ist folgendes: In den Optionen des DVBViewers unter Aufnahme Optionen einen Haken bei "Aufnahme permanent signalisieren" setzen, damit wird dir dann per OSD angezeigt ob eine Aufnahme aktiv ist. Quote
SupaChris Posted October 31, 2011 Posted October 31, 2011 (edited) Das könnte mit EventGhost ganz einfach gehen. Eine LED mit Vorwiderstand an die serielle Schnittstelle an RTS oder DTR. Und dann beim Start einer Aufnahme die serielle Schnittstelle öffnen und beim Beenden aller Aufnahmen (gibts auch als Event) die Schnittstelle wieder schließen. Schon leuchtet die LED bei Aufnahme. Edited October 31, 2011 by SupaChris Quote
tobias.s Posted October 31, 2011 Author Posted October 31, 2011 Danke für die schnellen Antworten. Das mit Eventghost habe ich mir gerade auch schon gedacht, da ich eh alles über EG steuere. Kann ich die Aufnahme über das DVBViewer-Eventghost-Plugin überwachen? Muss ich mal schauen. Serielle Schnittstelle habe ich zwar keine mehr übrig. Aber ich glaube es ging auch über einen ausrangierten alten mini USB 1.1 hub den ich per command im Gerätemanager ausschalte und einschalte, somit schaltet sich auch die LED an und aus. Jau...so müsste es funktionieren. Danke nochmals für die Ideen! Quote
SupaChris Posted October 31, 2011 Posted October 31, 2011 Hehe, mit dem Hub gehts natürlich auch. Musst nur aufpassen, devcon benötigt Admin-Rechte. EventGhost hat mehrere Events. Beim Start einer Aufnahme, beim Beenden einer Aufnahme und beim Beenden aller Aufnahmen. Quote
dbraner Posted November 1, 2011 Posted November 1, 2011 Danke für die schnellen Antworten. Das mit Eventghost habe ich mir gerade auch schon gedacht, da ich eh alles über EG steuere. Kann ich die Aufnahme über das DVBViewer-Eventghost-Plugin überwachen? Muss ich mal schauen. Beim Starten und Stoppen einer Aufnahme werden vom DVBViewer die Scripts startrec.vbs und stoprec.vbs aufgerufen. Auch darüber könnte man also per externem Befehl eine LED ein-/ausschalten. Quote
tobias.s Posted November 1, 2011 Author Posted November 1, 2011 Hallo nochmal, so eigentlich funktioniert mein Vorhaben bisher...mittels devcon bekomme ich die USB-Leuchte zum ein und ausschalten. Leider fehlt mir für den Recording Service einen Start/Stop event. Da der DVBViewer-Eventghost-Plugin bei mir den DVBViewer in unterschiedlichen Abständen zum einfrieren bringt muss ich eine andere Lösung finden. Hätte hier Jemand einen Tip? Der EG-Prozesswatcher reagierte leider bisher nicht auf Timer Aufnahmen des Recording Services. Die startrec.vbs und stoprec.vbs werden bei Aufnahmen mit dem Recording Service nicht ausgeführt, nur bei Direktaufnahmen. Mir würde es eigetnlich reichen wenn beim starten der Aufnahme und beim Beenden eine exe ausgeführt wird. Danke für jede Hilfe! Quote
dbraner Posted November 2, 2011 Posted November 2, 2011 (edited) Die startrec.vbs und stoprec.vbs werden bei Aufnahmen mit dem Recording Service nicht ausgeführt, nur bei Direktaufnahmen. Das mit dem Recservice ist richtig. Soweit mir bekannt, kann man im Recservice eine "Nach Aufnahme Aufgabe" einrichten (s.a. Nach Aufnahme). Allerdings keine "Vor Aufnahme Aufgabe". Hierzu gab es schon einmal einen Thread im Recservice Forum. Edited November 2, 2011 by dbraner Quote
tobias.s Posted November 2, 2011 Author Posted November 2, 2011 (edited) Hallo, so ich habe es jetzt doch hinbekommen Ist etwas verzwickt, aber das Ergebnis ist genau das was ich wollte. Da bei mir der DVBViewer Plugin in Eventghost nicht richtig funktioniert und den DVBViewer öfters mal zum abstürzen bringt, kann ich dessen Recording-Event nicht nutzen. Die Aufgabe ist bestimmt auch einfacher zu erledigen, da ich jedoch begrenzte Programmiertools habe, geht das Ganze über drei Wege. Vorteil: man brauch nichts löten und keinen Microcontroller programmieren usw. um eine LED zu steuern. Weiterhin wird die Funktion größtenteils mit Windows eigenen Boradmitteln erledigt, der Rest mit frei zugänglicher Software. Die Lösung ist nur für Aufnahmen gedacht die über den Recordingservice laufen(Timer/EPG usw.), nicht über die direkte Aufnahmefunktion im DVBViewer, diese wird im OSD ja sowieso immer angezeigt. Hier mal ein Step by Step Tutorial: Was man benötigt: +Autohotkey Quelle: Autohotkey Website Direkter Downloadlink: Download +Autohotkey COM.ahk Library. Quasi nur eine Datei: Quelle +devcon (bei mir die 64bit Variante da ich Win7 x64 nutze): Quelle + Anleitung +Ausrangierte Hardware die über USB angeschlossen wird und eine LED hat. Quelle: Grabbelkiste. Eine Bemerkung vorab, es lohnt sich alle erstellten Dateien in einem einzigen Ordner mit genügend Zugriffsrechte zu speichern. Fangen wir mit der Hardware an: Bei mir hat ein ausrangierter HUB oder ein DVB-T Empfänger funktioniert. Sehr praktisch wäre auch ein mini USB-Speicher-/Bluetooth-Stick der eine konstant(!) aufleuchtende LED hat sobald man ihn angeschlossen hat. Diesen kann man dann an einem der vorderen USB-Anschlüsse des HTPC´s einstöpseln. Die genutze USB-Hardware muss im Gerätemanger auftauchen(evtl. auch den Treiber installieren) und mittels Gerätemanager aktiviert/deaktiviert werden können. Die LED der Hardware wird damit ein/ausgeschaltet. Was nicht funktioniert sind sog. LED Notebook leuchten da diese nur die 5V des USB-Anschluss nutzen und keine Datenleitungen haben. Um diese Aktivier-/Deaktivierprozedur automatisiert hinzubekommen, nutzen wir die Kommandoversion des Gerätemanagers: devcon. Zuerst benötigen wir die Kennung (VID/PID) der USB-Hardware die wir ein und ausschalten möchten. Hierzu entweder im Gerätemanger selber suchen oder ein Konsolenfenster mit Adminrechte öffnen und folgenden Befehl eingeben: devcon hwids * >hwids.txt Dies speichert den ganzen Gerätezoo des HTPC´s (inkl. aller VID/PIDs) in einer TXT-Datei namens hwids.txt ab. Innerhalb dieser Datei suchen wir dann nach unserer Hardware, in meinem Fall den oben erwähnten DVB-T Empfänger von der Firma Avermedia: USB\VID_07CA&PID_A800\7218267H0310 Name: AVerMedia DVB-T BDA Video Capture(A800) Hardware IDs: USB\VID_07CA&PID_A800&REV_0000 USB\VID_07CA&PID_A800 Notieren sollten wir uns dann die Kennung der USB Hardware in meinem Fall: USB\VID_07CA&PID_A800 Nun können wir mittels devcon testen ob die USB-Hardware und somit die LED der Hardware ein und ausgeschaltet werden kann. Wir öffnen wieder ein Konsolenfenster mit Adminrechte und geben folgende Befehle ein: devcon disable "USB\VID_07CA&PID_A800" Dies sollte die LED ausschalten. devcon enable "USB\VID_07CA&PID_A800" Dies schaltet sie wieder ein. Schaltet sich hier die LED nicht ein und aus, ist die Hardware für unsere Zwecke unbrauchbar, da die LED in diesem Fall nicht über einen Controller gesteuert wird, sondern höchstwahrscheinlich direkt an die 5V des USB angeschlossen ist. Wir speichern die zwei Befehle in jeweils zwei Batchdateien ab: LED_AN.bat und LED_AUS.bat. Unter Windows 7 muss man nun noch einen kleinen Umweg machen um die UAC "auszutricksen" und die Batchdateien mit Adminrechte automatisiert und ausgeblendet auszuführen. Denn wir wollen ja nicht, dass ständig ein Konsolenfenster geöffnet wird wenn die LED ein oder ausgeschaltet werden soll. Hierzu nutzen wir die Windows Aufgabenplanung. Wir erstellen zwei Aufgaben die folgende Einstellungen beinhalten: 1.Aufgabe: Name: REC_LED_ON Sicherheitsoptionen: +Unabhängig von der Benutzeranmeldung ausführen +Kennwort nicht speichern. Die Aufgabe greift nur auf lokale Ressourcen zu. +Mit höchsten Berechtigungen ausführen. +Konfigurieren für Windows 7 Windows Server 2008R2 Trigger: bleibt leer Aktion: +Programm starten +Programm/Skript: hier wählen wir die bereits oben gespeicherte LED_AN.bat +Starten in: Ordner in dem die LED_AN.bat gespeichert ist. 2.Aufgabe: Name: REC_LED_OFF Sicherheitsoptionen: +Unabhängig von der Benutzeranmeldung ausführen +Kennwort nicht speichern. Die Aufgabe greift nur auf lokale Ressourcen zu. +Mit höchsten Berechtigungen ausführen. +Konfigurieren für Windows 7 Windows Server 2008R2 Trigger: bleibt leer Aktion: +Programm starten +Programm/Skript: hier wählen wir die bereits oben gespeicherte LED_AUS.bat +Starten in: Ordner in dem die LED_AUS.bat gespeichert ist. Nun erstellen wir 2 weitere Batchdateien: LED_TASK_ON.bat mit folgendem Inhalt: %windir%\system32\schtasks.exe /run /tn "REC_LED_ON" und LED_TASK_OFF.bat : %windir%\system32\schtasks.exe /run /tn "REC_LED_OFF" Diese Batchdateien werden später benötigt um die Aufgaben im Admin-Modus ohne UAC-Behinderung auszuführen. Das Grundgerüst zum Ein- und Ausschalten der LED´s steht nun. Man könnte die LED_TASK.ON.bat und LED_TASK_OFF.bat an dieser Stelle testen ob man alles richtig gemacht hat. Jetzt fehlt noch die Information wann die LED aufleuchten und wann sie wieder ausgehen soll. Hierzu nutzen wir ein Autohotkey Skript, dass alle 10s den Recording Service über den Webserver anfragt ob eine Aufnahme aktiv ist oder nicht. Ändert sich der Status der Aufnahme wird die LED entsprechend ein und ausgeschaltet. Man installiert Autohotkey und speichert die COM.ahk Library in einem Ordner ab. In diesem Ordner erstellt man eine Textdatei mit folgendem Inhalt und speichert diese als rec_status.ahk ab: #NoTrayIcon #Persistent #include COM.ahk RS_StatusVar_old:=0 ;Variable initialisieren loop { Sleep, 10000 ;Hier kann Abfrageintervall eingestellt werden in ms, Bsp. hier 10s OutputVar := UrlDownloadToVar("http://127.0.0.1:8089/api/status.html[?utf8=]") ;Hier den eigenen Server eintragen in Form von: http://[user:password@]IP[:port]/api/status.html[?utf8=] FoundPos := RegExMatch(OutputVar, "(?<=recordcount>)(.)", SubPat) RS_StatusVar:=SubPat ; if (RS_StatusVar=0 and RS_StatusVar_old>=1) ;Änderung des Aufnahmestatus von 1 oder mehrere Aufnahmen auf 0 Aufnahmen RunWait, %A_ScriptDir%\LED_TASK_OFF.bat, , Hide ;Schalte LED aus. Falls die Scriptdateien in einem Ordner abgespeichert sind wie die Batchdateien, kann man %A_ScriptDir% als Pfadvariable übernehmen, anonsten den gesamten Pfad der Datei hier eingeben. if (RS_StatusVar>=1 and RS_StatusVar_old=0) ;Änderung des Aufnahmestatus von 0 auf 1 oder mehrere Aufnahmen. RunWait, %A_ScriptDir%\LED_TASK_ON.bat, , Hide ;Schalte LED ein. Falls die Scriptdateien in einem Ordner abgespeichert sind wie die Batchdateien, kann man %A_ScriptDir% als Pfadvariable übernehmen, anonsten den gesamten Pfad der Datei hier eingeben. RS_StatusVar_old:=RS_StatusVar ;Speichere den aktuellen Rec-Status für den nächsten Loop } UrlDownloadToVar(sURL) ;Prozedur zum auslesen der HTML/XML Seite. { COM_Init() pwhr := COM_CreateObject("WinHttp.WinHttpRequest.5.1") COM_Invoke(pwhr, "Open", "GET", sURL) COM_Invoke(pwhr, "Send") sResponseText := COM_Invoke(pwhr, "ResponseText") COM_Release(pwhr) COM_Term() return, sResponseText } Die rec_status.ahk kann man nun mit Authotkey compilieren, dazu mit der rechten Maustaste auf die rec_status.ahk klicken und mittels Compile eine rec_status.exe erzeugen. Nun muss nur noch die rec_status.exe gestartet und ggf. eine Verknüpfung in den Autostart-Ordner erstellen werden. Auf meinem HTPC verbraucht die exe zwischen 1,5 bis 2,5MB RAM. Als letzter Funktionstest könnte man eine Aufnahme im DVBViewer programmieren (EPG/Timer) und schauen ob das Ganze funktioniert. Auf Verbesserungsvorschläge würde ich mich sehr freuen. Grüße, tobias.s PS:Alle Angaben ohne Gewähr. Edited November 2, 2011 by tobias.s Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.