FHEM Forum

FHEM - Anwendungen => Multimedia => Thema gestartet von: spooy99 am 22 Dezember 2013, 17:45:08

Titel: Alternative Datei (CustomGetFileFromURL) für Yamaha RX-V2065 einlesen
Beitrag von: spooy99 am 22 Dezember 2013, 17:45:08
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!


Titel: Antw:Alternative Datei (CustomGetFileFromURL) für Yamaha RX-V2065 einlesen
Beitrag von: Markus Bloch am 04 Januar 2014, 18:53:35
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
Titel: Antw:Alternative Datei (CustomGetFileFromURL) für Yamaha RX-V2065 einlesen
Beitrag von: spooy99 am 05 Januar 2014, 23:39:38
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!





Titel: Antw:Alternative Datei (CustomGetFileFromURL) für Yamaha RX-V2065 einlesen
Beitrag von: Markus Bloch am 07 Januar 2014, 17:57:38
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
Titel: Antw:Alternative Datei (CustomGetFileFromURL) für Yamaha RX-V2065 einlesen
Beitrag von: spooy99 am 07 Januar 2014, 21:55:29
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!
Titel: Antw:Alternative Datei (CustomGetFileFromURL) für Yamaha RX-V2065 einlesen
Beitrag von: Markus Bloch am 07 Januar 2014, 22:23:04
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
Titel: Antw:Alternative Datei (CustomGetFileFromURL) für Yamaha RX-V2065 einlesen
Beitrag von: spooy99 am 08 Januar 2014, 00:04:33
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
Titel: Antw:Alternative Datei (CustomGetFileFromURL) für Yamaha RX-V2065 einlesen
Beitrag von: Markus Bloch am 09 Januar 2014, 20:25:18
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
Titel: Antw:Alternative Datei (CustomGetFileFromURL) für Yamaha RX-V2065 einlesen
Beitrag von: spooy99 am 09 Januar 2014, 21:34:27
Hallo - funktioniert leider auch mit der geänderten HttpUtils nicht. Tracert folgt per PN.

Danke!
Titel: Antw:Alternative Datei (CustomGetFileFromURL) für Yamaha RX-V2065 einlesen
Beitrag von: Markus Bloch am 09 Januar 2014, 21:55:49
Hi,

nochmal ein weiterer Versuch. Tut mir leid, dass es so eine Rumprobiererei ist.

Danke

Gruß
Markus
Titel: Antw:Alternative Datei (CustomGetFileFromURL) für Yamaha RX-V2065 einlesen
Beitrag von: Markus Bloch am 09 Januar 2014, 22:21:34
Ich hab dir ausversehen die falsche Datei gesenden -,-

Jetzt die richtige.
Titel: Antw:Alternative Datei (CustomGetFileFromURL) für Yamaha RX-V2065 einlesen
Beitrag von: spooy99 am 16 August 2014, 17:07:00
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!


Titel: Antw:Alternative Datei (CustomGetFileFromURL) für Yamaha RX-V2065 einlesen
Beitrag von: Markus Bloch am 16 August 2014, 17:15:18
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
Titel: Antw:Alternative Datei (CustomGetFileFromURL) für Yamaha RX-V2065 einlesen
Beitrag von: spooy99 am 16 August 2014, 20:51:04
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)

Titel: Antw:Alternative Datei (CustomGetFileFromURL) für Yamaha RX-V2065 einlesen
Beitrag von: Markus Bloch am 16 August 2014, 22:13:23
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
Titel: Antw:Alternative Datei (CustomGetFileFromURL) für Yamaha RX-V2065 einlesen
Beitrag von: Markus Bloch am 17 August 2014, 14:16:00
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