Jump to content
gromit

Steuerung einer LED über COM für Recording Status

Recommended Posts

gromit

Hallo zusammen, ich würde gerne wie unter Windows 7 im Mediacenter eine LED, die über den COM Port angeschlossen ist steuern, sodass diese rot blinkt immer wenn eine Aufnahme gemacht wird. Bisher habe ich dazu das Tool LEDSdriver genutzt, das direkt auf den MCE status zugegriffen hat und sehr zuverlässig war. Es kann auch über eine Commandline getriggert werden.

https://hveijk.home.xs4all.nl/slicksolutions/ledsdriver.shtml

 

Nun könnte ich zwar über die recording Einstellungen des DVBViewer nach der Aufnahme die LED per Commandline wieder ausschalten, aber ich habe leider keine Option gefunden die beim Start einer Aufnahme ausgelöst werden könnte. Ist wahrscheinlich auch eher ungewöhnlich.

 

Alternativ könnte ich wohl die recording API nutzen, das wäre aber aufwändiger und ich müsste ständig auf den Server pollen um eine Statusänderung mitzubekommen. Das würde ich gerne vermeiden.

 

Vielleicht hat noch jemand eine bessere Idee?

 

Danke für die ansonsten wirklich umfangreichen Einstellmöglichkeiten und die hohe Stabilität von DVBViewer. Nach dem Umstieg von Windows 7 auf Windows 10 und dem Verlust von Microsoft Media Center hatte ich zunächst mediaportal2 ausprobiert, aber der Serverdienst scheint von der Stabilität nicht mit DVBViewer mithalten zu können. Mit etwas Geduld kommt man mit DVBViewer, einem guten OSD skin und der angelernten MCE Fernbedienung schon recht weit. nicht ganz so hübsch wie früher aber doch auch recht stabil.

Share this post


Link to post
DetlefM

Ich schätze mal das Tray Programm vom Mediaserver macht auch nichts anderes als zu pollen - denn es wechselt ja das Icon.

Also müsstest Du nur bitten dieses Programm Opensource zu machen.

Share this post


Link to post
gromit

Mit "Tray Programm vom Mediaserver " meinst du das vom DVBViewer?! Ich kann ja mal nachfragen.

Spoiler

 

 

Share this post


Link to post
DetlefM
4 hours ago, gromit said:

Mit "Tray Programm vom Mediaserver " meinst du das vom DVBViewer?! Ich kann ja mal nachfragen.

  Reveal hidden contents

 

 

Das Ding hat den Namen  "DVBViewer Mediaserver Tray Applikation" und sitzt halt im Tray von Windows 10.

Share this post


Link to post
Griga
On 1/22/2020 at 10:53 AM, DetlefM said:

Ich schätze mal das Tray Programm vom Mediaserver macht auch nichts anderes als zu pollen - denn es wechselt ja das Icon.

 

Richtig, aber das Tray Tool verwendet nicht das Media Server API, sondern prozessübergreifend einen gemeinsamen Speicherbereich (genauer gesagt ein "memory mapped file") für die Kommunikation sowie ein Synchronisationsobjekt namens Mutex für die Koordination der Zugriffe. Das beinhaltet eine ziemlich spezielle Nutzung des Windows API und ist eigentlich nicht für die Öffentlichkeit bestimmt.

 

Share this post


Link to post
DetlefM
1 hour ago, Griga said:

 

Richtig, aber das Tray Tool verwendet nicht das Media Server API, sondern prozessübergreifend einen gemeinsamen Speicherbereich (genauer gesagt ein "memory mapped file") für die Kommunikation sowie ein Synchronisationsobjekt namens Mutex für die Koordination der Zugriffe. Das beinhaltet eine ziemlich spezielle Nutzung des Windows API und ist eigentlich nicht für die Öffentlichkeit bestimmt.

 

Dann stellt sich die Frage wo denn ein Web API Client die Information herbekommen sollte. Status2 gibt zwar mit nextrecording einen Timer bis zum nächsten Recording. Aber nach dem Start kann man nicht mehr unterscheiden ob ein Recording läuft weil einfach nur die Zeit bis zu nächsten Aufnahme zurück gegeben wird.

Share this post


Link to post
nuts

timercount = number of active timers (all kinds)

reccount = number of ongoing recordings

 

Damit zum Beispiel?  Siehe dazu: http://en.dvbviewer.tv/wiki/Recording_Service_web_API

Share this post


Link to post
DetlefM
1 hour ago, nuts said:

timercount = number of active timers (all kinds)

reccount = number of ongoing recordings

 

