Hallo fhem-Freunde! Nach meinen ersten Gehversuchen mit fhem auf einem Raspi wollte ich auch den Status meines Recievers abfragen - dachte dank dem Yamaha-AVR-Modules kein Problem... Leider bekomme ich jedoch nach der Definition nur den Log-Eintrag "YAMAHA_AVR: could not execute command on device AV_Receiver. Please turn on ....". Nach etwas suchen bin ich hinter die Ursache gekommen:
Beim Yamaha RX-V2065 befindet sich die XML-Datei an einer anderen Stelle; Sie ist unter http://<meine-ip>/YamahaRemoteControl/UnitDesc.xml zu finden (Originaldatei wäre unter https://db.tt/Ef8C7mq2 (https://db.tt/Ef8C7mq2) abrufbar).
Leider habe ich keine Ahnung wie ich diese Änderung vornehmen kann; In der Datei 71_YAMAHA_AVR.pm habe ich in der Sub YAMAHA_AVR_SendCommand die Zeile für die Definition gefunden:
$response = CustomGetFileFromURL(0, "http://".$address."/YamahaRemoteControl/ctrl", AttrVal($name, "request-timeout", 4) , "<?xml version=\"1.0\" encoding=\"utf-8\"?>".$command, 0, ($hash->{helper}{AVAILABLE} ? undef : 5));
und diese in folgendes geändert:
$response = CustomGetFileFromURL(0, "http://".$address."/YamahaRemoteControl/UnitDesc.xml", AttrVal($name, "request-timeout", 4) , "<?xml version=\"1.0\" encoding=\"utf-8\"?>".$command, 0, ($hash->{helper}{AVAILABLE} ? undef : 5));
Leider funktioniert das nicht - bin für jeden Hinweis dankbar!
Hi,
ich denke du wirfst hier 2 Sachen durcheinander. Die URL zu der XML Datei wird durch eine Abfrage erst ermittelt. Diese Abfrage gibt als Ergebnis die URL zu der UnitDesc.xml zurück.
Die Änderung, die du durchgeführt hast hat allerdings nichts mit der XML-URL zu tun, sondern betrifft die generelle HTTP-URL über die Befehle übermittelt werden.
Um erstmal ein Bild zu erhalten schlage ich vor sicherzustellen dass du die aktuellste FHEM Version hast (Befehl update), desweiteren, dass der Network-Standby am Gerät ausgeschaltet ist.
Dann definierst du dein Yamaha-Device und setzt anschließend das Attribut verbose auf den Wert 5 und führst dann einen statusRequest durch.
Im Log müssten dann einige Logmeldungen zu deinem Receiver auftauchen. Die bitte dann hier posten.
Viele Grüße
Markus
Hallo - Vielen Dank für die Rückmeldung!
Via Update die aktuelle Version der Yamaha_AVR geladen (Stand 03.01.,18 Uhr - so belassen - ohne eigene Änderungen). IP und Network-Standby geprüft ...
Eintrag in der Fhem.cfg:
# Yamaha AVR ##############################
define AV_Yamaha YAMAHA_AVR 192.168.2.7
attr AV_Yamaha volume-smooth-change 1
Mit verbose 5 erhalte ich alle paar Minuten folgende Einträge im Log:
2014.01.05 23:20:29 5: YAMAHA_AVR: execute on AV_Yamaha: <YAMAHA_AV cmd="GET"><System><Unit_Desc>GetParam</Unit_Desc></System></YAMAHA_AV>
2014.01.05 23:20:29 5: HttpUtils url=http://192.168.2.7/YamahaRemoteControl/ctrl
2014.01.05 23:20:33 5: CustomGetFileFromURL http://192.168.2.7/YamahaRemoteControl/ctrl: Select timeout/error:
2014.01.05 23:20:33 5: YAMAHA_AVR: execute on AV_Yamaha: <YAMAHA_AV cmd="GET"><System><Config>GetParam</Config></System></YAMAHA_AV>
2014.01.05 23:20:33 5: HttpUtils url=http://192.168.2.7/YamahaRemoteControl/ctrl
2014.01.05 23:20:37 5: CustomGetFileFromURL http://192.168.2.7/YamahaRemoteControl/ctrl: Select timeout/error:
Wenn ich im Browser die URL http://192.168.2.7/YamahaRemoteControl/ctrl öffne bekomme ich nichts zurück - wenn ich die URL http://192.168.2.7/YamahaRemoteControl/UnitDesc.xml öffne erhalte ich die im ersten Beitrag verlinkte XML-Datei des RX-V2065 zurück.
Bin für jeden Hinweis dankbar!
Das Modul YAMAHA_AVR verwendet das Modul HttpUtils.pm um alle HTTP-Anfragen an den Receiver durchzuführen.
Dieses Modul wurde vor kurzem komplett neu geschrieben.
Bitte probier daher einmal die alte Version aus: http://sourceforge.net/p/fhem/code/4497/tree/trunk/fhem/FHEM/HttpUtils.pm?format=raw
Kopier diese Datei in deinen Modul-Ordner, starte FHEM einmal neu und dann versuch es bitte wieder mit der Definition deines Receivers und verbose 5.
Viele Grüße
Markus
Hallo,
habe mit beiden Versionen der Datei HttpUtils das gleiche Ergebnis erhalten - auch die alte Version bringt keine Veränderung:
Alte Version
2014.01.07 21:12:33 5: YAMAHA_AVR: execute on AV_Yamaha: <YAMAHA_AV cmd="GET"><System><Unit_Desc>GetParam</Unit_Desc></System></YAMAHA_AV>
2014.01.07 21:12:33 4: CustomGetFileFromURL url=http://192.168.2.7/YamahaRemoteControl/ctrl
2014.01.07 21:12:37 4: CustomGetFileFromURL http://192.168.2.7/YamahaRemoteControl/ctrl: Select timeout/error:
2014.01.07 21:12:37 3: YAMAHA_AVR: could not execute command on device AV_Yamaha. Please turn on your device in case of deactivated network standby or check for correct hostaddress.
2014.01.07 21:12:37 5: Triggering AV_Yamaha (1 changes)
2014.01.07 21:12:37 5: Notify loop for AV_Yamaha presence: absent
2014.01.07 21:12:37 4: eventTypes: YAMAHA_AVR AV_Yamaha presence: absent -> presence: absent
2014.01.07 21:12:37 5: YAMAHA_AVR: execute on AV_Yamaha: <YAMAHA_AV cmd="GET"><System><Config>GetParam</Config></System></YAMAHA_AV>
2014.01.07 21:12:37 5: CustomGetFileFromURL url=http://192.168.2.7/YamahaRemoteControl/ctrl
2014.01.07 21:12:41 5: CustomGetFileFromURL http://192.168.2.7/YamahaRemoteControl/ctrl: Select timeout/error:
Aktuelle Version
2014.01.07 21:06:18 5: YAMAHA_AVR: execute on AV_Yamaha: <YAMAHA_AV cmd="GET"><System><Unit_Desc>GetParam</Unit_Desc></System></YAMAHA_AV>
2014.01.07 21:06:18 4: HttpUtils url=http://192.168.2.7/YamahaRemoteControl/ctrl
2014.01.07 21:06:22 4: CustomGetFileFromURL http://192.168.2.7/YamahaRemoteControl/ctrl: Select timeout/error:
2014.01.07 21:06:22 3: YAMAHA_AVR: could not execute command on device AV_Yamaha. Please turn on your device in case of deactivated network standby or check for correct hostaddress.
2014.01.07 21:06:22 5: Triggering AV_Yamaha (1 changes)
2014.01.07 21:06:22 5: Notify loop for AV_Yamaha presence: absent
2014.01.07 21:06:22 4: eventTypes: YAMAHA_AVR AV_Yamaha presence: absent -> presence: absent
2014.01.07 21:06:22 5: YAMAHA_AVR: execute on AV_Yamaha: <YAMAHA_AV cmd="GET"><System><Config>GetParam</Config></System></YAMAHA_AV>
2014.01.07 21:06:22 5: HttpUtils url=http://192.168.2.7/YamahaRemoteControl/ctrl
2014.01.07 21:06:26 5: CustomGetFileFromURL http://192.168.2.7/YamahaRemoteControl/ctrl: Select timeout/error:
Vielen Dank für die Hilfe!
Nach den Logs scheint tatsächlich der AV-Receiver entweder keine Verbindungen zuzulassen, oder er ist unter dieser Adresse nicht erreichbar.
Kannst du die URL http://192.168.XX.YY:8080/MediaRenderer/desc.xml aufrufen? Falls ja kannst du bitte den Inhalt posten, oder als Attachment anhängen?
Vielen Dank
Gruß
Markus
Hallo,
den von dir genannten Link kann ich bei mir nicht aufrufen - not found.
Da die Steuerung über die offiziellen Yamaha-Apps von iOS bzw. Android problemlos funktionieren habe ich ich Netzwerktraffic mitgelauscht...
Die Apps öffnen bzw. suchen nachfolgende URLs (Download-Link je in Klammern)
http://192.168.2.7/XD/DeviceDescription.xml (https://db.tt/0oCeEwba (https://db.tt/0oCeEwba))
http://192.168.2.7/XD/RenderCtl.xml (https://db.tt/NZvLN7XT (https://db.tt/NZvLN7XT))
http://192.168.2.7/XD/MrConnMgr.xml (https://db.tt/H88RI4hM (https://db.tt/H88RI4hM))
http://192.168.2.7/YamahaRemoteControl/UnitDesc.xml (https://db.tt/Ef8C7mq2 (https://db.tt/Ef8C7mq2))
Evtl. hilft das weiter...
Danke!
P.S: Ein Netzwerk-Mitschnitt folgt per PN
Hi,
vielen Dank für deine Traces. Aufgrund der aufgenommenen Pakete kann ich sagen, dass der Receiver via HTTP zwar antwortet, wenn FHEM diesen anfragt (auch auf der richtigen URL), aber der Receiver keine xml-Daten schickt, obwohl diese im HTTP Header angekündigt sind. Dies scheint ein kleiner Fehler in der Yamaha-Firmware zu sein, der dadurch ausgelöst wird, dass das YAMAHA-Modul diesen Header nicht so sehr anreichert, wie die Yamaha Smartphone App.
Daher möchte ich dich bitten nocheinmal die im Anhang befindliche HttpUtils.pm zu verwenden, FHEM anschließend neustarten und dann bitte nochmal schauhen, was die Logs so hergeben.
Vielen Dank
Gruß
Markus
Hallo - funktioniert leider auch mit der geänderten HttpUtils nicht. Tracert folgt per PN.
Danke!
Hi,
nochmal ein weiterer Versuch. Tut mir leid, dass es so eine Rumprobiererei ist.
Danke
Gruß
Markus
Ich hab dir ausversehen die falsche Datei gesenden -,-
Jetzt die richtige.
Hallo - nachdem ich mich länger nicht mit dem Thema beschäftigt hatte folgende Info:
Mit der Version 6324 vom 28.07.14 der 71_YAMAHA_AVR.pm wird auch der RX-V2065 erkannt (Firmwareinfo usw.). Die Bedienung funktioniert für An/Aus, Input, Lautstärke, Mute, Status usw. weitgehenst (habe nur die wichtigen Funktionen in der Mainzone probiert).
Die Readings currentAlbum, -Artist, -Channel, -Station und -Title werden nicht gefüllt bzw. können nicht abgerufen werden. Die Readings input, mute, volume usw. werden gefüllt.
Vielen Dank für die tolle Arbeit!
Hi,
vielleicht können wir die Readings ja auch noch zum laufen bringen.
Setz doch bitte mal bei deiner Main-Zone Definition in FHEM das Attribut verbose auf 5, führe einen statusRequest durch und poste doch mal die Ausgaben aus dem FHEM Logfile.
Viele Grüße
Markus
Hallo - bin mir nicht sicher welche Ausgabe kommen sollte ... das Logfile sieht jedenfalls dann wie folgt aus:
https://dl.dropboxusercontent.com/u/94989150/yamaha_fhem_16082014.txt (https://dl.dropboxusercontent.com/u/94989150/yamaha_fhem_16082014.txt)
Im Frontend sieht das dann so aus:
(https://dl.dropboxusercontent.com/u/94989150/fhem_yamaha1.jpg)
Ja, damit kann ich etwas anfangen. Der RX-V2065 hat irgendwie verdammt viele Eigenarten gegenüber der restlichen Familie bei Yamaha. Momentan habe ich gerade bei mir ein paar Netzwerkausfälle, wodurch ich aktuell nicht entwickeln kann. Aber ich denke in der kommenden Woche lässt sich da was machen.
Viele Grüße
Markus
Hi,
ich habe ein Änderung eingecheckt, damit zumindest der inputName ausgegeben wird. Das Kommando "scene" gibt es bei deinem Receiver nicht, da die Scenes als "input" gelistet sind bei diesem Modell.
Die Kommandos dsp, straight, enhancer, adaptiveDrc, direct und 3dCinemaDsp werden höchstwahrscheinlich nicht funktionieren, da diese Features entweder nicht vorhanden sind, oder eine andere Struktur besitzen als gewöhnlich.
Das kann ich allerdings nicht genau sagen.
Viele Grüße
Markus