Yamaha-_Receiver einschalten, Netradio-Lesezeichen

Begonnen von Bartimaus, 07 Februar 2014, 19:32:44

Vorheriges Thema - Nächstes Thema

Markus Bloch

Nunja, mit einem Einzeiler ist das nicht zu machen. Aber man könnte das mittels Kombination aus dummy und notify lösen:

define Shortcut dummy
attr Shortcut setList startNetRadio
attr webcmd startNetRadio

define notfiy_Shortcut notify Shortcut:startNetRadio {startNetRadio()}

Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Lucer

Hallo :)
Ich möchte auch einen Schalter (Web Button) in meinem "room YAMAHA_AV"  anlegen mit dem ich den Befehl {startNetRadio()} ausführe !
Die 99_myUtils.pm ist angelegt für die Befehlsfolge um auf den gewünschten netRadio Sender zu springen. :)
gebe ich den Befehl "{startNetRadio()}"in die Eingabe ein startet der Receiver bis zum gewünschten Sender :)
mit dem Timerbefehl funktioniert es auch wunderbar.  :)

Also ist die größte Arbeit schon gemacht!

Ich poste hier mal meine YAMAHA_AV.cfg !!!

#########################################################
######-------Yamaha AV- Reciever--------------------------------------------------######
#########################################################
     
###- Wenn keine Zone angegeben ist, wird standardmäßig "mainzone" verwendet-###

define AV_Receiver YAMAHA_AVR 192.168.178.18
attr AV_Receiver model RX-V673
attr AV_Receiver room YAMAHA_AV
attr AV_Receiver volume-smooth-change 1
attr AV_Receiver webCmd on:off:volume:input:remoteControl

###----Starte nach Timer-----###
at 19:40 {startNetRadio()}

###---ENDE---#############################

Mit diesem Befehl bekomme ich es nicht hin!
siehe hier !  ???

############################################
define Shortcut dummy
attr Shortcut setList startNetRadio
attr AV_Receiver webCmd startNetRadio
define notfiy_Shortcut notify Shortcut:startNetRadio {startNetRadio()}
############################################

was mache ich da falsch?? :-\ :-\






Markus Bloch

Zitat von: Lucer am 21 Februar 2014, 15:52:27

Mit diesem Befehl bekomme ich es nicht hin!
siehe hier !  ???

############################################
define Shortcut dummy
attr Shortcut setList startNetRadio
attr AV_Receiver webCmd startNetRadio
define notfiy_Shortcut notify Shortcut:startNetRadio {startNetRadio()}
############################################

was mache ich da falsch?? :-\ :-\

Muss das nicht auch so aussehen:

define Shortcut dummy
attr Shortcut setList startNetRadio
attr Shortcut webCmd startNetRadio

define notfiy_Shortcut notify Shortcut:startNetRadio {startNetRadio()}


Und bitte verwende für Code-Schnipsel und Konfig-Auszüge immer die Option "Code Einfügen" (In der Formatierungsleiste der "#"-Button). Sonst blickt man da garnicht mehr durch.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Lucer

Danke für die Hilfe :)
stimmt mein Code war falsch jetzt gehts!
hatte den Code verändert weil ich den nicht im room YAMAHA_AV hatte.
Ich habe das jetzt unter Unsorted gefunden und in room YAMAHA_AV verschoben!

:) :)

Lucer

Eine Sache gelöst möchte man schon das nächste hinzufügen ???
Ich möchte auf meiner Seite "room YAMAHA_AV" den Titel der gerade im Receiver gespielt wird
anzeigen.
Auf der Seite Internals bei Readings ist der Titel unter currentTitle zu sehen!
Frage: wie bekomme ich das Reading currentTitle im room YAMAHA_AV dargestellt?
habe ein paar screenshots angehängt und meine YAMAHA_AV.cfg

######-------Yamaha AV- Reciever------######
############################################

     
#--- Wenn keine Zone angegeben ist, wird standardmäßig "mainzone" verwendet

define AV_Receiver YAMAHA_AVR 192.168.178.18
attr AV_Receiver model RX-V673
attr AV_Receiver room YAMAHA_AV
attr AV_Receiver volume-smooth-change 1
attr AV_Receiver webCmd on:off:volume:input:remoteControl

### startNetradio auf Antenne Bayern Top 40 - siehe 99_myUtils.pm----#####

define Antenne dummy
attr Antenne room YAMAHA_AV
attr Antenne setList Antenne
attr Antenne webCmd start_Antenne
define notfiy_Antenne notify Antenne:start_Antenne {startNetRadio()}

