Modul für Yamaha Musiccast

Begonnen von Pythonf, 20 Juni 2016, 10:28:46

Vorheriges Thema - Nächstes Thema

Pythonf

Das Thema wird im folgenden Thread vom Entwickler des Moduls fortgeführt! Bitte für Fragen und Anregungen dort weiter schreiben.
https://forum.fhem.de/index.php/topic,98383.0.html


EDIT
Auf Seite 2 befindet sich ein deutlich fortschrittlicheres Modul, als das hier angehängte. Die aktuelle Version findet sich im Verlauf des Beitrages
Vielen Dank an Stefan alias Leugi dafür!

Im Anhang eine erste Version zur Steuerung von Yamaha Musiccast Geräten, die zum größten Teilen auf der Demo.pm von dev0 beruht. Alle Funktionen sind auf einem Yamaha R-N602 Verstärker getestet.
Was bisher geht:

  • Lautstärker einstellen (über Zahleneingabe)
  • Wahl des Eingangssignals
  • Ein/Ausschalten (aus Netzwerkstandby)
  • Abfragen von aktuellen Informationen (Lautstärke, Power, Input)
  • Abfragen von allgemeinen Informationen (Input-Liste, maximale Lautstärke)
Neu
  • Mute-Funktion

Hier muss ich anmerken, dass alle get-Befehle bis auf presence noch nicht sinnvoll funktionieren. Da dies mein erstes Modul ist können sicherlich Fehler auftreten und eine Stellen sind unschön geschrieben. Ich versuche das mit der Zeit zu verbessen und auszubauen und nehme Verbesserungsvorschläge gerne entgegen. Falls jemand die Power befehle (standby und on) in das dropdown menu integriert bekommt und eventuell ein intervall zum abfragen der Daten integriert bekommt wäre das schon mal ein sehr guter Anfang zu einem schöneren Modul.

#Alter Post
Leider lässt sich der Yamaha R-N602 Netzwerk Stereoreciever nicht mit dem Yamaha_AVR Modul ansprechen.
Es scheint auch so, dass Yamaha hier keine API herraus gegeben hat und leider gehöre ich zu den FHEM Nutzern mit nur sehr geringen Programmierkenntnissen.
Ich würde mich aber sehr freuen, wenn sich jemand findet, der mit mir ein Modul entwicklen könnte.


Beste Grüße
Fabian

Pythonf

Mir ist aufgefallen, dass das YAMAHA_AVR das falsche Modul ist und es bereits das YAMAHA_NP-Modul hierfür gibt.
Leider scheint das aber nicht erfolgreich zu funktionieren:
Internals:
   DEF        192.168.37.29
   NAME       Amp_Wohnzimmer
   NR         149
   STATE      absent
   TYPE       YAMAHA_NP
   Readings:
     2016-07-18 14:26:20   power           0
     2016-07-18 14:26:44   presence        absent
     2016-07-18 14:26:44   state           absent
   Helper:
     ADDRESS    192.168.37.29
     AVAILABLE  0
     DISABLED   0
     OFF_INTERVAL 30
     ON_INTERVAL 30
Attributes:
   group      Audio
   room       Wohnzimmer
   webCmd     input:volume:mute:volumeDown:volumeUp

Gerät ist eingeschaltet, spielt Musik über Internet und lässt sich pingen.
Da sich das Gerät aber auch nicht über die Network Player Controller App steuern lässt sonder nur über die Musiccast-App nehm ich an, dass die Musiccast-App ein anderes Protokoll spricht.
Gibt es für mich als Laien eine Möglichkeit hier irgendwie die Steuerung über FHEM zu ermöglichen?

Grüße
Fabian

Markus Bloch

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

aktives Mitglied des FHEM e.V. (Technik)

Pythonf

#3
Ich hab mal mit Wireshark ein wenig was aufgenommen. Vielleicht findet sich jemand, der sich das eventuell mit mir ansehen möchte, da ja auch in anderen Threads Interesse besteht.
Was ich getan habe war erstmal die Musiccast-App starten und dann:
- Einschalten
- Opt.2 Auswählen
- Opt.1 Auswählen
- Lautstärker verringern
- Lautstärke erhöhen
- Ausschalten

mit "ip.dst==192.168.37.29"

Außerdem findet man im Netz etwas:
https://www.symcon.de/forum/threads/24471-Sonos-Alternativen-!/page4 (aktuell letzer Eintrag, JSON-Schnittstelle)
https://github.com/neutmute/neutmute.github.io/blob/master/_posts/blog/2016-04-04-Yamaha-Musiccast-Protocol.md

z.B. On/Off
IP:80/YamahaExtendedControl/v1/main/setPower?power=on
IP:80/YamahaExtendedControl/v1/main/setPower?power=standby
IP:80/YamahaExtendedControl/v1/main/setVolume?volume=100 (Max Werte hab ich noch nicht in Erfahrung gebracht)

Und:
IP:80/YamahaExtendedControl/v1/main/prepareInputChange?input=optical1
IP:80/YamahaExtendedControl/v1/main/setInput?input=optical1

