VCR.NET 4.1 – Kontrollzentrum, Schlafzustand und Web Dienste

VCR.NET 4.1 wird keine der früheren SOAP basierten Web Schnittstellen mehr anbieten. Daher muss sich nun unter anderem auch das VCR.NET Kontrollzentrum einer anderen Art der Kommunikation bedienen – das Kontrollzentrum ist die Anwendung, die der Anwender als normalerweise farbig hinterlegtes Kamerasymbol im System Tray von Windows sieht. Weitestgehend konnte ich mich dabei auf die neuen REST Diensten stützen, die für den neuen Web Client sowieso benötigt werden. Eine Ausnahme ist dabei allerdings der automatische Übergang in den Schlafzustand, der nach abgeschlossenen Aufzeichnungen oder Aufgaben ausgelöst werden kann. Dazu hier ein wenig Hintergrundinformationen und eine kurze Vorstellung der vom Kontrollzentrum eingesetzten Methoden.

Wenn der VCR.NET Recording Service nach einer Aufzeichnung oder Aufgabe feststellt, dass keines der zugeordneten Geräte mehr in Benutzung ist, so wird intern vermerkt, dass ein Übergang in den Schlafzustand durchgeführt werden kann – natürlich nur, wenn die Konfiguration es gestattet, einen solchen Übergang auszuführen. Nun ist es aber möglich, dass ein solcher Übergang nicht unmittelbar möglich ist: pro Aufzeichnung (und Aufgabe) können so genannte Erweiterungen definiert werden, die zu einem bestimmten Zeitpunkt während der Durchführung der Aktivität als separate Windows Prozesse gestartet werden. Ich selbst nutze etwa das LIVE Demux intensiv, das bereits beim Starten einer Aufzeichnung den Demux Vorgang via ProjectX aktiviert und diesen dann parallel zur Aufzeichnung kontinuierlich durchführt. Allerdings hat diese Erweiterung auch nach Ende der Aufzeichnung eine gewisse Nachlaufzeit, die der VCR.NET Recording Service vor dem Übergang in den Schlafzustand abwartet.

Kommt es dann nun endlich an den Punkt, an dem ein Übergang in den Schlafzustand durchgeführt werden darf, so prüft VCR.NET trotzdem noch, ob Anwender interaktiv am System angemeldet sind. Ist dies der Fall, so wird der Übergang nicht durchgeführt – die Prüfung wird frühestens mit dem Ende der nächsten Aufzeichnung oder Aufgabe wiederholt. An dieser Stelle kommt nun das VCR.NET Kontrollzentrum ins Spiel.

