Codevorschlag für das YAMAHA_NP Modul

Begonnen von ra666ack, 06 Januar 2015, 00:58:34

Vorheriges Thema - Nächstes Thema

ra666ack

Hi technyj,

leider habe ich keinen Zugriff auf diesen Netzwerkplayer.

Die Syntax ist

set Verstaerker volumeStraight 30 (ohne die eckigen Klammern).
set Verstaerker volume 20
set Verstaerker volumeUp
set Verstaerker volumeDown

Mein Netzwerk Player kann Lautstärke von 0...64 darstellen. Volume bezieht sich auf die relative Lautstärke 0 bis 100%. Volume rechnet es für FHEM um (64 = 100%).

Die Befehle sind der NP App entnommen.
Die RC Codes werden höchstwahrscheinlich nicht helfen, da Yamaha eigenes Protokoll für diese Player umgesetzt hat. Später wieder verworfen...
Wenn die App dies nicht bietet, sehe ich leider schwarz...

Gruß

ra666ack



technyj

#121
Danke ra666sack!

Ich habe mal den Wireshark angeschmissen. Teilweise funktionieren ein paar Befehle aus dem NP und AVR  Modul.
Bei der Lautstaerke scheint es nicht kompatibel zu sein. Ich kann Werte von 0-100 auf der App auswählen, das bekomme ich aber nicht mit dem Modul abgebildet. So wie ich es im Wireshark sehe, wird der Wert in FHEM berechnet. Weiterhin benoetigt der Yamaha R-N301 die "Main_Zone" mit Unterstrich.

Magst du das Modul erweitern/anpassen? Ich koennte dir auch mal den pcap File zusenden.



<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><System><Power_Control><Power>On</Power></Power_Control></System></YAMAHA_AV>

<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><System><Power_Control><Power>Standby</Power></Power_Control></System></YAMAHA_AV>

<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Mute>On</Mute></Volume></Main_Zone></YAMAHA_AV>

<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Lvl><Val>21</Val><Exp>0</Exp><Unit></Unit></Lvl></Volume></Main_Zone></YAMAHA_AV>

<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><Main_Zone><Input><Input_Sel>SERVER</Input_Sel></Input></Main_Zone></YAMAHA_AV>

<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><Main_Zone><Input><Input_Sel>NET RADIO</Input_Sel></Input></Main_Zone></YAMAHA_AV>

ra666ack

#122
Hi technyj,

bin etwas überrascht, dass die App auf verschiedenen Befehlssätzen basiert. Wäre vermutlich viel zu einfach...

An sich, ohne selbst ein Gerät zu besitzen, ist es immer sehr schmerzhaft. Würde eher dazu tendieren, nein zu sagen.
Falls wir uns auf rudimentäre Befehle beschränken, gibt es jedoch Hoffnung. Würde aber massiv deine Mithilfe benötigen.

Zu allererst bräuchte ich die Ausgabe von get [PlayerName] deviceInfo
Sollte ungefähr so aussehen:

Device info:

DEFAULT_GATEWAY: 192.168.1.1
DNS_SERVER_1   : 192.168.1.1
DNS_SERVER_2   : 192.168.1.1
FIRMWARE       : 1.13/1.01
FRIENDLY_NAME  : Yamaha-AZ
IP_ADDRESS     : 192.168.1.15
MAC_ADDRESS    : Secret
MODEL          : CRX-N560D
NP_ICON_1      : http://192.168.1.15:8080/BCO_device_sm_icon.jpg
NP_ICON_2      : http://192.168.1.15:8080/BCO_device_lrg_icon.jpg
NP_ICON_3      : http://192.168.1.15:8080/BCO_device_sm_icon.png
NP_ICON_4      : http://192.168.1.15:8080/BCO_device_lrg_icon.png
SUBNET_MASK    : 255.255.255.0
SYSTEM_ID      : Secret
UUID           : Secret