IP:80/YamahaExtendedControl/v1/system/getTag
liefert die möglichen Input-Arten:
{"response_code":0,"zone_list":[{"id":"main","tag":0}],"input_list":[{"id":"tuner","tag":0},{"id":"phono","tag":0},{"id":"optical1","tag":0},{"id":"optical2","tag":0},{"id":"coaxial1","tag":0},{"id":"coaxial2","tag":0},{"id":"line1","tag":0},{"id":"line2","tag":0},{"id":"line3","tag":0},{"id":"line_cd","tag":0},{"id":"usb","tag":0},{"id":"bluetooth","tag":0},{"id":"server","tag":0},{"id":"net_radio","tag":0},{"id":"napster","tag":0},{"id":"spotify","tag":0},{"id":"juke","tag":0},{"id":"airplay","tag":0},{"id":"mc_link","tag":0}]}

Grüße
Fabian

Pythonf

Ich hab nun mal alle bekannten Befehle in einem PDF Dokument zusammen mit den Antworten des R-N602 (geht aber wahrscheinlich auch mit allen anderen Musiccast-Geräten) gesammelt.
Wenn sich jemand finden würde, der mir ein wenig bei einem Modul helfen könnte würde mich das sehr weiterbringen. Ich hab mir die anderen Yamaha-Module angesehn und denke, dass sie sich nicht sehr unterscheiden bis auf eine andere Adresse, komme aber leider nicht wirklich weiter. Gerade Ein/Aus-Schalten, Lautstärke und Wahl des Eingangssignals interessieren mich, aber irgendwie durchblick ich das nicht so ganz.

Grüße
Fabian

dev0

Funktionieren die ermittelten URLs, wenn Du sie im Browser aufrufst?

ZitatWenn sich jemand finden würde, der mir ein wenig bei einem Modul helfen könnte
Grundlegende Infos zur Modulentwicklung findest Du hier: http://www.fhemwiki.de/wiki/Kategorie:Development
Einen Einstieg in Perl und regexp findet man z.B. hier: https://wiki.selfhtml.org/wiki/Perl

Bestehende Module anzupassen war für mich ein guter Weg einzusteigen. Das, von Dir angesprochene, Yamaha_AVR Modul ist aber schon recht umfangreich und komplex und daher mMn nur bedingt zum Lernen geeignet . Wenn Du magst, dann dengel ich Dir ein minmalst Modul zusammen, das http urls nonblocking aufruft und die Antworten in Readings schreiben kann. Vielleicht findest Du ja so den Anfang...

Pythonf

Die links funktionieren im Browser. Eine Minimalsversion mit einem get und einem set sowie einem reading sollte mir wahrscheinlich schon sehr weiterhelfen und ich würd mich sehr darüber freun.

Gruß Fabian

dev0

Schau mal, ob Du damit etwas anfangen kannst...

miktin

Hallo
Hab auch 2 musiccast Geräte. Ein wx-030 und ein isx-80. Hab leider auch noch keinen Erfahrung mit dem Modul schreiben. Beide Geräte lassen sich mit Power und der Befehlseingabe on einschalten. Ebenso läßt sich das Volumen mit Eingabe des Wertes regeln. Ausschalten mit off geht nicht. Ebenso ist es mir bis jetzt auch nicht gelungen das input zu wechseln z.B. netradio. Dachte zumindestens ich geb mal Rückmeldung.

miktin

#9
Sehe gerade, geht aus mit standby. input geht tuner und net_radio.


Pythonf

Zitat von: Tscherno am 29 September 2016, 21:13:02
https://github.com/neutmute/neutmute.github.io/blob/master/_posts/blog/2016-04-04-Yamaha-Musiccast-Protocol.md
Hatte ich oben schon verlinkt.

Das andere Projekt sieht interessant aus, aber ich wüsste nicht direkt in wie weit das in einem FHEM-Modul Verwendung finden könnte.

Gruß
Fabian

Tscherno

Ging mir mehr darum, etwas vom Protokoll ableiten zu können. Jetzt gibt es aber auch eine offizielle API:

https://jayvee.com.au/downloads/commands/yamaha/YXC_API_Spec_Basic.pdf

sprudelverduenner

Hallo Zusammen,

ich ´besitze nun auch 2 MusicCast Komponenten und bin sehr an dem PlugIn interessiert.
Das beschriebene funktioniert auch bei mir bereits.

Geht da noch mehr? Interessant wäre für mich die Möglichkeit aus den Favoriten oder den net_radio Lesezeichen einen Internetradiosender starten zu können...

Zum testen wäre ich gerne bereit!

Schönen Abend
Sprudelverduenner
FHEM @ RaspberryPi 3, HMLAN, HMUART + HMRS485, Homematic, ESPEasy @ Sonoff / Shelly / ESP8266, ZigBee @ CC2531
Echo Dot, Dreambox, Yamaha MusicCast, Logitech Hub, LW-12, LD382
FRITZ!Box 7590 AX, Mesh @ FRITZ!Repeater 2400, FRITZ!Fon, iPhone 13, iPad Air 5, AppleWatch 8

Pythonf

#14
Mehr gehen tut sicherlich, aber ich habe Momentan leider nicht die Zeit, mich um die Entwicklung zu kümmern, alleine schon deshalb, weil ich eigentlich keine Ahnung davon habe. Wenn aber jemand das Modul weiter entwickelt werde ich stets versuchen, den ersten Beitrag aktuell zu halten.
Es freut mich wenn ich mit dem, was ich mit viel Hilfe da zusammengebastelt habe schon helfen konnte.

Alternativ lässt sich ein Radio aber gut per dlna starten und dazu gibt es einige Module für FHEM (dlna modul oder Squeezebox modul um nur 2 zu nennen)

Gruß
Fabian