Mit Yatse die Lautstärke eines AVR steuern

  • Servus,

    hoffentlich ist dieser Post für einige hilfreich, ich hatte zumindest diesen Workaround nicht gefunden. Folgende Lösung ist durch mich noob-geprüft ;) und funktioniert seit einigen Tagen zuverlässig, deshalb poste ich das einfach mal...
    Folgendes beschreibt, wie man die Lautstärkeregelung von Yatse "umbiegt", um damit zB ein Event für Eventghost zu erzeugen, um damit einen externen Verstärker steuern zu können.

    Hier habe ich das mit Windows und Eventghost realisiert, aber sinngemäß funktioniert das auch auf Linuxsystemen.

    Also:
    Die Lautstärkeregelung von Yatse kann über die[definition=2,0][definition='3','0']keymap[/definition][/definition] "remote.xml" beeinflusst werden.

    Anmerkung: Die "Music Pump XBMC remote" nutzt übrigens die "joystick.WiiRemote.xml" und ermöglicht das gleiche analog.

    Daher in der remote.xml (bevorzugt in den userdata!) folgendes eintragen bzw ergänzen oder ändern:
    <[definition=2,1][definition='3','0']keymap[/definition][/definition]>
    <global>
    <remote>
    <volumeplus>XMBC.NotifyAll(Volume,Lauter)</volumeplus>
    <volumeminus>XBMC.NotifyAll(Volume,Leiser)</volumeminus>
    </remote>
    </global>
    </[definition=2,1][definition='3','0']keymap[/definition][/definition]>

    Anmerkung: Der Befehl "NotifyAll" steht wohl erst seit Gotham zur Verfügung.

    Ab hier müssen sich Linux-User selber helfen. Vielleicht könnte jemand in einem Folgepost dazu die Anleitung geben ;)

    So, nun muss diese Notifikation natürlich von EG empfangen werden. Dafür ist das XBMC2 Plugin (die experimentelle Version, bei mir 0.6.14 Edit: für kodi ist die Version 0.6.17 nötig) sehr praktisch und die meisten haben es wahrscheinlich sowieso installiert.
    In den Settings des XBMC2Plugins muss in den "Event Settings" "JSON-RCP notifications" enabled sein (Standard-Port ist 9090).

    Das war's im Grunde auch schon. Wenn jetzt im Yatse die Lautstärketasten betätigt werden, bekommt man im EG das entsprechende Event, das einfach passend verknüpft werden muss. XBMC reagiert übrigens dann nicht mehr auf die Lautstärkeregelung.

    Anmerkung: Um die Hardware-Lautstärketasten des Android-Gerätes nutzen zu können, muss im Yatse folgendes gemacht werden: Einstellungen -> Erweiterte Einstellungen -> "Lautstärketasten zeigen Dialog" muss deaktiviert werden, warum auch immer :)

    Ich fand diesen Weg einfacher zu realisieren als andere Lösungen, die ich so gefunden habe. Wie sauber das nun ist oder ob man es noch eleganter hinbekommt....? Anmerkungen sind willkommen!

    Vielen Dank an alle, die diese tollen Softwarepakete entwickeln und zur Verfügung stellen!

    Gruß
    Illuminator

    Ergänzung:
    Seit kodi ist eine neuere Version des XBMC2-Plugins nötig, damit alles einwandfrei funktioniert.
    Mit allen Versionen ab 0.6.17 sollte es einwandfrei laufen.

  • hey,

    sehr gute Lösung, genau das habe ich gesucht weil ich vor dem gleichen Problem stehe. Möchte nicht immer umständlich von Yatse zu EGremote wechseln, wenn ich die Lautstärke am AVR ändern will.
    Funktioniert hier leider nicht so richtig bzw. nur wenn ich nach dem Starten von Kodi EventGhost neu starte.
    Wenn EventGhost läuft (was ja idR immer der Fall ist) und danach Kodi gestartet wird funktioniert es hier leider unerklärlicherweise nicht.
    Ich habe alles mögliche probiert aber kriege das nicht hin. Welche anderen Lösungen hast du noch gefunden?
    Ich habe das zB mit "System.Exec" in der remote.xml und einem Script realisiert welches das EG event auslöst, hat aber mehrere Nachteile, hohe Latenz und Kodi wird kurz minimiert und danach wieder maximiert... sehr unschön.

  • Ich hab das damals mit einem kleinen Tool gelöst, das einen UDP Socket bereit stellt und alle Kommandos außer Lautstärke, Richtungstasten, Click und Double Click unverändert an XBMC umleitet. Beim Erhalt eines dieser Kommandos wird dann die entsprechende Aktion ausgelöst, wie Mauszeiger verschieben wenn XBMC minimiert ist oder eben halt der AVR über das Netzwerk angesprochen.
    Damit das allerdings funktioniert muss in Yatse die Einstellung "Lautstärketasten zeigen Dialog" deaktiviert sein. Dann erhält man auch die UDP Pakete.
    Wenn man so ein Programm dann noch um Startparameter erweitert, kann man auch über die Harmony oder über die Tastatur die Lautstärke des AVRs regeln.

    System.Exec minimiert XBMC. Das ist leider fix im Core. Um das zu umgehen, kannst du allerdings ein Python Skript mit dem subprocess Modul (subprocess.Popen) verwenden.

  • Moin,
    das Problem, dass EG neu gestartet werden muss, habe ich leider seit kodi auch. Mit Gotham hat es immer einwandfrei funktioniert :(
    Ich hab mich noch nicht weiter darum gekümmert, eine Möglichkeit wäre vielleicht, EG neu starten zu lassen (durch EG), wenn kodi gestartet wird, evtl. mit ein paar Sekunden Verzögerung. Ist zwar unschön, sollte aber funktionieren.
    Schöner wäre es natürlich, die Ursache des Problems, bzw. die Änderung von Gotham zu kodi herauszufinden, die für dieses unerwünschte Verhalten zuständig ist... aber das kann ich leider nicht.

    Gruß
    Illuminator

  • 4lb3rtO:
    so ganz hab ich das nicht kapiert.
    Also du hast eine Art proxy-tool und statt dem port vom xbmc-host trägst du in yatse den port von deinem proxy tool ein, und das leitet einfach alles weiter bis auf die Dinge die du geändert haben möchtest?
    Ist mir ein bisschen zu viel Aufwand, dann lieber die python script Methode. Leider kenn ich mich überhaupt nicht mit python aus, hast du ein Beispiel wie sowas aussehen würde? Könnte ich mit subprocess.Popen auch
    Parameter an die EventGhost.exe übergeben? D.h. -e "EventName" um direkt das event auszulösen ohne dass ich ein zusätzliches script bräuchte?

  • Moin,
    das Problem, dass EG neu gestartet werden muss, habe ich leider seit kodi auch. Mit Gotham hat es immer einwandfrei funktioniert :(
    Ich hab mich noch nicht weiter darum gekümmert, eine Möglichkeit wäre vielleicht, EG neu starten zu lassen (durch EG), wenn kodi gestartet wird, evtl. mit ein paar Sekunden Verzögerung. Ist zwar unschön, sollte aber funktionieren.
    Schöner wäre es natürlich, die Ursache des Problems, bzw. die Änderung von Gotham zu kodi herauszufinden, die für dieses unerwünschte Verhalten zuständig ist... aber das kann ich leider nicht.

    Gruß
    Illuminator

    Das mit EG neu starten kam mir auch ganz kurz in den Sinn, ist aber eine sehr unschöne Lösung wie ich finde.

  • Also du hast eine Art proxy-tool und statt dem port vom xbmc-host trägst du in yatse den port von deinem proxy tool ein, und das leitet einfach alles weiter bis auf die Dinge die du geändert haben möchtest?

    Exakt erfasst...

    Leider kenn ich mich überhaupt nicht mit python aus, hast du ein Beispiel wie sowas aussehen würde? Könnte ich mit subprocess.Popen auch
    Parameter an die EventGhost.exe übergeben? D.h. -e "EventName" um direkt das event auszulösen ohne dass ich ein zusätzliches script bräuchte?

    Das sollte machbar sein... Hier mal ein Beispiel, wie ich mein Tool aus XBMC heraus mit Tasten der Fernbedienung oder dem Keyboard aufrufe...

    from subprocess import Popen
    from sys import argv
    Popen(['C:\Users\...\AppData\Roaming\XBMC\TOOLS\AVR\Project1.exe', sys.argv[1]], shell=False)

    Dann kann man das ganze zB so...
    <plus>RunScript(special://home/TOOLS/AVR/Helper.py, -VolumeUp)</plus>
    ...auf eine Taste legen und aufrufen...

    Wie du Sondertasten auf dem Keyboard (Vol+ Tasten bspw) belegen kannst, habe ich mal ab hier beschrieben...


    Edit:
    Eine weitere Möglichkeit wäre zB auch die Verwendung eines Arduinos o.ä. (über die serielle Schnittstelle) oder mit einem Ethernet Shield + einer Infrarot Diode... Dann könnte man auch ältere bzw nicht über das Netzwerk ansprechbare Geräte ansteuern... Sowas hatte ich zB mal für den Fernseher angedacht, da sich die dämliche Kiste nicht per WOL Paket oder ähnlichem wecken lässt...

  • danke für das beispiel, werde das gleich direkt mal versuchen umzusetzen. :)

    Die TV-Problematik kenne ich von meinem Panasonic, der lässt sich auch nicht wecken und das Netzwerk interface ist aus wenn der im standby ist, anders als bei meinem AVR. Habe das dann mit einem Raspberry gelöst der per HDMI daran hängt, ein script darauf schaltet den TV per HDMI-CEC an.

  • Ja, auch ne Möglichkeit. Ich habe es nun mit dem python script auch gelöst, und zwar so:

    remote.xml:

    Code
    <volumeplus>RunScript(C:\cmd.py,VolumeUp)</volumeplus>
    <volumeminus>RunScript(C:\cmd.py,VolumeDown)</volumeminus>

    sowie

    cmd.py:

    Python
    from subprocess import Popen
    from sys import argv
    Popen(['C:\Program Files (x86)\EventGhost\EventGhost.exe', '-e', argv[1]], shell=False)
  • @whizter und andere
    Funktioniert bei Dir die Lautstärkeregelung über YATSE/ EG beim Musikhören im Vollbild mit angezeigten Lyrics?
    Ausgerechnet in dieser Situation geht es bei mir nämlich nicht. Verlasse ich das Vollbild, ist wieder alles normal und regelbar.

  • Hab das mal ausprobiert, da ich auch EG nutze.

    Die Events kommen aus Yatse auch bei EG an, heißen jedoch alle gleich.

    Bei Volume Up kommt folgendes an:
    XBMC2.Application.OnVolumeChanged (u'muted': False, u'volume': 100)

    Bei Volume Down verringert sich nur der Wert neben u'volume', also z.B.:
    XBMC2.Application.OnVolumeChanged (u'muted': False, u'volume': 98.888885498046875)

    Bei Mute kommt z.B.:
    XBMC2.Application.OnVolumeChanged (u'muted': True, u'volume': xx.xxxxxxxxxxxxxxxxxx)

    Problem:
    Beim Hinzufügen eines Events zu einem Makro, eben für Lauter, Leider und Mute meines Amps (dann per IR) kommt ja nur der Teil vor der Klammer an, also:
    XBMC2.Application.OnVolumeChanged

    Sprich das Event ist immer identisch, ich kann also nicht unterscheiden.

    Wie ist das bei Euch?

    Oder mach ich was falsch?

  • @whizter und andere
    Funktioniert bei Dir die Lautstärkeregelung über YATSE/ EG beim Musikhören im Vollbild mit angezeigten Lyrics?
    Ausgerechnet in dieser Situation geht es bei mir nämlich nicht. Verlasse ich das Vollbild, ist wieder alles normal und regelbar.

    bei mir geht das. Verstehe auch nicht was das mit fullscreen zu tun haben soll. Ich nutze allerdings diesen semi-fullscreen modus (fullscreen window), weil sonst mein Ambilight nicht funzt.

  • Hast du die remote.xml entsprechend angepasst wie im ersten post? Dann müsste nämlich sowas wie "XBMC2.Other.Lauter" als event ankommen.

  • Jo, meine remote.xml siegt genau so aus, wie im 1. Post, hab sie daher, also für volumeplus/volumeminus:

    <volumeplus>XMBC.NotifyAll(Volume,Lauter)</volumeplus>
    <volumeminus>XBMC.NotifyAll(Volume,Leiser)</volumeminus>

    Bei mir kommt immer XBMC2.Application.OnVolumeChanged an.

  • hey,

    sehr gute Lösung, genau das habe ich gesucht weil ich vor dem gleichen Problem stehe. Möchte nicht immer umständlich von Yatse zu EGremote wechseln, wenn ich die Lautstärke am AVR ändern will.
    Funktioniert hier leider nicht so richtig bzw. nur wenn ich nach dem Starten von Kodi EventGhost neu starte.
    Wenn EventGhost läuft (was ja idR immer der Fall ist) und danach Kodi gestartet wird funktioniert es hier leider unerklärlicherweise nicht.
    Ich habe alles mögliche probiert aber kriege das nicht hin. Welche anderen Lösungen hast du noch gefunden?...

    Die Lösung dafür ist ein Update des XBMC2 Plugins, hier beschrieben und zu finden:
    http://eventghost.org/forum/viewtopi…e8d8&start=1020

  • Jo, meine remote.xml siegt genau so aus, wie im 1. Post, hab sie daher, also für volumeplus/volumeminus:

    <volumeplus>XMBC.NotifyAll(Volume,Lauter)</volumeplus>
    <volumeminus>XBMC.NotifyAll(Volume,Leiser)</volumeminus>

    Bei mir kommt immer XBMC2.Application.OnVolumeChanged an.

    Spät aber doch :thumbup:

    Hatte das gleiche Problem, jetzt funktinoierts aber.
    Hast du In Yatse unter den erweiterten Einstellungen Den Lautstärke Dialog deaktiviert?
    Dies war ein Grund.

    Der nächste war das VolumePlus nicht funktionierte, aber VolumeMinus.
    Der Grund dafür war, ich hatte mir den XML Code aus dem ersten Post kopiert.
    Da dürfte irgendein Sonderzeichen drinnen sein das Kodi nicht schmeckt.
    Habe mir dann die Zeile von Volumeminus kopiert und die VolumePlus überschrieben.
    Danach manuell abgeändert und jetzt funktionierts :rolleyes:

    Kann nun die TV Lautstärke über Yatse -> Kodi -> Eventghost -> USBUIRT -> LG TV steuern :thumbup:

    pOpY

Jetzt mitmachen!

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