Modul für Yamaha Musiccast

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

Vorheriges Thema - Nächstes Thema

screetch82

#105
Hi
vielen Dank für die viele Vorarbeit und Diskussion. Ich habe gestern FHEM eingerichtet und versuche meine Hue Lampen mit den Lautsprechern im gleichen Raum zu koppeln.

bisher funktioniert Lampe ein,  MC Lautsprecher einschalten, Lautstärke wählen (ich glaube das klappt) und Inputkanal wechseln; wenn lampe aus, dann geht auch musik aus.

Ich habe noch  ein dummy button hinzugefügt.  Einschalten--> stellt alle MC Geräte auf an, koppelt diese und spielt Musik und bei aus das gleiche Rückwärts. Jedoch funktioniert
das Unlink nicht zu verlässig.

(1)Kann es sein das sich beide die Funktion Lampe/Music mit dem zweiten Teil meiner Config behagen? Ich  habe ja einen notifier wenn lampe X aus ist oder aus geht, dann Lautsprecher X auch ausschalten.   Wenn ich per Musiccast alle Lautsprecher den Input Tuner wiedergeben lasse, dann geht manchmal im Bad der Lautsprecher aus, weil ja auch die Bad Lampe aus ist.  Wird der Auschaltbefehl für das Bad mehrmals geschickt?

(2) Ich habe auch keine Ahnung was powerCmdDelay   und das Standart_Volumen machen soll.

(3) kann ich irgendwie Bedingungen einführen?  Also alle Lautsprecher geben Musiccast Tuner Musik wieder. Ich komme aus dem Bad und mache die Lampe aus, und dann soll
natürlich der Badlautsprecher nicht ausgeschalten werden..

(4) Anstelle von Tuner und NetRadio möchte ich gern den Input Server wiedergeben. Es gibt auch per Synology einen Musikserver. In der Yamaha App kann ich diesen und dann ein Playliste auswählen. Wie bekomme ich das hier hin?

(5) ich habe noch eine Hue Tap und den Hue Motion Sensor im BAD definiert:
define Bad_Schalter HUEDevice sensor 2 1 IODev=hueBridge1
attr Bad_Schalter IODev hueBridge1
define Bad_Motion HUEDevice sensor 13 1 IODev=hueBridge1
attr Bad_Motion IODev hueBridge1

macht es mehr sind anstelle das Einschaltsignal von der Lampe vom Sensor abzugreifen? Bin ich dann schneller? Bisher gibt es einige Sekunden Verzögerungen eh die Musik nach dem Licht angeht.


hier die Config:

define mc_receiver YAMAHA_MC 192.168.178.40 80 5 5
attr mc_receiver standard_volume 25
attr mc_receiver verbose 3
attr mc_receiver volumeSteps 3
attr mc_receiver webCmd on:off:volume:input
#attr mc_receiver powerCmdDelay 3


define wx010_bath YAMAHA_MC 192.168.178.16 80 5 5
attr wx010_bath standard_volume 25
attr wx010_bath verbose 3
attr wx010_bath volumeSteps 3
attr wx010_bath webCmd on:off:volume:input
#attr wx010_bath powerCmdDelay 2

define wx030_bed YAMAHA_MC 192.168.178.24 80 5 5
attr wx030_bed standard_volume 25
attr wx030_bed verbose 3
attr wx030_bed volumeSteps 3
attr wx030_bed webCmd on:off:volume:input
attr wx030_bed powerCmdDelay 2

#Funktion Lampe/Lautsprecher
define HUEBathOnNotify notify HUEDevice4:on.* set wx010_bath on;;sleep 1;;set wx010_bath volume 40
define HUEBathOffNotify notify HUEDevice4:off.* set wx010_bath off

define HUEBedroomOnNotify notify HUEDevice3:on.* set wx030_bed on;;sleep 1;;set wx030_bed volume 30

define HUEBedroomOffNotify notify HUEDevice3:off.* set wx030_bed off

define HUELivingOnNotify notify HUEDevice2:on.* set mc_receiver on;;sleep 1;;set mc_receiver input tuner;;set mc_receiver volume 28


#Funktion Musiccast/Kopplung alles

define AlleAn dummy
attr AlleAn setList on off
attr AlleAn webCmd on:off

define AlleAn_notify_on notify AlleAn:on.* set mc_receiver on;;set wx030_bed, wx010_bath on;;sleep 6;;set wx010_bath volume 44;;set wx030_bed volume 33;;set mc_receiver 33;;set mc_receiver input tuner;;set mc_receiver mcLinkTo wx030_bed, wx010_bath