Das Kontrollzentrum ruft periodisch den REST Web Service Info (http://rechner/vcr.net/info) via GET auf und erhält dann folgende Informationen:

  • hibernationPending: ist gesetzt, wenn ein Schlafzustand grundsätzlich ansteht.
  • extensionsRunning: ist gesetzt, wenn irgendwelche Erweiterungen aktiv sind.

Je nach Konfiguration des Kontrollzentrums erkennt dieses daraus, wenn der VCR.NET Recording Service in den Schlafzustand wechseln möchte – dies aber nicht kann, weil ja mindestens der Anwender interaktiv angemeldet ist, in dessen Namen es selbst ausgeführt wird. In einem ersten Schritt wird über ein POST auf den REST Web Dienst Hibernate (http://rechner/vcr.net/hibernate?reset) VCR.NET mitgeteilt, dass der Übergang in den Schlafzustand nun durch das Kontrollzentrum geregelt wird – der VCR.NET Recording Service setzt daraufhin die interne Markierung zurück. Das Kontrollzentrum öffnet gleichzeitig den sicher bekannten Dialog, der den Übergang in den Schlafzustand ankündigt.

Wird dieser Dialog vom Anwender nicht im konfigurierten Zeitraum geschlossen, so löst das Kontrollzentrum den Schlafzustand durch ein weiteres POST auf den Hibernate Web Dienst (http://rechner/vcr.net/hibernate?hibernate) nun endgültig aus. Dieser Vorgang wird allerdings verzögert, so lange VCR.NET meldet, dass Erweiterungen aktiv sind.

Im Endeffekt läuft die gesamte Steuerung des Schlafzustands für den Fall interaktiver Anwender also im Wesentlichen über 3 einfache Aufrufe der VCR.NET 4.1 Web Dienste. Es sollte daher auch kein Problem sein, diese Funktionalität in eigene Anwendung zu integrieren und an die eigenen Bedürfnissen anzupassen, wenn der relative starre Mechanismus des VCR.NET Kontrollzentrums nicht ausreichen sollte.

Viel Spaß

Jochen

VCR.NET 4.1 – Protokolle und anderer Kleinkram

Die funktionale (nicht optisch / technische) Umstellung des Web Clients ist nun soweit abgeschlossen. Für die bisherigen separaten Seiten zum Starten einer Aktualisierung von Programmzeitschrift oder Quellenlisten (aka Sendersuchlauf) habe ich eine minimalistische Lösung gewählt: diese vermutlich eher selten verwendeten Aktionen sind nun direkt in die Startseite des VCR.NET Recording Service integriert – natürlich nur sichtbar, wenn man den entsprechenden Verweis aktiviert:

Aktualisierung starten

Bei der Ansicht der Protokolle hat sich funktional kaum etwas getan. Wie an vielen anderen Stellen sind nun sowohl die Hilfe als auch die Detailanzeige in die Liste integriert. Den Abruf von Aufzeichnungen aus dem Web Client heraus habe ich in die Detailansicht verschoben.

Protokolle

So Long

Jochen

Wie alles begann – oder: Happy Birthday VCR.NET!

Ende 2002 traf ich den folgenschweren Entschluss, mir eine digitale TV Karte anzuschaffen. Das hauptsächliche Ziel war damals wie heute das Aufzeichnen von Sendungen über den Rechner. Diese Mail bekam ich dazu am 1. Januar 2003 von Mindfactory;

Bestellbestätigung

Die mitgelieferte Software von Hauppauge / TechnoTrend erwies sich als ziemlich gruselig, so dass ich mich schnell nach Alternativen umsah. Gelandet bin ich dann erst einmal bei WatchTV Phoenix, was sich allerdings als recht instabil und für meine Zwecke ungeeignet erwiesen hat: Aufzeichnungen im Hintergrund waren von der Konfiguration her eine Zumutung. Zudem habe ich durch Recherchen im Internet und diversen Foren schnell gemerkt, dass ich mit der Nexus (S-2300) für meine Zwecke eigentlich auf das völlig falsche Pferd gesetzt habe: durch die proprietäre Schnittstelle und fehlende BDA Unterstützung wurde die Hardware von verfügbaren TV Programmen nur sehr unzureichend genutzt.

Als Softwareentwickler stellt man sich einer solchen Herausforderung aber natürlich sofort: nach Erhalt des SDKs von TechnoTrend habe ich eine erste .NET Anbindung erstellt: DVB.NET 1.0 – das war dann auch mein wesentliches Lehrprogramm zur Einarbeitung in .NET und vor allem C#. Im Mai 2003 hatte ich dann endlich ein Werkzeug, dass genau das konnte, was ich damals brauchte – inzwischen sind die Anforderungen natürlich erheblich gestiegen: VCR.NET 1.0. So sieht der Download der allerersten öffentlichen Version aus:

Das erste Setup

Nun, seitdem ist viel passiert. Das will ich aber hier nicht weiter ausbreiten. Nur so viel: herzlichen Glückwunsch zum 10ten, VCR.NET!

Der Kuchen

VCR.NET 4.1 – Administration und Konfiguration

Die in den Web Client integrierte Administration der Betriebsparameter sieht etwas anders aus als früher, das Prinzip ist aber sehr ähnlich geblieben. Wie bei dem Web Service beschrieben bietet der VCR.NET Recording Service einzelne Bereiche der Gesamtkonfiguration gesondert zur Pflege an. In der aktuellen Version des Web Clients wird dies allerdings noch nicht ausgenutzt – vermutlich wird sich da vor 4.2 auch nichts mehr tun. Zurzeit liest der Web Client beim Aufruf der Administrationsseite die gesamte Konfiguration ein, was zu einer zwar nur kurzen aber merklichen Startverzögerung führt. Halbherzig umgesetzt ist auch das Speichern, das immer nur pro Bereich erfolgt – i.e. gleichzeitige Änderungen anderer Bereiche gehen dabei verloren. Ich glaube aber, für diesen ersten Schritt der da VCR.NET 4.1 heißt sollte das ausreichend sein – so oft braucht man die Administration ja nicht wirklich.

Es gibt nun eine einzige Administrationsseite, die eine leichte Navigation zwischen den Bereichen erlaubt. Ich werde versuchen, durchgängig das auch in anderen Teilen des Web Clients verwendete Konzept der aufklappbaren Inline Hilfe durchzuziehen – Teile der FAQ werden dann obsolet und direkt auf die entsprechenden Seiten verweisen:

Navigation in der Administration

Ich habe auch zumindest versucht ein wenig die Möglichkeiten der neuen Client Technologie zu nutzen. So war es etwa relativ einfach, die Aufzeichnungsparameter der Geräte direkt hier im Web Client des VCR.NET zur Pflege anzubieten – bisher ging das nur über DVB.NET selbst:

Geräteprofile pflegen

Die Beschränkung der Aktualisierung von Programmzeitschrift und Liste der Quellen (Sendersuchlauf) auf vier Stunden des Tages wurde aufgehoben und ich glaube sogar, eine ganz nette Alternative zu den erbärmlichen Auswahllisten gefunden zu haben:

Stundenmuster festlegen

Ansonsten sind nur einige Kleinigkeiten herum gekommen, wie etwa die Zusammenfassung der beiden Parameter zur Nutzung des Schlafzustands in einer einzigen Auswahlliste:

Schlafzustand einstellen

Ich denke da ist für die Zukunft noch eine ganze Menge Potential drin um die Pflege der Betriebsparameter deutlich zu vereinfachen. Aber ehrlich gesagt ist die Priorität dieses Bereichs von VCR.NET recht gering – Hauptsache, es funktioniert. Denn: die meisten Anwender werden wohl nur einmal direkt nach der Installation hier vorbeischauen und das war es dann auch schon.

Schauen wir mal, was die Zukunft bringt

Jochen

VCR.NET 4.1 – Konfiguration über den REST Web Service

Das Auslesen und Ändern der Konfiguration der VCR.NET Recording Service erfolgt über den REST Service Configuration, Anfragen werden nur für VCR.NET Administratoren ausgeführt. Ich habe mich entschieden zu diesem Zweck einen einzigen Endpunkt anzubieten, die Konfiguration selbst aber trotzdem in einzelne Bereiche zu unterteilen – für VCR.NET 4.1 exakt entsprechend der Aufteilung der Administration im Web Client von VCR.NET 4.0 und früher. Neben einigen Sonderaufgaben wie der Abfrage der Verzeichnisstruktur des Rechners, auf dem der VCR.NET Dienst ausgeführt wird, erfolgen Aufrufe immer in folgender Notation:

  • Ein GET auf http://server/VCR.NET/configuration?aspekt meldet die aktuellen Konfigurationsdaten zu einem bestimmten Aspekt der Gesamtkonfiguration.
  • Mit einem PUT auf genau die selbe Adresse werden die neuen Konfigurationsdaten in die Gesamtkonfiguration übernommen. Diese Daten werden dem Inhalt des HTTP Aufrufs entnommen.

VCR.NET 4.1 wird folgende Aspekte unterstützen:

  • directory: die Liste der Aufzeichnungsverzeichnisse und das Muster für die Namen der Aufzeichnungsdateien.
  • guide: die Einstellungen für die Aktualisierung der Programmzeitschrift, also etwa der Zeitplan und die maximale Dauer.
  • devices: die Liste der DVB.NET Geräte, die der VCR.NET Recording Service benutzen darf. Hier können nun auch direkt aus der Web Oberfläche heraus die wichtigsten Aufzeichnungsparameter eines Gerätes festgelegt werden – wie etwa die Planungspriorität.
  • security: die Windows Gruppen zur Identifikation von VCR.NET Benutzern und Administratoren.
  • scan: alles zur Aktualisierung der Liste der Quellen (Sendersuchlauf).
  • other: der ganze Kleinkram, bei dem sich eine weitere Unterteilung nicht mehr lohnte. Hier finden sich zum Beispiel die Konfigurationsdaten des Web Servers selbst aber auch die Einstellungen zur Nutzung des Schlafzustands.

Viel Spaß

Jochen