Damit zum Beispiel?  Siehe dazu: http://en.DVBViewer.tv/wiki/Recording_Service_web_API

Danke - wie immer: Wer lesen kann ist im Vorteil.

Share this post


Link to post
Griga

Eine andere Möglichkeit:

 

http://www.dvbviewer.com/griga/changelog_dms_api.html#__RefHeading__60954_150729339

 

Quote

Added: API: /api/timerlist.html supports new filter parameters that allow to list recording timers selectively. Here is a complete list of all parameters:

(...)

  • reconly=1 limits the output to timers that are currently associated with ongoing recordings.

 

...und dann schaut man halt, ob die ausgelieferte XML Einträge hat.

 

Share this post


Link to post
DetlefM

Da ich mal wieder ein kleines Projekt brauchte und mich dieses Thema gereizt hat habe ich das mal in ein Programm gegossen - zur freien Verwendung.

https://github.com/detlefm/MediaServerTray

Feedback welcome.

Share this post


Link to post
gromit

Sehr cool vielen Dank. Das ist ja super nett. Ich werde es gleich mal ausprobieren. Wenn ich das richtig verstehe, würde ich das VBScript einfach in mein Windows Autostart einbinden. Und dann die commands für mein LED driver anpassen.

Share this post


Link to post
DetlefM

Das VB Script ist nur ein Beispiel für den Aufruf eines "fensterlosen", verborgenen Console Programmes.

Die Nutzung ist wie folgt:

Du musst das Programm mit Visual Studio 2019 kompilieren (ich könnte zwar ein Executable bereitstellen aber der Aufwand das zu signieren wäre zu groß für ein paar Benutzer,)-

Falls Du damit Probleme hast dann muss ich es kompilieren und Dir irgendwie als Link zur Verfügung stellen - also in diesem Falle antworte auf diesen Beitrag.

Jedenfalls hast Du nach dem Kompilieren einen Ordner in dem verschiedene Dateien enthalten sind. wie z.B. MediaServerTray.exe, MediaServerTray.exe.config, MedisServerTray.exe.Manifest.

Du würdest das Programm MediaServerTray.exe als Startup auf Deinem PC einbinden und einmalig auf die dann in Deinem Tray befindliche Applikation zugreifen und sie konfigurieren.

Oder halt per Notepad die Datei MediaServerTray.exe.config. 

Jedenfalls musst Du dann evtl. den Server auf dem der Mediaserver läuft ändern (vor eingestellt ist localhost also der Rechner auf dem auch das Tray Programm läuft) und falls bei Dir im Mediaserver festgelegt halt das Zugangspasswort (default ist leer).

Dann kannst Du ein vbs Script oder cmd Dateien angeben die ausgeführt werden wenn

a) eine Aufnahme begonnen wir,

b) eine Aufnahme endet (und keine andere gerade läuft) und

c) wenn ein Fehler aufgetreten ist weil z.B. der Zielcomputer mit dem Mediaserver warum auch immer nicht erreichbar ist (meist wäre das dann falsches Passwort oder falscher Rechnername)-

Wenn man eine cmd Datei angibt dann poppt ein Fenster hoch, die Batchdatei wird ausgeführt und dann schließt sich das Fenster. Wenn man das nicht möchte dann ist als Muster die VBScript Datei da um zu zeigen wie man das umgeht.

In deinem Fall würde Du innerhalb der cmd Datei die Befehle für das einschalten und ausschalten der LEDs eintragen - aber natürlich kann man da auch noch mehr machen wie z.B. eine Email generieren oder was auch immer.

Zur Fehlersuche und natürlich auch zum Nachvollziehen der Ereignisse kann man in den Optionen auch eine Logdatei angeben. Dort wird dann durch das Trayprogramm die Ereignisse wie Start, Stop, Fehler mit Uhrzeit hinterlegt. So könnte man. wenn man möchte, dieses Programm auch auf einem anderen Rechner nutzen und so später nachvollziehen wann der Mediaserver Aufnahmen gestartet oder gestoppt hat. Das macht der Mediaserver auch selber aber wenn z.B. der Strom des PCs auf dem der Mediaservers ausfällt dann kann der auch keine Logdatei schreiben aber auf einem anderen Gerät lässt sich der Verlust der Verbindung nachvollziehen.

Ok - das war jetzt schnell geschrieben und ich hoffe es kommt verständlich rüber.

Share this post


Link to post
gromit