define AlleAn_notify_off notify AlleAn:off.* set mc_receiver mcUnLink wx030_bed;;set mc_receiver mcUnLink wx010_bath;;set wx010_bath input net_radio;;set wx030_bed input net_radio;;set mc_receiver off;;set wx010_bath off;;set wx030_bed off

screetch82

im log habe ich oefter auch mal folgendes:

2017.03.13 14:49:23 2: After sleep: No inputs are avaible. Please try an statusUpdate.
2017.03.13 14:49:23 2: YAMAHA_MC: wx030_bed YAMAHA_MC_httpRequestParse last cmd=getDeviceInfo failed with error: http://192.168.178.24:80/YamahaExtendedControl/v1/system/getDeviceInfo: empty answer received
2017.03.13 14:49:23 2: YAMAHA_MC: wx030_bed YAMAHA_MC_httpRequestParse guessing device is absent, setting state and power to off
2017.03.13 14:49:23 2: YAMAHA_MC (wx030_bed) - could not execute command on device wx030_bed. Please turn on your device in case of deactivated network standby or check for correct hostaddress.
2017.03.13 14:49:23 2: YAMAHA_MC: wx010_bath YAMAHA_MC_httpRequestParse last cmd=getDeviceInfo failed with error: http://192.168.178.16:80/YamahaExtendedControl/v1/system/getDeviceInfo: empty answer received
2017.03.13 14:49:23 2: YAMAHA_MC: wx010_bath YAMAHA_MC_httpRequestParse guessing device is absent, setting state and power to off
2017.03.13 14:49:23 2: YAMAHA_MC (wx010_bath) - could not execute command on device wx010_bath. Please turn on your device in case of deactivated network standby or check for correct hostaddress.
2017.03.13 14:49:24 2: YAMAHA_MC: mc_receiver YAMAHA_MC_httpRequestParse last cmd=getDeviceInfo failed with error: http://192.168.178.40:80/YamahaExtendedControl/v1/system/getDeviceInfo: empty answer received
2017.03.13 14:49:24 2: YAMAHA_MC: mc_receiver YAMAHA_MC_httpRequestParse guessing device is absent, setting state and power to off
2017.03.13 14:49:24 2: YAMAHA_MC (mc_receiver) - could not execute command on device mc_receiver. Please turn on your device in case of deactivated network standby or check for correct hostaddress.
2017.03.13 14:51:02 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/71_YAMAHA_MC.pm line 1768.
2017.03.13 14:51:03 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/71_YAMAHA_MC.pm line 1675.
2017.03.13 14:51:03 2: After sleep: No inputs are avaible. Please try an statusUpdate.
2017.03.13 14:51:37 1: PERL WARNING: Use of uninitialized value $sound_program in string ne at ./FHEM/71_YAMAHA_MC.pm line 2236.
2017.03.13 14:56:18 2: After sleep: No inputs are avaible. Please try an statusUpdate.
2017.03.13 15:00:57 3: HUEBridge_Call: failed, retrying

screetch82

Wie kann ich denn von einem Server eine bestimmte Playliste abspielen?  Also in der App wähle DS_Norm --> Music --> Playlist --> Automation

ich habe beim abpielen folgendes gefunden: Im Browser:
http://192.168.178.16/YamahaExtendedControl/v1/netusb/getListInfo?input=server&index=0&size=8&lang=en

ergibt:

{"response_code":0,"input":"server","menu_layer":0,"max_line":2,"index":0,"playing_index":-1,"menu_name":"SERVER","list_info":[{"text":"DS_Norm","thumbnail":"","attribute":2},{"text":"Plex Media Server: DS_Norm","thumbnail":"","attribute":2}]}

hilft das?

Leugi

@hdad
ZitatSchalte ich nun "TurnFavNetRadioChannelOn" wird auf meinen Fav Sender geschaltet nur auf Lautstärke 15
und das ist recht leise. Wie kann ich das ändern?

Dazu gibt es das Attribut standard_volume, wenn das nicht gesetzt ist wird als default 15 genommen, anonsten so setzen :
attr mc_receiver standard_volume 25

@screetch82
Das Attribut standard_volume 25 wurde bisher nur bei dem Befehl "TurnFavNetRadioChannelOn" berücksichtigt. Anbei auch eine Version, wo es beim normalen Befehl "on" berücksichtigt wird.
Das vereinfacht viele deiner Befehle

z.B. wenn du das Attribut setzt

attr wx010_bath standard_volume 40

