YAMAHA_AVR Verzögerungen

Begonnen von vbs, 05 November 2015, 13:36:33

Vorheriges Thema - Nächstes Thema

dev0

Zitat von: Markus Bloch am 16 Dezember 2015, 23:32:41
Nächster Versuch.


set WZ_AMP on; set KU_AMP on; set BA_AMP on; -> nur WZ_AMP wurde eingeschaltet
set KU_AMP on; set WZ_AMP on; set BA_AMP on; -> WZ_AMP wurde nicht eingeschaltet
set WZ_AMP off; set KU_AMP off; set BA_AMP off; -> BA_AMP wurde nicht ausgeschaltet
set KU_AMP off; set WZ_AMP off; set BA_AMP off; -> WZ_AMP wurde nicht ausgeschaltet


Da ich in meinen Tests mit getrennten Queues gesehen hatte, dass beim Einschalten der 2. Zone im Command ein Delay von 3s nötig war,

set WZ_AMP on; sleep 3; set KU_AMP on; sleep 2; set BA_AMP on;

habe ich im Modul alle {options => {wait_after_response => 2}} mal auf 4 gesetzt.

Dadurch wurde beim Einschalten aller Zonen KU_AMP auch eingeschaltet, BA_AMP allerdings weiterhin nicht.

set WZ_AMP on; set KU_AMP on; set BA_AMP on; -> BA_AMP wurde nicht eingeschaltet


Die Ergebnisse sind reproduzierbar, WZ_AMP ist meine Mainzone, Logs anbei.

/Uli

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)

dev0

set WZ_AMP on; set KU_AMP on; set BA_AMP on;
Schaltet nur WZ_AMP ein, die anderen Zonen bleiben aus.
Ich denke, dass das als Test reicht, wenn Du andere Kombinationen brauchst, dann sag einfach bescheid.

/Uli

Markus Bloch

#48
Hmm, sieht vom Log her aber so aus, wie es soll:

Zitat

2015.12.18 07:08:41.722 4: YAMAHA_AVR (WZ_AMP) - send command "on": .....

2015.12.18 07:08:41.890 5: YAMAHA_AVR (WZ_AMP) - next command has to wait at least 2 seconds before execution
2015.12.18 07:08:41.890 5: YAMAHA_AVR (WZ_AMP) - got response for "on": <YAMAHA_AV rsp="PUT" RC="0"><Main_Zone><Power_Control><Power></Power></Power_Control></Main_Zone></YAMAHA_AV>


2015.12.18 07:08:43.930 4: YAMAHA_AVR (WZ_AMP) - send command "on": <?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><Zone_2><Power_Control><Power>On</Power></Power_Control></Zone_2></YAMAHA_AV>

2015.12.18 07:08:44.048 5: YAMAHA_AVR (KU_AMP) - next command has to wait at least 2 seconds before execution
2015.12.18 07:08:44.048 5: YAMAHA_AVR (KU_AMP) - got response for "on": <YAMAHA_AV rsp="PUT" RC="0"><Zone_2><Power_Control><Power></Power></Power_Control></Zone_2></YAMAHA_AV>


Bis hierhin siehts gut aus. Evtl. nochmal mit der "wait_after_response" options spielen, wie du es zuvor schon gemacht hast. Hatte ich jetzt nicht übernommen.

hier sollte eigentlich wieder 2 Sekunden wartezeit dazwischen liegen, warum er das nicht gemacht hat, muss ich mir heute abend wieder in Ruhe anschauen.


2015.12.18 07:08:44.069 4: YAMAHA_AVR (WZ_AMP) - send command "on": <?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><Zone_3><Power_Control><Power>On</Power></Power_Control></Zone_3></YAMAHA_AV>
2015.12.18 07:08:44.246 5: YAMAHA_AVR (BA_AMP) - next command has to wait at least 2 seconds before execution
2015.12.18 07:08:44.246 5: YAMAHA_AVR (BA_AMP) - got response for "on": <YAMAHA_AV rsp="PUT" RC="0"><Zone_3><Power_Control><Power></Power></Power_Control></Zone_3></YAMAHA_AV>