Ja vielen Dank. beim zweiten Durchsehen der MediaServerTray.sln ist mir dann auch aufgefallen, dass es wohl source code für Visual Studio ist wo dann ein EXE rausfliegt.  die Logik ansonsten ist eigentlich selbsterklärend. Ich werde mir mal Visual Studio Code runterladen und ein compile damit versuchen. Melde mich dann wieder wenn es läuft. Vielen Dank noch mal.

Share this post


Link to post
gromit

Hallo, nun ein kleiner Zwischenbericht. Mit der Community Edition von Visual Studio konnte ich ein lauffähiges EXE aus dem GitHub source code kompilieren. Man musste dazu noch einen Schreibschutz aufheben, der auf Grund des Downloads aus einer Internetquelle auf den Ressource-Dateien lag.

Ich habe die command Dateien entsprechend für meine LED Anwendung angepasst und die EXE auf dem Server in den Autostart gelegt. Nach Anpassung der Nutzerrechte funktioniert das jetzt auch nach einem Reboot. Ich hatte auch versucht die Anwendung mit dem SC Befehl als Windows Dienst anzulegen. Das Erstellen des Dienstes hat zwar geklappt, er ließ sich aber dann nicht starten.

 

Daher bleibe ich nun beim Autostart mit einer minimierten Verknüpfung.  Ich kann nun aus den Optionen deiner Mediaservertray- Anwendung auch testweise die LEDs manuell an und ausschalten bzw. in den blink-Zustand bringen. In den Optionen habe ich Localhost oder die IP Adresse samt Passwort und Port zur Serveranwendung welche auf demselben Rechner läuft ausprobiert. Ich habe auch extra noch manuell eine Firewall Regel in Windows 10 für die Mediaservertray-Applikation angelegt.

 

Soweit alles wunderbar, nur das Problem:

Die Trayanwendung bekommt leider nichts davon mit, wenn ich im DVBViewer GUI eine neue Aufzeichnung starte. Im Log sehe ich keinerlei Aktivität. Er scheint also die Änderung des recording Zustands nicht mitzubekommen.

Kann es sein, dass das noch irgendwas mit dem Benutzerkontext zu tun hat, in dem der Server und die Tray-Applikation läuft?  Für Tipps bin ich dankbar. Geht ja schon fast alles. Ist sicher nur eine Kleinigkeit. Danke!

Share this post


Link to post
YARD2

Wenn du den Media Server auf dem gleichen System hast, einfach im DVBViewer die

Recordings zum Media Server schicken Einstellungen -> Optionen -> DVBViewer Media Server.

Dann nimmt alles der DMS auf

http://de.DVBViewer.tv/wiki/Optionen_Recording_Service

 

Edited by YARD2

Share this post


Link to post
DetlefM

Ich konnte nur die API des Mediaservers nutzen. Was der DVBViewer alles tut entzieht sich der Kenntnis der Außenwelt.

Ich habe im Hinterkopf, dass es eine Plugin Architektur für den Viewer gibt - allerdings kenne ich die API nicht. Bzw. habe sie auf die Schnelle nicht gefunden.

Sofern die PlugIn API das hergeben würde könnte man das sicherlich, aber ich denke mit höherem Aufwand. irgendwie als weiteren Service nutzen um

Informationen über den Status des Viewers anzuzeigen.

Wenn. wie Yard2 geschrieben hat, der Viewer daran gehindert wird alleine die Aufnahmefunktion zu machen sondern diese  Aufgabe dem Mediaserver überlässt würde beim nächsten pollen die Tray Applikation das mit bekommen (hoffe ich, nicht ausprobiert).

Share this post


Link to post
Griga
5 hours ago, DetlefM said:

Was der DVBViewer alles tut entzieht sich der Kenntnis der Außenwelt.

 

Der DVBViewer hat ein umfangreiches COM Interface. Darüber lässt sich der Aufnahmestatus vermutlich ermitteln, aber dabei müsste jemand helfen, der sich mit der Materie besser auskennt als ich. Es gibt im Forum auch einiges dazu zu lesen.

 

Auch ein Blick in die startrec.vbs und stoprec.vbs in C:\Program Files (x86)\DVBViewer\Scripts könnte weiterhelfen, oder eine Forumsuche nach den Dateinamen. Die Scripte ruft der DVBViewer bei jedem Aufnahmestart und -stopp auf. Dazu Optionen -> Skripte beachten.

 

Share this post


Link to post
gromit

Den Status von Mediaserver abzufragen passt für mich, da ich sowieso die DVBViewer Client Applikation normalerweise nicht gestartet habe. Ich starte den DVBViewer mit der grünen Mediacentertaste nur wenn wirklich jemand TV schauen will. Ansonsten läuft der PC als Fileserver und soll im Hintergrund seine TV-Aufzeichnungen machen. Das klappt auch alles wunderbar einschließlich Schlafzustand und automatischem aufwecken nach EPG.

 

