Moin!
Da ich demnächst an einem kleinen Projekt arbeiten möchte, dass die Timer der diversen vdr in einem LAN selbstständig verteilt, musste ich erst mal eine Möglichkeit finden, wie ich mitbekomme, ob da überhaupt ein vdr im Netz ist.
Also hab ich mir avahi mal angesehen und was man damit so machen kann. Herausgekommen ist ein vdr-Plugin, dass von anderen Plugins benutzt, aber auch durch eine Konfigurationsdatei dazu gebracht werden kann, Netzwerkdienste bekannt zu geben. Außerdem lässt sich mit dem Plugin auch nach bestimmten Netzwerkdiensten suchen.
https://github.com/flensrocker/vdr-plugin-avahi4vdr
Man sollte sich ein wenig mit avahi-services auskennen, letztendlich muss ein Service einen Namen, einen Typ und einen Port haben. Zusätzlich kann man noch ein bis mehrere Subtypes definieren und dann noch diverse TXT-Records hinzufügen.
Es gibt zwei Arten, über avahi4vdr einen Dienst zu veröffentlichen:
- per Aufruf von SVDRPCommand ("CreateService")
- per services.conf-Datei im Plugin-Config-Verzeichnis
Beispiel für eine services.conf:
name=SVDRP on %h,type=_svdrp._tcp,port=6419
name=vdr-live on %h,type=_https._tcp,port=8443,subtype=_vdr_live._sub._https._tcp
name=vdr-streamdev-server on %h,type=_http._tcp,port=3000,subtype=_vdr_streamdev_server._sub._http._tcp
Wenn man dann in einer Shell z.B.
laufen lässt, dann sieht man beim Starten/Stoppen des vdr, wie die Dienste erscheinen und wieder weggehen.
Um z.B. vdr-live zu finden, kann man nach dem speziellen subtype suchen lassen:
Um mit avahi4vdr nach einem Dienst zu suchen, muss man einen Browser anlegen, das macht man ebenfalls per SVDRPCommand und dem Befehl "CreateBrowser". Wenn der was findet, wird die Service-Funktion des aufrufenden Plugins mit einem entsprechendem Event aufgerufen.
Einfach mal ins README schauen. Wer sich für das Plugin interessiert und Fragen hat, einfach fragen...
Mein erster Anwendungsfall: dbus2vdr hat vor kurzem eine zusätzliche Option bekommen, mit der ein paar Methoden über einen zweiten dbus-daemon aufgerufen werden können. Dieser lauscht auf einem TCP-Port und ist somit über's Netz erreichbar. Da dbus da aber nicht so 100% für gedacht ist, gibt's leider (noch) keine Authentifizierung und dergleichen. Deshalb wird über diesen dbus-daemon nur "ungefährliches" veröffentlicht: man kann (bisher) die Timer und die Aufnahmenliste abfragen. Und damit ein anderer vdr den automatisch findet, wenn der eingeschaltet wird, wollte ich eben avahi benutzen. Ob das alles so klappt, wie ich mir das vorstelle, weiß ich noch nicht, aber ich bin zuversichtlich...
Have fun!
Lars.