Speziell der Eintrag "MODEL" interessiert mich.

Bitte in der App alle Eingänge durchgehen und mit Wireshark mitschneiden. Fantastisch wäre ein Extrakt, in dieser Form, wie du es bereits gemacht hast. Ggf auch das pcap file schicken.

<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><System><Power_Control><Power>On</Power></Power_Control></System></YAMAHA_AV>

Anscheinend hat dein Player 2 Zonen. Analog zum AVR Modul, kannst du bitte mit folgendem Befehl auf einer Linux Kiste (curl müsste es auf Windows auch geben?) folgendes abschicken:

curl -v -d '<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><Zone_2><Volume><Lvl><Val>21</Val><Exp>0</Exp><Unit></Unit></Lvl></Volume></Zone_2></YAMAHA_AV>' http://[IP DEINES PLAYERS]/YamahaRemoteControl/ctrl

Die Lautstärke der Zone 2 sollte danach auf 21 sein.

Was ist die maximale Lautstärke? 64?

Danke und Gruß

ra666ack

technyj

#123
Hi ra666ack,

leider hat das Geraet nur eine Main_Zone (klassische Endstufe mit A B Speakern). Ich habe gerade ein wenig mit CURL getestet. Hat etwas gedauert bis ich die richtige Syntax unter Windows via Trial and Error herausgefunden hatte.