Allerdings Erkennt die Tray Applikation leider dennoch den Zustand des DVBViewer Media Server nicht. Ich habe es mit und ohne Passwort ausprobiert und auch die Firewall ausgeschalten. Ich habe es bis jetzt allerdings nur mit einer manuell gestarteten Aufnahme probiert und nicht abgewartet was bei einer Timer gesteuerten Aufnahme passiert.

 

Die VBS- Dateien im Script Verzeichnis wären vielleicht auch eine Option. Aber wenn ich es richtig verstanden habe, würden die eben dann von der DVBViewer Client Applikation getriggert und nicht von dem DVBViewer Media Server?

Share this post


Link to post
DetlefM

@gromit Ich denke wir sollten evtl. Bugreports über das github Portal klären - das hat mit dieser Community hier weniger zu tun. Und wahrscheinlich müssen wir Dinge austauschen.

Also melde Dich bei github an falls nicht geschehen und poste einfach Deine Problem unter Issues. 

Ich hoffe ich bekomme eine Mitteilung von github - weil ich das aber das erste Mal mache sende mir bitte hier eine Antwort dann kann ich prüfen ob ich bei github alles richtig eingestellt habe.

Grundsätzlich sollte die Tray App alle Recordingänderungszustände mitbekommen. Sie pollt alle 2 Minuten den Server und fragt nach dem Status. Und in dem Contextmenür der App kann man auch das Log öffnen. Wenn also ein Problem mit falschem Servernamen, Benutzernamen, Passwort oder ähnliches vorliegen sollte würde dort ein Fehlerevent mit einer Fehlermeldung erscheinen.

Share this post


Link to post
nuts

Das von Griga beschrieben COM Interface des DVBViewers ist im hier SDK beschrieben: https://www.dvbviewer.com/de/index.php?page=downloads

 

Der Status lässt sich damit ermitteln (IDVBViewer.isrecording oder so ähnlich) 

Share this post


Link to post
gromit
vor 10 Stunden schrieb DetlefM:

@gromit Ich denke wir sollten evtl. Bugreports über das github Portal klären - das hat mit dieser Community hier weniger zu tun. Und wahrscheinlich müssen wir Dinge austauschen.

Also melde Dich bei github an falls nicht geschehen und poste einfach Deine Problem unter Issues. 

Ich hoffe ich bekomme eine Mitteilung von github - weil ich das aber das erste Mal mache sende mir bitte hier eine Antwort dann kann ich prüfen ob ich bei github alles richtig eingestellt habe.

Grundsätzlich sollte die Tray App alle Recordingänderungszustände mitbekommen. Sie pollt alle 2 Minuten den Server und fragt nach dem Status. Und in dem Contextmenür der App kann man auch das Log öffnen. Wenn also ein Problem mit falschem Servernamen, Benutzernamen, Passwort oder ähnliches vorliegen sollte würde dort ein Fehlerevent mit einer Fehlermeldung erscheinen.

 Alles klar, vielen Dank. Ist aber wohl gar nicht mehr nötig, weil es jetzt zu funktionieren scheint. Möglicherweise war ich einfach nur zu ungeduldig. Ich habe jetzt gesehen das EPG Aufnahmen zum gewünschten Blinken der LED über deine Applikation führen. Es klappt also doch. dass die manuelle Aufnahme von deiner Applikation nicht bemerkt wurde liegt dann sicherlich an den 2 Minuten , die ich wahrscheinlich nicht gewartet habe. Also, vielen Dank schon mal für eure Mühe. Ich lasse das jetzt erstmal so laufen. Endlich kann ich wieder sehen, ob Aufzeichnungen gemacht werden ohne den Bildschirm anzuschalten. Vielen Dank dafür.

Share this post


Link to post
DetlefM

Gut - nur um das klarzustellen (mit der Polling-Time):

Wenn innerhalb der nächsten 2 Minuten kein Timer geplant ist dann fragt sie in 2 Minuten nach.

Ist durch den Mediaserver ein Timer innerhalb der nächsten 2 Minuten geplant dann fragt die App zum Zeitpunkt des Startens des Timers plus ein paar Sekunden nach.

