Suche Plugin, um AV-Receiver über Netzwerk zu steuern

  • Hallo allerseits,


    ich suche ein Plugin, bzw. eine Möglichkeit, um meinen AV-Receiver über das Netzwerk anzusteuern.


    Konkret möchte ich Netzaktionen oder Skripte ausführen, wenn die Lautstärke und Mute verändert wird. Eine Lösung über irexec scheidet aus, da ich in der Hauptsache AndroVDR zur Bedienung nutze.


    Gibt es solch ein Plugin, oder ist ein entsprechender Mechanismus anderweitig implementiert?


    Meine Konfiguration ist: YaVDR 0.5, per HDMI an AV-Receiver, Soundausgabe über Receiver, Bild per xineliboutput/vdr-sxfe an Beamer.


    Danke und Gruß,


    vdrstarter

  • hi,


    ich weiß nicht was du dir vorstellst aber der av receiver hat nur begrenze "schnittstellen" über die er gesteuert werden kann, wenn er keine direkte netzwerkschnittstelle hat läuft es im wesentlichen auf ir hinaus
    theoretisch kommen von CEC über HDMI (http://de.wikipedia.org/wiki/Consumer_Electronics_Control) oder bluetooth in betracht aber das müsste der receiver schon aktiv unterstützen und fertige vdr plugins gibts da glaube ich auch nicht, der weg den yavdr geht ist da glaube ich evrntlircd, wenn es da rein passt könnte es sich das immerhin einbinden lassen

  • Der AV-Receiver (Yamaha A810) hat eine Netzwerkschnittstelle und eine Beschreibung des Protokolls habe ich auch. Die Steuerung über Netzwerk ist mit übersichtlichem Aufwand möglich.


    Bleibt damit die Frage, ob es ein Plugin gibt, das auf Lautstärke und Mute reagieren kann und damit Aktionen durchführen kann. Könnte solch ein Plugin vielleicht vergleichbar dem sndctl-Plugin (http://www.vdr-wiki.de/wiki/index.php/Sndctl-plugin) sein?


    Oder ist das Uactivity-Plugin die Lösung? Hat jemand eine kleine Beschreibung dann für das Plugin?


    Danke und Grüße,


    vdrstarter

  • hi,


    würde ich auch so sehen das das Uactivity-Plugin das richtige dafür ist
    wenn du dir ein passendes script basteln kannst das die passende aktion an den receiver sendet sollte man das damit in vdr zuordnen können
    ansonsten frag doch mal "Keine_Ahnung" hier im vdrportal

  • Uactivity ist im Prinzip für sowas gedacht.


    Allerdings ist cStatus (und damit Reaktionen auf Lautsärkeänderungen) noch nicht drin (ist aber geplant). Wobei ich nicht wiess ob man an den Mute Status kommt, cStatus scheint nur die Lautstärke zu liefern. Aber ich schaue mal.


    cu

  • Moin,


    Demnächst wird dbus2vdr die cStatus-Schnittstelle unterstützen und Mute und Lautstärke kann man auch abfragen.
    Die cStatus-Aufrufe werden als dbus-Signale nach außen gegeben, damit kann dann ein externer Daemon reagieren und man ist etwas unabhängiger.


    Dauert aber noch ein paar Tage, da ich mit dem Port nach GDBus noch nicht ganz fertig bin.


    Lars

  • Die cStatus-Aufrufe werden als dbus-Signale nach außen gegeben, damit kann dann ein externer Daemon reagieren und man ist etwas unabhängiger.


    Prima, ich bin schon gespannt was man damit anstellen kann :)

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Demnächst wird dbus2vdr die cStatus-Schnittstelle unterstützen und Mute und Lautstärke kann man auch abfragen.
    Die cStatus-Aufrufe werden als dbus-Signale nach außen gegeben, damit kann dann ein externer Daemon reagieren und man ist etwas unabhängiger.


    Inklusive der Graphtft-Erweiterungen? Ein externes OSD über dbus getriggert, cool, sorry, nur laut gedacht.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • graphtftng ist dann auch jetzt schon multiclient fähig und wenn ich Jörg richtig verstanden habe ist dann auch mit sowas wie eine Ipad app zu rechnen...


    wenn man das Ganze dann mit dbus füttern kann und unabhängig vom OSD ist: umso besser!


    Christian

    CKone: yavdr-ansible/18.04 LTS/2.4.1/kodi18 auf Intel DH67BL, Intel Celeron G540, 2x 2GB Kingston DDR3, Zotac GT630 1GB, S2-1600, Ocz Agility 3 60GB, LG GH24NS DVD, 15.6" Selbstbau TFT, Harmony 665, CIR Selbstbau - das Ganze im Silverstone SST-SG03B
    CKtwo: yavdr-ansible/18.04 LTS/2.4.1/kodi18 auf Intel DH67BL, Intel Celeron G1610, 2x 2GB Corsair DDR3, Zotac GT630 1GB, TT S2-1600, Ocz Vertex 2 50 GB, 92 Kanal Seduatmo, Harmony 665, atric USB
    CKthree: yavdr-ansible/22.04 LTS/2.6.1/kodi19.3 auf Intel NUC, Celeron J4005, UHD Graphics 600, 4GB Crucial DDR4, Ocz Vertex2 50 GB, Harmony 350

    PowerEdge: Ubuntu Server 16.04 LTS / VDR 2.4.1 auf Dell PowerEdge T20, Xeon E3-1225 v3, 16GB ECC DDR3, 2x Cine S2 V6 mit Duoflex, Samsung 840 EVO 120GB, 3x WD White WD80EZAZ 8TB in SW Raid5



  • wenn ich Jörg richtig verstanden habe ist dann auch mit sowas wie eine Ipad app zu rechnen...


    Das würde mir eher nix nützen.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Moin,


    Zurück zum Thema.


    Wenn du die Steuerbefehle für deinen Receiver zumindest in Shellscripte oder ein anderes Programm umsetzen kannst, findet sich schon eine Lösung, wie man die passend aufrufen kann.
    Hast du da mal ein zwei Beispiele, was möglich ist?


    Lars

  • Hallo,


    per Script ist der Receiver gut anzusteuern. Beispiel:


    volup.txt

    Code
    @MAIN:VOL=Up


    Das Steuerungs-Script wäre dann:

    Code
    cat volup.txt | telnet ip 50000


    Keine_Ahnung:
    Was hat es mit dem cStatus auf sich? Goggle hat dazu nichts gewußt und die Sourcen wollte ich nicht ganz durchlesen...


    @alle:
    Wie ist dann die passende Konfiguration von der Sound-Ausgabe? HDMI-Passthrough - was ist das genau?


    Danke und schönen Sonntag,


    vdrstarter

  • Keine_Ahnung:
    Was hat es mit dem cStatus auf sich? Goggle hat dazu nichts gewußt und die Sourcen wollte ich nicht ganz durchlesen...


    Der VDR bietet eine Möglichkeit (halt das besagte cStatus) das sich Plugins über solche Sachen informieren lasssen können.


    Ich baue das in uactivity ein, dann wird bei jeder Volumeänderung (Nachrichten und Umschalten folgen dann auch) ein uactivity status Script aufgerufen. Und dieses könntest du dir dann so einstellen wie du möchtest. Ist im Prinzip simpel.


    Aber wenn du uactivity nutzen willst brauchst du noch einige Tage Gedult, ich habe gestern mein neues (und auch mein erstes) Smartfone bekommen und bin jetzt erstmal abgelenkt ;)


    cu


    PS: Nen Daemon mit dbus2vdr der am dbus lauscht und die Telenetverbindung offen hält wäre natürlich eleganter als Scriptaufrufe und "cat volup.txt | telnet ip 50000". Aber kleine uactivity Scripte sind einfacher für den User als nen Daemon zu scheiben. Such dir aus welchen Weg du gehen willst.

  • Keine_Ahnung:
    Was hat es mit dem cStatus auf sich? Goggle hat dazu nichts gewußt und die Sourcen wollte ich nicht ganz durchlesen...


    Das wäre ja auch ziemlich albern. Ein

    Code
    grep cStatus *

    würde einem das ja ersparen.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Moin!


    PS: Nen Daemon mit dbus2vdr der am dbus lauscht und die Telenetverbindung offen hält wäre natürlich eleganter als Scriptaufrufe und "cat volup.txt | telnet ip 50000". Aber kleine uactivity Scripte sind einfacher für den User als nen Daemon zu scheiben. Such dir aus welchen Weg du gehen willst.


    Ja, da hast du Recht, deshalb starten wir das am besten auch mit kleinen Scripts. Wenn es dann einen Programmierbegeisterten gibt, der das gut findet und weiter ausbauen möchte, können wir immer noch den nächsten Schritt gehen.
    In Python ist das erstaunlich schnell zusammen gezimmert, um auf dbus-Signale zu reagieren. Und mit Qt ist's auch nicht schwer... :)


    Ich will aber deinem uactivity nicht im Weg stehen, es ist immer gut, mehrere Lösungswege zu haben. Und ich brauche ja auch noch ein paar Tage... :)


    vdrstarter:
    zu cStatus:
    Da gibt es u.a. eine Funktion, die jedes mal aufgerufen wird, wenn die Lautstärke sich ändert (siehe status.h in den vdr-Sourcen):

    Code
    virtual void SetVolume(int Volume, bool Absolute) {}
                   // The volume has been set to the given value, either
                   // absolutely or relative to the current volume.


    Das wird dann demnächst per dbus2vdr nach außen getragen, so dass externe Programme darauf reagieren können.
    Und wenn das auch in uactivity eingebaut wurde, wird man jede Lautstärkenänderung an ein Script weiterreichen können.


    Ich bin mal gespannt, ob das performant genug ist, wenn jedes mal ein Script gestartet wird, das dann eine Netzverbindung aufbaut, um den Befehl abzuschicken. Ist schon etwas Overhead für Tastendrücke, die prinzipiell schnell aufeinander folgen können.


    Oder du steigst in die Plugin-Programmierung ein, und baust ein eigenes Plugin. :)
    Kann der Receiver denn mit einer Verbindung umgehen, die offen gehalten wird? Kann man dann mehrere Befehle nacheinander senden?
    Oder hast du einen Link auf Doku?


    Lars.

  • Keine_Ahnung:
    Danke, daß Du uactivity erweiterst. Warten kann ich in Ruhe, bis Du auch mit den Features Nachrichten und Umschalten fertig bist.


    Für mich und meine Anwendung ist das mit den Scripts optimal. Insgesamt finde ich den Ansatz auch maximal flexibel. Dann kann ich hier auch auf einfache Weise Befehlsfolgen einbauen, um bei einer Nutzeraktivität den Receiver zuerst an zu schalten und zu konfigurieren.


    Danke und Gruß,


    vdrstarter

  • Ich will aber deinem uactivity nicht im Weg stehen, es ist immer gut, mehrere Lösungswege zu haben. Und ich brauche ja auch noch ein paar Tage... :)


    dbus2vdr und uactivity haben ja auch sehr unterschiedliche Einsatzbereiche.


    Fürs TV an/-ausschalten oder um das http://www.vdr-wiki.de/wiki/index.php/Statusleds-plugin zu ersetzen ist uactivity IMHO der korrekte Ansatz.


    Um einen Display Daemon zu schreiben und für die AV Receiver Lautstärkeregelung ist ein Daemon am dbus IMHO der richtig Weg.



    Wobei man natürlich auch zusätzlich einen uactivity Daemon schreiben kann (habe ich mir so als ToDo im Hinterkopf gesetzt) der auf dem dbus lauscht und die uactivity Scripte aufruft (dann spart man ein Plugin wenn man eh dbus2vdr am laufen hat). Mir gehts bei uactivity auch eher ums Scriptgerüst (halt das zu normieren (damit Scripte von Usern austauschbar sind) und Beispiele zu liefern) als um das Plugin.


    Ich bin mal gespannt, ob das performant genug ist, wenn jedes mal ein Script gestartet wird, das dann eine Netzverbindung aufbaut, um den Befehl abzuschicken. Ist schon etwas Overhead für Tastendrücke, die prinzipiell schnell aufeinander folgen können.


    Jup, da werde ich dann mal live spielen. Entweder gibts im Plugin nen Filter (max. alle 500ms ein Aufruf) oder im Script.


    Oder du steigst in die Plugin-Programmierung ein, und baust ein eigenes Plugin. :)


    Wobei dbus2vdr, restfulapi und uactivity ja schon Möglichkeiten bieten mal langsam von den 500 Kleinkramplugins wegzukommen ;) IMHO besser sowas zu nutzen als ein weiteres zu schaffen.


    cu

  • Der Receiver hält eine Telnet-Verbindung eine Zeit lang, beendet diese aber nach 1-2 Minuten Inaktivität. Über eine existierende Verbindung kann man mehrere Befehle schicken. Die Befehlsreferenz habe ich hier gefunden: http://files.remotecentral.com…ntage_2010_receivers.html


    Der Receiver gibt auch sehr viel über seinen eigenen Zustand über diese Verbindung preis. Das Einlesen der Informationen im Script ist in meinem Ansatz noch nicht gelöst. Also, die umfassende Lösung könnte schon über Python laufen - aber auch Python ist ein Script. ;)


    Ein Plugin wäre auch eine Möglichkeit - habe ich auch schon überlegt. Der Charme wäre hier, daß man auch Konfigurationsmöglichkeiten ins Menü einbauen könnte. Die Plugins avolctl und sndctl habe ich dazu schon mal begutachtet...


    Also: für die ersten Tests denke ich mal an die Scripterei, dbus explizit mit eingeschlossen.


    Gruß,


    vdrstarter

  • aber auch Python ist ein Script. ;)


    Das ist richtig, aber das kann man als Daemon laufen lassen... :)
    Ich hab kein Problem mit C++, aber für eine Kombination aus DBus und TCP ist mit Python schnell was gemacht, was dann auch tatsächlich funktioniert (inkl. Neuaufbau der TCP-Verbindung usw.).


    Ich sag Bescheid, wenn dbus2vdr so weit ist, dass es cStatus nach außen trägt.


    Für die, die es interessiert (ist noch nicht im master-Branch und die Osd-Signale fehlen noch):
    https://github.com/flensrocker…r/blob/gdbus/status.c#L11


    Lars.

  • Für die, die es interessiert (ist noch nicht im master-Branch und die Osd-Signale fehlen noch):


    Code
    "    <signal name=\"ChannelSwitch\">\n"
        "      <arg name=\"DeviceNumber\"    type=\"i\" direction=\"out\"/>\n"
        "      <arg name=\"ChannelNumber\"   type=\"i\" direction=\"out\"/>\n"
        "      <arg name=\"LiveView\"        type=\"b\" direction=\"out\"/>\n"
        "    </signal>\n"


    Klappt das mit dem LiveView auch mit Software-Frontends?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!