dann verinfacht sich dein notify :
define HUEBathOnNotify notify HUEDevice4:on.* set wx010_bath on;;sleep 1;;set wx010_bath volume 40
zu
define HUEBathOnNotify notify HUEDevice4:on.* set wx010_bath on

und das ungünstige sleep ist dann auch weg.

im notify ist auch noch ein Fehler :
define AlleAn_notify_on notify AlleAn:on.* set mc_receiver on;;set wx030_bed, wx010_bath on;;sleep 6;;set wx010_bath volume 44;;set wx030_bed volume 33;;set mc_receiver volume 33;;set mc_receiver input tuner;;set mc_receiver mcLinkTo wx030_bed, wx010_bath

auch das kannst du stark vereinfachen durch
attr wx010_bath standard_volume 40
attr wx030_bed standard_volume 33
attr mc_receiver standard_volume 33

dann :
define AlleAn_notify_on notify AlleAn:on.* set mc_receiver, wx030_bed, wx010_bath on;;sleep 3;; set mc_receiver input tuner;;set mc_receiver mcLinkTo wx030_bed wx010_bath

und beim off sicherheitshalber mit sleep:

define AlleAn_notify_off notify AlleAn:off.* set mc_receiver mcUnLink wx030_bed wx010_bath;;sleep 1;;set wx010_bath input net_radio;;set wx030_bed input net_radio;;sleep 1;;set mc_receiver off;;set wx010_bath,wx030_bed off

Vom Log her sieht das wie ein Abbruch von fhem aus, setze die Musiccast Devices alle mal auf verbose 5 und sende mir das Log in einer Persönlichen Mitteilung.

@hdad und screetch82
bisher habe ich alle Funktionen nur auf input netRadio abgestimmt, das mit dem input server und Playlisten muss ich noch prüfen.

FHEM auf RaspPi 2, USB-CUL V3, div. HM Aktoren

screetch82

#109
ok mache ich. hast du die api pdf documente von yamaha?

screetch82

#110
Hi

danke. Ich habe das neue Modul und deine Befehle getestet und danach hat es gleich den Receiver blockiert und es ging nichts.
Ich habe also log gelöscht, Receiver einmal vom strom genommen und die alten Befehle weiter benutzt mit dem neuen Modul.
Das Log schicke ich dir per PM zu zusammen mit Verbose 5.  Ich habe per Musiccast app die Quelle für das Bad von Net player auf
Server umgestellt. Vielleicht erkennst du aus dem logging wie man das per FHEM machen könnte.

Bisher funktioniert das im Bedroom netradio, im Wohnzimmer Tuner und im BAD der Server in abhängigkeit von Lampe aus ein gespielt wird. Die Verzögerung ist bei Server gefüllt auch geringer als bei Netradio. Wäre gut wenn man hier per FHEM  jeden Player eine vordefinierte Playliste zuweisen kann.


Leugi

@screetch82

nach der API habe ich schon Ewigkeiten gesucht und nicht gefunden. Die Basic API hatte ich auch gefunden aber die Advanced fehlte mir.
Ich habe das alles mühsam mit Wireshark ermittelt. Die API Beschreibung hilft mir trotzdem einiges bezüglich Linken und Unlinken der Devices zu verbessern.
Darf ich fragen, wo du die her hast ?

Deine Logs werde ich mir mal anschauen, vielleicht finde ich was auffälliges ...
FHEM auf RaspPi 2, USB-CUL V3, div. HM Aktoren

screetch82

hi

super wenn sie helfen, dann habe ich als Nutzer auch gleich was. Ich habe sie in einem anderen forum gefunden, wo jemand yamaha angeschrieben hatte um diese dokus gebeten hatte. Erst wollte ich über http die receiver ansteueren bevor ich auf FHEM
gestoßen bin.

Viel erfolg und hoffentlich hilft dies bei der server input steuerung  ???

Leugi

zu deinem Log :

anscheinend hast du die devices wx010_bath und wx030_bed mit einem Statusintervall von 1 Sekunde angegeben.
Das ist viel zu häufig. Ich würde vorschalgen hier 120 und 60 Sekunden als Refresh Intervall zu verwenden :

define wx010_bath YAMAHA_MC 192.168.0.25 80 120 60

Dein Notify hat laut Log noch einen Fehler  :

AlleAn_notify_on return value: Unknown argument wx030_bed,

Kannst du nochmal dein aktuelles notify AlleAn_notify_on prüfen und ggf. hier nochmlas posten ?


FHEM auf RaspPi 2, USB-CUL V3, div. HM Aktoren

Ertanius