Wenn Du den Button mit dem Aufnahmestart drückst (egal ob nun bei dem Viewer oder dem Mediaserver) dann dauert es halt so 2 Minuten plus Antwortzeit bis der neue Status: "Aufnahme begonnen" bei der App ankommt und die Batchdatei getriggert wird. Gleiches gilt dann auch für den Abbruch der Aufnahme - der kommt dann auch zeitverzögert.

Und ich denke 2 Minuten ist ok - aber jeder kann diese Zeit vor dem Kompilieren anpassen - ich habe sie nicht konfigurierbar gemacht.

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • opowoj
      By opowoj
      Seit heute meldet der Click auf den Recording Service "Kein Zugriff auf den Server". Wie geht man damit um? support.zip wurde hochgeladen.
      Danke für jeden Tipp.
      support.zip
    • vergnuegt
      By vergnuegt
      Hallo,
      ich nutze den DVBViewer seit fast 10 Jahren mit dem RecordingService und - im Gegensatz zu anderen Lösungen - ist das ein extrem gutes und herausragendes Programm!
       
      Ich habe mir auch den Media Server zugelegt, mußte aber unter Windows 10 mit neuer Hardware feststellen, dass ich den Service nicht dauerhaft zum Laufen bekommen habe. Jetzt bin ich in dem Bereich kein "Freak", der sich sooo toll auskennt, vielleicht liegt es auch nur an einer Kleinigkeit, dass das Ganze nur sehr selektiv läuft. Ich bin von einer Technisat Cable Star Combo, die leider unter Win10 nicht mehr läuft auf eine Technotrend-Box TT 4650-CI umgestiegen.
       
      Nach diversen Ausfällen habe ich heute den alten RecordingService wieder installiert. BITTE BITTE, lasst den RecordingService nicht sterben ... für "Puristen" wie für mich, die einfach nur unkompliziert zeitgesteuert Radio- und TV-Sendungen unbeaufsichtigt aufzeichnen wollen, ist der RecordingService ausreichend.
       
      Danke.
      vergnuegt
    • joxx
      By joxx
      Dear team
      I have been using DVBViewer for many years and always loved it from the first day on.
      I just bought Sat>IP on AppStore and also bought the new recording service for my Win 10 Pro DVB Server, but the last Beta (included in DVBViewer Pro) of recording service is still installed. Waiting for the final to be included in my members area - within the next day, as I just bought it some minutes ago.
      It works perfectly using Windows. DVBViewer is the way to go!
      The server is on my public (guests) network, so I had to add it manually in SAT>IP.
      After starting a channel search not much happens, this means no update. Sometimes SAT>IP just fails with a crash of Sat>IP message.
      I'll keep you updated after updating my server to the final.
    • thinksimple
      By thinksimple
      Hallo, habe einen Autotimer wie folgt erstellt:
      Navy CIS: L.A.
       
      Dieser funktioniert aber nicht.
       
       
      Schaue ich in das "Suchen nach" Feld links daneben, wird dort nach folgendem gesucht:
      Navy CIS: LA
       
       
      --> es fehlen die Punkte
       
      Habe versucht den Suchtimer in "" und in ' ' zu setzen, fehler bleibt.
       
       
      Was muss ich in diesem Fall machen, damit der Autotimer korrekt eingetragen wird?
    • fschmitt
      By fschmitt
      Hallo zusammen,
       
      ich habe diese Woche auf DVBViewer-Version 5.3.2.0 und REC-Server 1.30.1 aktualisiert.
       
      Seitdem habe ich das Problem, dass die Timerliste im Client (der auf den Recording-Service zugreift) nicht mehr in Echtzeit aktualisiert wird.
       
      Das bedeutet, wenn ich eine Programmierung erstelle, dass die dann im Client nicht sofort in der Timerliste auftaucht (somit hab ich keine Kontrolle wg.Kollision).
       
      Ich muss erst den Client schliessen, wieder öffnen und sehe dann erst die neu erstellte Programmierung (und ob Sie kollidiert), weil er dann erst aktualisiert.
       
      Lösche ich eine Aufnahmenprogrammierung, diese wird sofort aktualisiert und aus der Liste gelöscht.
       
       
      Das hatte früher beides automatisch geklappt.
       
       
      Kann jemand helfen ?
       
      Gruss Frank
       
       
       
      Zur Erklärung ein Bild:
      links Rec-Server mit 3 Hardware-Karten im Netzwerk /
      Mitte Client-Server, programmiert den Rec-Server via TV-Browser übers Netzwerk/
      rechts Fernseher und mittlerweile eine NAS-Festplatte für die Aufnahmen und eine Amazon FireTV-Box
      Aufbau_SAT_Server.pdf
×
×
  • Create New...