###----Starte nach Timer-----###
#at 19:40 {startNetRadio()}


#--- Definition der zweiten Zone
define AV_Receiver_Zone2 YAMAHA_AVR 192.168.178.18 zone2
attr AV_Receiver_Zone2 model RX-V673
attr AV_Receiver_Zone2 room YAMAHA_AV
attr AV_Receiver_Zone2 volume-smooth-change 1






Markus Bloch

Schau dir mal das Modul readingsGroup von justme an. Das ist für sowas da.

Allerdings kann ich dir dazu nicht weiter helfen, da ich es selbst nicht nutze ;-)

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Schlimbo

Zitat von: Bartimaus am 08 Februar 2014, 12:12:57
Hab das jetzt mal als Zwischenlösung genommen.

sub startNetRadio
{
  fhem "set AV_Receiver on";
  sleep 2;
  fhem "set AV_Receiver input netradio";
  sleep 2;
  fhem "set AV_Receiver remoteControl enter";
  sleep 2;
  fhem "set AV_Receiver remoteControl down";
  sleep 2;
  fhem "set AV_Receiver remoteControl down";
  sleep 2;
  fhem "set AV_Receiver remoteControl down";
  sleep 2;
  fhem "set AV_Receiver remoteControl enter";
  sleep 2;
  fhem "set AV_Receiver mute on";
  sleep 2;
  fhem "set AV_Receiver_Zone2 on";
  sleep 5;
  fhem "set AV_Receiver off";
  }

Aber schöne wäre eine Schaltung ohne Main-Zone....  ;)

Hallo Markus,

ich grabe das Thema noch mal aus.

Bin gerade dabei eine Lösung zu finden den Netradio der Zone2 zu steuern, ohne dabei über die Main Zone zu gehen.
Die Smartphone App kann das ja auch, also muss es ja einen Möglichkeit geben.

was ich bis jetzt heraus gefunden habe ist, das ich mit "GET"><NET_RADIO><List_Info>GetParam</List_Info></NET_RADIO></YAMAHA_AV>
ein Inhaltsverzeichnis der Favoriten zurück bekomme (auch wenn die MainZone aus ist):

POST /YamahaRemoteControl/ctrl HTTP/1.1
CONTENT-TYPE: text/xml; charset="utf-8"
User-Agent: AV_CONTROLLER/4.30 (Android)
Accept: */*
Accept-Language: en-us
Content-Length: 125
Host: 192.168.x.xxx:80
Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="GET"><NET_RADIO><List_Info>GetParam</List_Info></NET_RADIO></YAMAHA_AV>HTTP/1.1 200 OK
Server: AV_Receiver/3.1 (RX-V773)
Content-Type: text/xml; charset="utf-8"
Content-Length: 874

<YAMAHA_AV rsp="GET" RC="0"><NET_RADIO><List_Info><Menu_Status>Ready</Menu_Status><Menu_Layer>1</Menu_Layer><Menu_Name>NET RADIO</Menu_Name><Current_List><Line_1><Txt>Lesezeichen</Txt><Attribute>Container</Attribute></Line_1><Line_2><Txt>Hinzugef..gten Radiostationen</Txt><Attribute>Container</Attribute></Line_2><Line_3><Txt>L..nder</Txt><Attribute>Container</Attribute></Line_3><Line_4><Txt>Musikrichtungen</Txt><Attribute>Container</Attribute></Line_4><Line_5><Txt>Neue Sender</Txt><Attribute>Container</Attribute></Line_5><Line_6><Txt>Popul..re Sender</Txt><Attribute>Container</Attribute></Line_6><Line_7><Txt>Podcasts</Txt><Attribute>Container</Attribute></Line_7><Line_8><Txt>Hilfe</Txt><Attribute>Container</Attribute></Line_8></Current_List><Cursor_Position><Current_Line>1</Current_Line><Max_Line>8</Max_Line></Cursor_Position></List_Info></NET_RADIO></YAMAHA_AV>


In das Untermenü "Lesezeichen" komme ich dann mit: "PUT"><NET_RADIO><List_Control><Direct_Sel>Line_1</Direct_Sel></List_Control></NET_RADIO></YAMAHA_AV>

POST /YamahaRemoteControl/ctrl HTTP/1.1
CONTENT-TYPE: text/xml; charset="utf-8"
User-Agent: AV_CONTROLLER/4.30 (Android)
Accept: */*
Accept-Language: en-us
Content-Length: 154
Host: 192.168.x.xxx:80
Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><NET_RADIO><List_Control><Direct_Sel>Line_1</Direct_Sel></List_Control></NET_RADIO></YAMAHA_AV>HTTP/1.1 200 OK
Server: AV_Receiver/3.1 (RX-V773)
Content-Type: text/xml; charset="utf-8"
Content-Length: 117