hallo :) ich musste heute meine Pi neu aufsetzten, habe alle einstellungen verloren :/
hab FHEM gerade installiert. ich hatte hilfe bei dem einbinden der "71_YAMAHA_MC.pm" datei.
kann mir jemand sagen wie ich das machen kann? will es mal selber einbinden, dann brauch ich hier solche anfängliche fragen in zukunft nicht stellen.

nickjag

#115
Hallo, erstmal Kompliment für das super Modul  8)

Gibt es auch schon eine Möglichkeit vom Reciver die 2.zone zu steuern?
WIE müsste ich die dann definieren?

Was mir noch aufgefallen ist, wenn ich mit der Musiccast app meine Geräte steuer, dauert es teilweise recht lang ca 30sec bis der Status in fhem aktualisiert,  ist das normal?

Leugi könntest du bei den readings auch die relative Volume ausgeben? Würde die gerne auch verwenden, und großen Dank für die entwicklung

Ertanius

Bei mir hat FHEM sofort reagiert, wenn ich meine Geräte über die MC App gesteuert habe

Leugi

@nickjack

Die geänderten Daten der Devices werden immer nach der im Define angegeben Zeit gepollt, wenn die Änderung nicht über fhem geändert wurden.

Die Refresh-Zeiten gibts du hinter dem Define Befehl an. Ich würde die aber nicht zu kurz wählen.
Vorschlag min. 5 Sekunden :

define mc_receiver YAMAHA_MC 192.168.0.25 80 120 60

Der este Wert nach der IP-Adresse ist der Port, dann kommt das Refresh Interval, wenn das Device Off ist (hier 120 Sekunden), dann das Refresh-Intervall wenn das Gerät ON ist (hier 60 Sekunden)

Die weitere Zonen ebenfalls zu steuern ist möglich, werde ich mit auf meiner To-Do Liste aufnehmen.
Würde das dann mit dem gleichen Device machen, wo man mittels SetZone die Zone umschalten kann.


Gruß,
Leugi
FHEM auf RaspPi 2, USB-CUL V3, div. HM Aktoren

nickjag

#118
@Leugi,

danke für die Erklärung, hab ich nun mal gemacht, dann klappt das auch z.B. nach 5 sec.
Freue mich schon auf die Implememtierung der Zone2  ;)

Ich habe aber noch das problem, das wenn ich zur Zeit alle 30sec Abfrage manchmal nen timeout kommt, und der Status einmal auf off springt

Log:
ZitatYAMAHA_MC: Yamaha_A860_Main YAMAHA_MC_httpRequestParse last cmd=getPlayInfo failed with error: read from http://192.168.0.22:80 timed out
2017.03.24 20:24:41 2: YAMAHA_MC: Yamaha_A860_Main YAMAHA_MC_httpRequestParse guessing device is absent, setting state and power to off

Meine Config dazu:
define Yamaha_A860_Main YAMAHA_MC 192.168.0.22 80 30 30
attr Yamaha_A860_Main FavoriteNetRadioChannel 5
attr Yamaha_A860_Main alias Wohnzimmer
attr Yamaha_A860_Main group Musiccast
attr Yamaha_A860_Main menuNameFavoritesNetRadio "Beste"
attr Yamaha_A860_Main pathToFavoritesNetRadio 0 0
attr Yamaha_A860_Main powerCmdDelay 3
attr Yamaha_A860_Main room Bastian
attr Yamaha_A860_Main standard_volume 50
attr Yamaha_A860_Main verbose 3
attr Yamaha_A860_Main volumeSteps 3
attr Yamaha_A860_Main webCmd on:off:volume:mute:input


Da ich den Power Zustand an Loxone weiter gebe und damit den Subwoofer an aus schalte, geht er halt mal aus und nach der nächsten abfrage wieder an....
Gibt es nicht auch eine möglichkeit befehle der MC App abzuhören und wenn ein befehl gesendet wird das notify auszulösen und den status ab  zu fragen??? denn so ist ja ne menge traffic müll.....

Ach so ich habe noch nen WX030 und da passiert das auch mit dem timeout.... :(
Grüße aus NRW

enno

Ich habe das Problem mit dem Timeout auch. Daher nutze ich zur Zeit das Modul YAMAHA_AVR für meinen HTR-4068 parallel. Bei mir ging immer der Fernseher aus, das gab schlechte Noten von meinen Kindern ;D

Nicht elegant, aber tut erst mal.

Gruss
Enno
Einfacher FHEM Anwender auf Intel®NUC mit Proxmox und Debian