Das set-Kommando wie du es aktuell machst reicht völlig. Genau dass soll die Änderung ja beheben.

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

aktives Mitglied des FHEM e.V. (Technik)

Markus Bloch

#49
4. Versuch. Diesmal auch mit wait_after_response => 4
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

dev0

Zitat von: Markus Bloch am 18 Dezember 2015, 16:28:22
4. Versuch.

Sieht fast gut aus. Beim ersten Versuch alle Zonen einzuschalten wurde eine Zone nicht eingeschaltet. Ausschalten klappte darauf hin problemlos. Ein weiteres Einschalten aller Zonen hat dann auch wirklich alle Zonen eingeschaltet. Drei weitere Tests waren auch erfolgreich. Ich kann jetzt leider nicht weiter testen sonst bekomme ich hier was auf den Deckel ;-) Ich schaue mir das am WE noch einmal an.

/Uli

dev0

Hi Markus,

der "Fehler", dass sich eine Zone nicht eingeschaltet hat, konnte ich mit der letzten Version nicht mehr reproduzieren. Vielleicht hatte ich mich schlicht vertippt..?
Folgendes hatte ich jetzt nochmal gestestet und geloggt:

{
  Log 3, "YAMAHA yTest2";
  fhem("set WZ_AMP on; set WZ_AMP input cd; set WZ_AMP volume 10; set WZ_AMP bass 0; set WZ_AMP treble 0");
  fhem("sleep 1; set KU_AMP on; set KU_AMP input cd; set KU_AMP volume 10; set KU_AMP bass 0; set KU_AMP treble 0");
  fhem("sleep 1.5; set BA_AMP on; set BA_AMP input cd; set BA_AMP volume 10; set BA_AMP bass 0; set BA_AMP treble 0");
}

Das funktioniert generell. Alle Zonen schalten sich ein und die Parameter werden korrekt gestzt, bis auf die Tonesteuerung der Mainzone (WZ_AMP). Die Einstellung wird gesetzt, dafür zeigen die Readings völlig falsche Werte (bass: 12.5, treble 3.5). Von den Werten her sind das die Crossover Frequenzen /10. Folgendes command reicht für diesen Effekt aber auch schon aus:

set WZ_AMP treble/bass 0

Nach einem "set statusRequest" werden weiterhin die falschen Werte angezeigt. Verstelle ich die Werte direkt am Verstärker, dann werden sie nach einer Weile wieder korrekt angezeigt, auch ohne expliziten statusRequest.
Logs anbei.

/Uli

Markus Bloch

Zitat von: dev0 am 21 Dezember 2015, 08:43:57
Hi Markus,

der "Fehler", dass sich eine Zone nicht eingeschaltet hat, konnte ich mit der letzten Version nicht mehr reproduzieren. Vielleicht hatte ich mich schlicht vertippt..?
Folgendes hatte ich jetzt nochmal gestestet und geloggt:

{
  Log 3, "YAMAHA yTest2";
  fhem("set WZ_AMP on; set WZ_AMP input cd; set WZ_AMP volume 10; set WZ_AMP bass 0; set WZ_AMP treble 0");
  fhem("sleep 1; set KU_AMP on; set KU_AMP input cd; set KU_AMP volume 10; set KU_AMP bass 0; set KU_AMP treble 0");
  fhem("sleep 1.5; set BA_AMP on; set BA_AMP input cd; set BA_AMP volume 10; set BA_AMP bass 0; set BA_AMP treble 0");
}


Das klingt doch super. Ich habe es aktuell so gemacht, dass für DSP Modelle ein Delay von 4 Sekunden nach on/off eingehalten wird, bei allen anderen 2 Sekunden. Ich sehe aktuell keinen Grund das konfigurierbar zu machen.

Zitat von: dev0 am 21 Dezember 2015, 08:43:57
Das funktioniert generell. Alle Zonen schalten sich ein und die Parameter werden korrekt gestzt, bis auf die Tonesteuerung der Mainzone (WZ_AMP). Die Einstellung wird gesetzt, dafür zeigen die Readings völlig falsche Werte (bass: 12.5, treble 3.5). Von den Werten her sind das die Crossover Frequenzen /10. Folgendes command reicht für diesen Effekt aber auch schon aus:

set WZ_AMP treble/bass 0

Nach einem "set statusRequest" werden weiterhin die falschen Werte angezeigt. Verstelle ich die Werte direkt am Verstärker, dann werden sie nach einer Weile wieder korrekt angezeigt, auch ohne expliziten statusRequest.
Logs anbei.

/Uli

Das ist einen Fehler im Modul geschuldet. Wenn man ein set <name> bass/treble ausführt, dann muss bei DSP-basierten Modellen die Crossover-Frequenz mit angegeben werden. Diese wird vom Modul im Reading bassCrossover und trebleCrossover festgehalten. Im Modul wird dann bei einem solchen Kommando der aktuelle Wert dieses Readings genommen und bei dem Request wieder mitgeschickt. Hier war im Modul noch ein Fehler, sodass ein falscher Reading-Name genommen wurde, der nicht existiert und dann als Standard die von dir genannten Frequenzen benutzt werden. Habe ich aber schon geändert.

Zur Sicherheit nochmal anbei die aktuelle Version. Bitte prüf nochmal ob hier die Frequenzen nun unverändert bleiben.

Bitte poste auch mal ein "list <name>" von all deinen Zonen, nur für mich interessehalber wie die Hash-Struktur nun genau aussieht.

Vielen Dank

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

aktives Mitglied des FHEM e.V. (Technik)

dev0

#53
Zitat von: Markus Bloch am 21 Dezember 2015, 11:07:27
dann muss bei DSP-basierten Modellen die Crossover-Frequenz mit angegeben werden
Schon klar, der Patch war ursprünglich von mir ;)

Leider kann ich, mit der angehängten Verison, bass/treble gar nicht mehr setzen. Weder in der Mainzone noch in den anderen.
lists und log anbei. Edit: In der Gui gibt es auch die Auswahl für bass/treble nicht mehr.

Markus Bloch

Anbei nochmal ein neuer Versuch.

Bitte gib mir mal ein vollständiges Log vom FHEM neustart mit set WZ_AMP bass ... falls es nicht funktionieren sollte.

Danke

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

aktives Mitglied des FHEM e.V. (Technik)

dev0


Markus Bloch

Nochmal ein Versuch.

Wieder dasselbe, am besten aber, du machst nach dem Neustart erstmal einen statusRequest oder wartest ein wenig, bis sich das Log beruhigt hat nach dem Neustart. Nur damit sichergestellt ist, dass er den korrekten Status von deinem Gerät erfasst hat und sich entsprechend gemerkt hat.

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

aktives Mitglied des FHEM e.V. (Technik)

dev0

Ich konnte zwei verschiede Verhaltensweisen nach einem shut restart feststellen:

1. (log-1)
- kein setter für bass/treble vorhanden
- set WZ_AMP bass 2 via telnet geht und am amp gesetzt
- set WZ_AMP bass 0 leider nicht getestet (s.u.)
- reading bass/treble wird nicht aktualisiert

2. (log-2)
- gui eintrag für bass/treble vorhanden
- set WZ_AMP bass 3 funktioniert
- readings werden aktualisiert
- set WZ_AMP bass 0 führt zu dem Fehler, es liegt an der 0, treble ebenso.

Im log ist mir sonst noch diese Warnung aufgefallen:
2015.12.21 12:58:31.626 1: PERL WARNING: Use of uninitialized value in hash element at ./FHEM/71_YAMAHA_AVR.pm line 1855.

Verständlich ausgedrückt?

Markus Bloch

Schau ich mir nochmal an. Aber wahrscheinlich heute nicht mehr mangels Zeit.

Viele Grüße

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

aktives Mitglied des FHEM e.V. (Technik)

Markus Bloch

#59
Hi Uli,

also von den Logs her sieht das aber alles normal und richtig aus.

Zitat

bass 3