<YAMAHA_AV rsp="PUT" RC="0"><NET_RADIO><List_Control><Direct_Sel></Direct_Sel></List_Control></NET_RADIO></YAMAHA_AV>



"GET"><NET_RADIO><List_Info>GetParam</List_Info></NET_RADIO></YAMAHA_AV> liefert mir dann wieder dessen Untermenü zurück:

POST /YamahaRemoteControl/ctrl HTTP/1.1
CONTENT-TYPE: text/xml; charset="utf-8"
User-Agent: AV_CONTROLLER/4.30 (Android)
Accept: */*
Accept-Language: en-us
Content-Length: 125
Host: 192.168.x.xxx:80
Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="GET"><NET_RADIO><List_Info>GetParam</List_Info></NET_RADIO></YAMAHA_AV>HTTP/1.1 200 OK
Server: AV_Receiver/3.1 (RX-V773)
Content-Type: text/xml; charset="utf-8"
Content-Length: 808

<YAMAHA_AV rsp="GET" RC="0"><NET_RADIO><List_Info><Menu_Status>Ready</Menu_Status><Menu_Layer>2</Menu_Layer><Menu_Name>Lesezeichen</Menu_Name><Current_List><Line_1><Txt>My__Favorites</Txt><Attribute>Container</Attribute></Line_1><Line_2><Txt></Txt><Attribute>Unselectable</Attribute></Line_2><Line_3><Txt></Txt><Attribute>Unselectable</Attribute></Line_3><Line_4><Txt></Txt><Attribute>Unselectable</Attribute></Line_4><Line_5><Txt></Txt><Attribute>Unselectable</Attribute></Line_5><Line_6><Txt></Txt><Attribute>Unselectable</Attribute></Line_6><Line_7><Txt></Txt><Attribute>Unselectable</Attribute></Line_7><Line_8><Txt></Txt><Attribute>Unselectable</Attribute></Line_8></Current_List><Cursor_Position><Current_Line>1</Current_Line><Max_Line>1</Max_Line></Cursor_Position></List_Info></NET_RADIO></YAMAHA_AV>


usw...

Das letzten Untermenü, in dem sich dann die Radio Sender befinden:
POST /YamahaRemoteControl/ctrl HTTP/1.1
CONTENT-TYPE: text/xml; charset="utf-8"
User-Agent: AV_CONTROLLER/4.30 (Android)
Accept: */*
Accept-Language: en-us
Content-Length: 125
Host: 192.168.x.xxx:80
Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="GET"><NET_RADIO><List_Info>GetParam</List_Info></NET_RADIO></YAMAHA_AV>HTTP/1.1 200 OK
Server: AV_Receiver/3.1 (RX-V773)
Content-Type: text/xml; charset="utf-8"
Content-Length: 866

<YAMAHA_AV rsp="GET" RC="0"><NET_RADIO><List_Info><Menu_Status>Ready</Menu_Status><Menu_Layer>3</Menu_Layer><Menu_Name>My__Favorites</Menu_Name><Current_List><Line_1><Txt>Hot Mix Radio - Hip Hop</Txt><Attribute>Item</Attribute></Line_1><Line_2><Txt>Inthemixx Radio</Txt><Attribute>Item</Attribute></Line_2><Line_3><Txt>ABetterRadio.com - Old School Rap</Txt><Attribute>Item</Attribute></Line_3><Line_4><Txt>181.fm - True RnB</Txt><Attribute>Item</Attribute></Line_4><Line_5><Txt>Cold Busted Radio</Txt><Attribute>Item</Attribute></Line_5><Line_6><Txt>RnBRadio</Txt><Attribute>Item</Attribute></Line_6><Line_7><Txt>Rap Radio</Txt><Attribute>Item</Attribute></Line_7><Line_8><Txt></Txt><Attribute>Unselectable</Attribute></Line_8></Current_List><Cursor_Position><Current_Line>1</Current_Line><Max_Line>7</Max_Line></Cursor_Position></List_Info></NET_RADIO></YAMAHA_AV>


über den Befehl:  "PUT"><NET_RADIO><List_Control><Direct_Sel>Line_4</Direct_Sel></List_Control></NET_RADIO></YAMAHA_AV>
kann ich dann einen Sender auswählen (in diesem Beispiel Line_4 = Sender "181.fm - True RnB")