C:\Program Files\cURL\bin>curl -v -d "<YAMAHA_AV cmd=\"PUT\"><Main_Zone><Volume><Lvl><Val>21</Val><Exp>0</Exp><Unit></Unit></Lvl></Volume></Main_Zone></YAMAHA_AV>" http://192.168.143.240:80/YamahaRemoteControl/ctrl
*   Trying 192.168.143.240...
* Connected to 192.168.143.240 (192.168.143.240) port 80 (#0)
> POST /YamahaRemoteControl/ctrl HTTP/1.1
> Host: 192.168.143.240
> User-Agent: curl/7.46.0
> Accept: */*
> Content-Length: 122
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 122 out of 122 bytes
< HTTP/1.1 200 OK
< Server: Network_Player/3.1 (R-N301)
< Content-Type: text/xml; charset="utf-8"
< Content-Length: 91
<
<YAMAHA_AV rsp="PUT" RC="0"><Main_Zone><Volume><Lvl></Lvl></Volume></Main_Zone></YAMAHA_AV>* Connection #0 to host 192.168.143.240 left intact

Wie vermutet -  keine Veraenderung bei Zone2.

Hier die Device Info bzw config (kannst du mir das Kommando fuer die Device Info zusenden)?

<YAMAHA_AV rsp="GET" RC="0"><System><Config><Model_Name>R-N301</Model_Name><System_ID>0ExxxxC3</System_ID><Version>1.04/0.05</Version><Feature_Existence><Main_Zone>1</Main_Zone><Tuner>1</Tuner><Spotify>1</Spotify><Pandora>0</Pandora><SERVER>1</SERVER><NET_RADIO>1</NET_RADIO><AirPlay>1</AirPlay></Feature_Existence></Config></System></YAMAHA_AV>

Ich kann dir gerne die PCAP als PM senden.

technyj


ra666ack

Hi technyj,

"<Model_Name>R-N301</Model_Name>" reicht mir schon danke.

Der Befehl sollte so funktionieren:

"<YAMAHA_AV cmd=\"GET\"><System><Config>GetParam</Config></System></YAMAHA_AV>" http://192.168.143.240:80/YamahaRemoteControl/ctrl

Kannst du bitte in FHEM in der Befehlszeile folgendes eingeben und die Augabe posten?

get [Name deines FHEM Gerätes] deviceInfo

Kommt was zurück?

Danke

ra666ack


technyj

#126
ja, das folgende wird ausgegeben:

Device info:

DEFAULT_GATEWAY: 192.168.143.251
DNS_SERVER_1   : 8.8.8.8       
DNS_SERVER_2   : 192.168.143.251
FRIENDLY_NAME  : Kueche         
IP_ADDRESS     : 192.168.143.240
MAC_ADDRESS    : 00:A0:XX:XX:XX:XF
NP_ICON_1      : http://192.168.143.240
:8080/BCO_device_sm_icon.jpg
NP_ICON_2      : http://192.168.143.240
:8080/BCO_device_lrg_icon.jpg
NP_ICON_3      : http://192.168.143.240
:8080/BCO_device_sm_icon.png
NP_ICON_4      : http://192.168.143.240
:8080/BCO_device_lrg_icon.png
SUBNET_MASK    : 255.255.255.0 
UUID           : 5FXXX1B3-EXXX-1900-4530-00A0XXXXXXXF


ra666ack

#127
Hi Techyj,

anbei eine modifizierte Version. Sorry fürs Delay. Aktuell viel um die Ohren.

Die Basic Funktionen sollten bei dir jetzt in der Main_Zone funktionieren:

on, off, mute:on|off, volumeStraight, volume, volumeUp, VolumeDown, input:airplay|netradio|pandora|server|spotify|tuner

Bitte prüfe, ob alle Inputs so wie von mir vermutet ebenfalls funktionieren.
Sollte irgendein Eingang nicht wollen, kannst du bitte den Input mit der App umstellen und mir Wireshark mitschneiden.
Alternativ könntest du in der Zeile 1869 des Moduls die Einträge anpassen. Genau so wie sie von der App rausgeschickt werden:

Beispiel:

<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><Main_Zone><Input><Input_Sel>NET RADIO</Input_Sel></Input></Main_Zone></YAMAHA_AV>

Zeile 1869: push @ip, "AirPlay", "NET RADIO", "Pandora", "SERVER", "Spotify", "TUNER";

Wird volume max. auf 100 oder nur 60 eingestellt?

Verschluckt sich das Modul, wenn Basic Status abgefragt wird?
Irgendwelche HTTP Timeouts im Log?

Danke

ra666ack





martinp876

Hi,
Ich habe mich nun einige zeit nicht mit dem player befasst. Meine letzten aenderungen sahen deutlich anders aus.
Wie schon  beim letzten mal:
Es ist keine Kritik. Allerdings habe ich eine ziemlich andere Auffassung einiger Details. Ich stelle es hier zur Diskussion, wie das letzte mal. Bitte um feedback. Da ich mit diesem frontend nicht zurechtkomme werde ich mich ggf. Schlicht abkoppeln.

Das erste was mir schon beim aufruf auffällt ist, dass VIEL ZU VIEL readings angezeigt werden. Das ist in fhem verbreitet, kann ich aber nicht akzeptieren. Warum? Wenn so lange listen dargestellt werden finde ich garnichts mehr.
Was will ich: wenn ich cd eingestellt habe sehe ich auch nur cd-relevante readings. Alle anderen sind zu loeschen(sind sowieso nicht bestaetigt) oder zu verstecken.
Wenn ich radio einstelle will ich cd nicht sehen. Habe ich dab+ gewaehlt sehe ich kein fm und umgekehrt.
Man kann entsprechende abfragen ueber get gerne aus helper holen, falls notwendig.

Leere felder will ich nicht dargestellt bekommen. Das ist sinnlos. Ich sehe aktuell 30 zeilen fm plus 30 zeilen dab+ plus cd listen. Fast alles leer.

Wie ist eure meinung? Besteht hoffnung, die darstellung aufzuräumen? Wenn nicht einfach bescheid geben und ich mache es privat.

ra666ack

Hallo Martin,

ich bin mir nicht sicher, ob wir von der selben Version des Moduls reden.
Deine Anregungen wurden vor ca. einem Jahr bereits weitestgehend eingearbeitet...

Wenn FM, dann keine DAB Readings, wenn CD dann kein Radio etc. Keine 30 Presets permanent sichtbar etc.

Die Bedienung sollte jetzt, auch wie angeregt, kontextsensitiv sein.

Reden wir möglicherweise von Reading-Artefakten früherer Modul-Versionen?
Macht es Sinn das Device neu aufzusetzen? Manchmal spinnt der Web-Browser. Man muss die Seite aktiv refreshen...

Letzte eingecheckte Version ist vom 28.01.2018.

Gruß

r.



martinp876

Ah, ok. Da hast du Recht. Der update hat es nicht berücksichtigt.
Sieht schon viel besser aus. Ich spiele mal. Danke!

RaspiLED

#131
Hallo Torsten,

ich habe seit heute ein CD-NT670D mit dem Modul YAMAHA_MC im Einsatz. Aber ich denke das hast Du auch schon gefunden, oder?


https://forum.fhem.de/index.php/topic,54798.msg670947.html#msg670947

Gruß Arnd
Zitat von: ToKa am 20 November 2016, 11:42:45Hallo zusammen,hat das Modul schon mal jemand mit dem Yamaha CD-NT670D im Einsatz. Ich habe wie in der Comadref beschrieben, das Gerät mit der entsprechenden IP eingerichtet, bekomme es aber nur als "absent" angezeigt.Im Log findet sich folgendes: YAMAHA_NP (E1.wz.AV.CDNT670D) - could not execute command on device E1.wz.AV.CDNT670D. Please turn on your device in case of deactivated network standby or check for correct hostaddress.Das Gerät ist an und auch network standby ist aktiviert.Beste GrüßeTorsten
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

ToKa

Hallo Arnd,

ja das MC Modul ist bei mir erfolgreich im Einsatz.

Gruß
Torsten
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight

topfi

Ich nutze das YAMAHA_NP Modul schon eine ganze Weile für meinen CRX-N650D. FHEM stellt u.a den Timer des Gerätes. Nun habe ich seit langem mal wieder ein update gemacht und seitdem muss ich die Variablen

timerHour
timerMinute
timerRepeat
timerVolume

nicht mehr setzen sondern als Attribute übergeben. Kein Problem, das habe ich in meiner Konfiguration angepasst. Nach dem Befehl timerSet stellt sich die Weckzeit im Gerät auch, aber im FHEM-log erscheint eine Fehlermeldung
2019.06.23 20:30:19 3: YAMAHA_NP (Yamaha_C560D) - Could not execute "timerSet"
2019.06.23 20:30:19 1: PERL WARNING: Use of uninitialized value $arg in string ne at ./FHEM/71_YAMAHA_NP.pm line 1736.


Was könnte da nicht stimmen? Die Attribute sind alle gesetzt und werden auch alle ins Gerät übernommen.

Ach ja, die Readings

timer
timerRepeat
timerStartTime
timerVolume

sind veraltet bzw. stammen wohl noch von der Vorversion. Das Modul aktualisiert sie jedenfalls nicht. Falls das für die Forensik wichtig sein sollte, die von mir bis vor kurzem genutzte alte Version war diese hier:
$Id: 71_YAMAHA_NP.pm 11114 2016-03-23 06:41:10Z ra666ack $
Die Probleme gibt es mit der aktuellen:
$Id: 71_YAMAHA_NP.pm 16025 2018-01-28 17:48:28Z ra666ack $ 

topfi

Zitat von: topfi am 23 Juni 2019, 21:49:09
[...]
Was könnte da nicht stimmen? Die Attribute sind alle gesetzt und werden auch alle ins Gerät übernommen.
_YAMAHA_NP.pm 16025 2018-01-28 17:48:28Z ra666ack $
[Edit:] Heute früh gemerkt (und trotzdem aufgewacht ;-)): Die Lautstärke wird nicht übernommen. Vielleicht werde ich heute Abend mal das alte mit dem neuen Modul hinsichtlich des Setzens von timerVolume vergleichen