2015.12.21 13:11:50.096 4: YAMAHA_AVR (WZ_AMP) - send command "bass 3": <?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><Main_Zone><Tone><Speaker><Bass><Cross_Over><Val>125</Val><Exp>0</Exp><Unit>Hz</Unit></Cross_Over><Lvl><Val>30</Val><Exp>1</Exp><Unit>dB</Unit></Lvl></Bass></Speaker></Tone></Main_Zone></YAMAHA_AV>

2015.12.21 13:11:50.355 5: YAMAHA_AVR (WZ_AMP) - got response for "bass 3": <YAMAHA_AV rsp="PUT" RC="0"><Main_Zone><Tone><Speaker><Bass></Bass></Speaker></Tone></Main_Zone></YAMAHA_AV>


2015.12.21 13:11:50.522 4: YAMAHA_AVR (WZ_AMP) - send command "statusRequest toneStatus": <?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="GET"><Main_Zone><Tone><Speaker><Bass>GetParam</Bass></Speaker></Tone></Main_Zone></YAMAHA_AV>


2015.12.21 13:11:50.621 5: YAMAHA_AVR (WZ_AMP) - got response for "statusRequest toneStatus": <YAMAHA_AV rsp="GET" RC="0"><Main_Zone><Tone><Speaker><Bass><Cross_Over><Val>125</Val><Exp>0</Exp><Unit>Hz</Unit></Cross_Over><Lvl><Val>30</Val><Exp>1</Exp><Unit>dB</Unit></Lvl></Bass></Speaker></Tone></Main_Zone></YAMAHA_AV>



bass 0

2015.12.21 13:12:42.512 4: YAMAHA_AVR (WZ_AMP) - send command "bass 0": <?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><Main_Zone><Tone><Speaker><Bass><Cross_Over><Val>125</Val><Exp>0</Exp><Unit>Hz</Unit></Cross_Over><Lvl><Val>0</Val><Exp>1</Exp><Unit>dB</Unit></Lvl></Bass></Speaker></Tone></Main_Zone></YAMAHA_AV>

2015.12.21 13:12:42.768 5: YAMAHA_AVR (WZ_AMP) - got response for "bass 0": <YAMAHA_AV rsp="PUT" RC="0"><Main_Zone><Tone><Speaker><Bass></Bass></Speaker></Tone></Main_Zone></YAMAHA_AV>


2015.12.21 13:12:42.926 4: YAMAHA_AVR (WZ_AMP) - send command "statusRequest toneStatus": <?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="GET"><Main_Zone><Tone><Speaker><Bass>GetParam</Bass></Speaker></Tone></Main_Zone></YAMAHA_AV>

2015.12.21 13:12:43.023 5: YAMAHA_AVR (WZ_AMP) - got response for "statusRequest toneStatus": <YAMAHA_AV rsp="GET" RC="0"><Main_Zone><Tone><Speaker><Bass><Cross_Over><Val>125</Val><Exp>0</Exp><Unit>Hz</Unit></Cross_Over><Lvl><Val>0</Val><Exp>1</Exp><Unit>dB</Unit></Lvl></Bass></Speaker></Tone></Main_Zone></YAMAHA_AV>

"125" wird als bassCrossover-Reading gesetzt und "0" als bass-Reading.

Evtl. hilft es ja, das ganze mal mit der Yamaha-App nachzustellen und im Wireshark zu tracen. Vielleicht sieht man ja da was anderes. Von der Spezifikationslage und den Antworten sieht das aber alles valide aus, auch für die 0.

Zitat von: dev0 am 21 Dezember 2015, 13:31:27
Im log ist mir sonst noch diese Warnung aufgefallen:
2015.12.21 12:58:31.626 1: PERL WARNING: Use of uninitialized value in hash element at ./FHEM/71_YAMAHA_AVR.pm line 1855.


Das deutet eher auf eine ältere Version aus diesem Thread hin. In der aktuellen Version ist die Zeile 1855 eine Leerzeile. Die vermutete Stelle, welche zu dieser Fehlermeldung führen könnte, wurde auch bereits verbessert, so dass diese Meldung nicht mehr auftritt. Zur Sicherheit habe ich nochmal die aktuelle Version angehangen.

Viele Grüße

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

aktives Mitglied des FHEM e.V. (Technik)