POST /YamahaRemoteControl/ctrl HTTP/1.1
CONTENT-TYPE: text/xml; charset="utf-8"
User-Agent: AV_CONTROLLER/4.30 (Android)
Accept: */*
Accept-Language: en-us
Content-Length: 154
Host: 192.168.x.xxx:80
Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><NET_RADIO><List_Control><Direct_Sel>Line_4</Direct_Sel></List_Control></NET_RADIO></YAMAHA_AV>HTTP/1.1 200 OK
Server: AV_Receiver/3.1 (RX-V773)
Content-Type: text/xml; charset="utf-8"
Content-Length: 117

<YAMAHA_AV rsp="PUT" RC="0"><NET_RADIO><List_Control><Direct_Sel></Direct_Sel></List_Control></NET_RADIO></YAMAHA_AV>


Zum übergeordneten Ordner kommt man mit: "PUT"><NET_RADIO><List_Control><Cursor>Return</Cursor></List_Control></NET_RADIO></YAMAHA_AV>

POST /YamahaRemoteControl/ctrl HTTP/1.1
CONTENT-TYPE: text/xml; charset="utf-8"
User-Agent: AV_CONTROLLER/4.30 (Android)
Accept: */*
Accept-Language: en-us
Content-Length: 146
Host: 192.168.x.xxx:80
Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><NET_RADIO><List_Control><Cursor>Return</Cursor></List_Control></NET_RADIO></YAMAHA_AV>HTTP/1.1 200 OK
Server: AV_Receiver/3.1 (RX-V773)
Content-Type: text/xml; charset="utf-8"
Content-Length: 109

<YAMAHA_AV rsp="PUT" RC="0"><NET_RADIO><List_Control><Cursor></Cursor></List_Control></NET_RADIO></YAMAHA_AV>


Ist es Möglich das irgendwie in den Modul einzubauen?
Meine Perl Kenntnisse sind leider sehr gering, so das ich deine Hilfe bräuchte, würde natürlich helfen wo ich kann.

Gruß Schlimbo




Markus Bloch

Hallo Schlimbo,

das ist korrekt, nur ist die Frage, wie stellst du dir das im YAMAHA_AVR Modul vor? Das Abfragen der verfügbaren Favoriten währe kein Problem.

Nur das starten eines Radio-Senders aus der Favoritenliste ist mit einer Vielzahl an Befehlen verbunden, da man dazu folgendes durchführen muss:


  • setzen des Input auf NET RADIO
  • warten, dass das Menü aufgebaut ist
  • Auswahl des Favoriten-Menü
  • warten, dass das Menü aufgebaut ist
  • Auswahl des Senders

Es ist leider nicht Möglich einen Favoriten sofort zu starten, ohne durch das Menü zu hangeln. Sollte der gewünschte Sender auf der 2. oder 3. Seite sein, muss man vorher noch entsprechend auf die jeweilige Seite vorblättern usw. Jedesmal muss man dabei mind. 1 Sekunde warten, bis die Menüliste aufgebaut ist.

Das halte ich aktuell als recht schwierig dies generisch zu implementieren, daher der Vorschlag in der Commandref die notwendigen Einzel-Befehle sich in eine Funktion zu packen.

Ich habe das Beispiel dazu in der Commandref nochmal optimiert, damit es nicht das gesamte FHEM System lahmlegt.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Schlimbo

Hallo Markus,

Ja, du hast recht, das direkte wählen eines Senders geht so auch nicht,
aber momentan kann man den Sender der Zone2 nur verstellen, wenn man die Main Zone auch auf Netradio umstellt,
da die Navigation momentan über die Cursor Steuerung (Cursor_Control) realisiert ist.
Hier wäre es schon, wenn dein Modul auch die Menü-Navigations-Befehle (List_Control) unterstützen würde,
da diese unabhängig von Main Zone und für jeden Eingang (iPot_USB;USB; NET_RADIO;SERVER;Napster) separat funktionieren,
ohne einen anderen Eingang zu beeinflussen.

Nice to have wäre auch, wenn dein Modul die Menü Ausgabe zurück geben würde, um nicht blind Navigieren zu müssen.
Schön wäre es, wenn das Modul immer die aktuelle List_info bereitstellt und diese in ein Auswahlmenü darstellt, das könnte dann in etwa so aussehen:

(http://forum.fhem.de/index.php?action=dlattach;topic=19896.0;attach=35031)

weiß jedoch nicht ob das dann nicht zu aufwendig wird.


um ein Sender zu wählen müsste man dann zwar immer noch eine Sequenz mit einzelnen Befehle senden
und nach jedem Befehl 1s Warten, aber es würde unabhängig von der Main Zone funktionieren.

Auch gibt es über List_Control den Befehl: <Cursor>Return to Home</Cursor ,
mit diesen Befehl könnte man am Anfang einer Sequenz an eine definierte Stelle Springen.


Gruß Schlimbo

Schlimbo

#24
Hallo Markus

Hatte heute wieder etwas Zeit zum testen,
War mit "Cursor_Control" nicht ganz richtig gelegen, es wird im Modul nur bei der Serie RX-Vx75 verwendet.
Jedoch geht das "List_Control" im Modul momentan nur direkt auf die Zone (cmd=\"PUT\"><$zone><$control_tag>)
und nicht auf die separaten Eingänge (z.B. cmd=\"PUT\"><NET_RADIO><List_Control>).
Spricht hier etwas dagegen, die Steuerungsbefehle immer auf den momentan aktiven Eingang zu führen?

Bin mir auch nicht sicher ob bei Zone2 die "remoteControl" Befehle überhaupt unterstützt werden, bekomme folgende Meldungen im log:
2015.07.23 17:15:59 3: YAMAHA_AVR (AV_Receiver_Zone2) - Could not execute "remoteControl display": received return code 2
2015.07.23 17:15:07 3: YAMAHA_AVR (AV_Receiver_Zone2) - Could not execute "remoteControl up": received return code 2
2015.07.23 17:14:09 3: YAMAHA_AVR (AV_Receiver_Zone2) - Could not execute "remoteControl option": received return code 2
2015.07.23 17:13:35 3: YAMAHA_AVR (AV_Receiver_Zone2) - Could not execute "remoteControl enter": received return code 2
2015.07.23 17:12:54 3: YAMAHA_AVR (AV_Receiver_Zone2) - Could not execute "remoteControl down": received return code 2

Kann das jemand bestätigen?

Habe auch schon wieder neue Funktionen gefunden wie z.b. eine Funktion um zu prüfen ob ein Update vorhanden ist:
cmd="GET"><System><Misc><Update><YAMAHA_Network_Site><Status>GetParam</Status></YAMAHA_Network_Site></Update></Misc></System></YAMAHA_AV>
Könntest du das bitte in ein Reading übernehmen? Dann könnte man sich durch FHEM benachrichtigen lassen wenn eine neue Firmware vorhanden ist.

Noch ein wichtiges Feature für mich wäre es den "Party Modus" zu Steuern.
cmd="PUT"><System><Party_Mode><Mode>Off</Mode></Party_Mode></System></YAMAHA_AV>

Bei der Tuner Steuerung wird momentan "tunerPresetUp" und "tunerPresetDown" unterstützt. Könntest du hier auch noch das direkt Wählen eines Senders mit aufnehmen?
cmd="PUT"><Tuner><Play_Control><Preset><Preset_Sel>1</Preset_Sel></Play_Control></Tuner>
cmd="PUT"><Tuner><Play_Control><Preset><Preset_Sel>2</Preset_Sel></Play_Control></Tuner>
cmd="PUT"><Tuner><Play_Control><Preset><Preset_Sel>3</Preset_Sel></Play_Control></Tuner>   usw..

Im Anhang habe ich auch mal die YamahaRemoteControl/desc.xml angefügt, die man über "http://ip des receivers/YamahaRemoteControl/desc.xml" erhält, in dieser stehen alle möglichen Steuerbefehle.

Gruß Schlimbo


Markus Bloch

Hallo Schlimbo,

ja, das liese sich machen, sobald SourceForge wieder läuft und ich ins SVN einchecken kann. Momentan ist das seit Tagen down.
Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Schlimbo

Hallo Markus,

bist du hier schon weiter gekommen?

Markus Bloch

Hallo Schlimbo,

mangels Zeit leider noch nicht.

Wird wohl auch noch etwas dauern.

Tut mir leid

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Schlimbo


Markus Bloch

Hallo Schlimbo,

den Firmware-Update habe ich eingebracht. Den Rest muss ich später mal angehen.

Für den Party Mode bräuchte ich mal ein paar Traces, da mein Receiver keine Zonen hat. Insbesondere:

cmd="GET"><System><Party_Mode>GetParam</Party_Mode></System></YAMAHA_AV>
cmd="GET"><System><Party_Mode><Mode>GetParam</Mode></Party_Mode></System></YAMAHA_AV>
cmd="GET"><System><Party_Mode><Target_Zone>GetParam</Target_Zone></Party_Mode></System></YAMAHA_AV>
cmd="GET"><System><Party_Mode><Volume>GetParam</Volume></Party_Mode></System></YAMAHA_AV>

Danke

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)