YAMAHA_AVR wird bei mir nicht immer zuverlässig eingeschaltet

Begonnen von Schlimbo, 05 Februar 2016, 15:06:54

Vorheriges Thema - Nächstes Thema

Schlimbo

Hallo Markus,

Ich lasse mich über meinen Yamaha AVR RX-V773 morgens Wecken, in dem er zu einer Bestimmten Uhrzeit Eingeschaltet wird, ein Internat Radio Sender gestartet wird und dann wird die Lautstärke über 10 Minuten langsam von -80 auf -55 erhöht.
Manchmal funktioniert das Einschalten des AVRs aber nicht und der Wecker versagt.

Heute war es wieder soweit. Im Anhang das Log dazu.

Könntest du dir das bitte mal ansehen, ich bin aus dem Log nicht ganz schlau geworden.
Irgend etwas ist beim "Set on" um 05:45:00 schief gegangen

Im Log ist mir auch noch der HTTP Fehler Code 400, für folgende Abfragen aufgefallen:
received HTTP code 400 for command "statusRequest fwUpdate"
received HTTP code 400 for command "statusRequest playRepeat"
received HTTP code 400 for command "statusRequest playShuffle"


Mit "Firmware Update" scheint es bei mir noch ein generelles Problem zu geben.
Die Meldung für "repeat" und "shuffle" bekomme ich nur, wenn eine Quelle eingestellt ist, die diese Befehle nicht unterstützt wie z.B. Netradio.

Gruß Schlimbo

Markus Bloch

Hallo Schlimbo,

das einzige was dazu im Log steht ist:

could not execute command "on": http://192.168.0.101/YamahaRemoteControl/ctrl: empty answer received

Was so viel bedeutet hat wie: Der Receiver hat unseren Request erhalten, aber hat die Verbindung beendet ohne zu antworten.

Warum das so ist, ist eine gute Frage. Könntest du einen TCP-Dump mal machen und mehrfach hintereinander versuchen dein Wecker-Befehl für den Receiver manuell ausführen, bis das Phänomen wieder passiert?

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)

Markus Bloch

Hallo Schlimbo,

Zitat von: Schlimbo am 05 Februar 2016, 15:06:54
Im Log ist mir auch noch der HTTP Fehler Code 400, für folgende Abfragen aufgefallen:
received HTTP code 400 for command "statusRequest fwUpdate"
received HTTP code 400 for command "statusRequest playRepeat"
received HTTP code 400 for command "statusRequest playShuffle"


Mit "Firmware Update" scheint es bei mir noch ein generelles Problem zu geben.
Die Meldung für "repeat" und "shuffle" bekomme ich nur, wenn eine Quelle eingestellt ist, die diese Befehle nicht unterstützt wie z.B. Netradio.

Zu deinen Beobachtungen. Da hast du recht. Ich habe soeben nochmal die Spezifikationen durchwühlt bei dem Thema Firmware-Update. Generell funktioniert das nur bei RX-Vx71, RX-Vx73, RX-Ax10 oder RX-Ax20. Selbst da gibt es zwischen RX-Vx71/RX-Ax10 und RX-Vx73/RX-Ax20 erhebliche Unterschiede, wie man das abfragt. Daher habe führe ich den Request nach einem FW-Update nur noch bei den genannten Modellreihen aus. Die neueren Generationen (z.B. RX-Vx79) unterstützen eine solche Abfrage garnicht mehr.

Desweiteren habe ich die Anfragen nach Repeat/Shuffle verändert. Diese werden jetzt nur noch explizit ausgeführt, wenn der Eingang das unterstützt, sowie nach einem Eingangswechsel. Sollte der Eingang das nicht unterstützen wird die Anfrage nicht mehr gestellt, solange bis man den Eingang wechselt.

Zum eigentlichen Problem, warum du schreibst. Ist das Problem auch schonmal bei anderen Befehlen aufgetreten? Im TCP-Dump sieht man, das eine Verbindung aufgebaut wurde, aber kein HTTP-POST geschickt wird. Wenn das an einem Problem im Verbindungsaufbau durch HttpUtils.pm liegt, müsste das auch bei anderen Befehlen auftreten, da für jeden Befehl eine neue TCP Verbindung geöffnet werden.

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)

Schlimbo

Hallo Markus,

Zitat von: Markus Bloch am 06 Februar 2016, 11:52:19
Generell funktioniert das nur bei RX-Vx71, RX-Vx73, RX-Ax10 oder RX-Ax20.
Dann sollte es doch bei meinem RX-V773 funktionieren, oder?

Zitat von: Markus Bloch am 06 Februar 2016, 11:52:19
Ist das Problem auch schonmal bei anderen Befehlen aufgetreten?
Bei anderen Befehlen ist mir das noch nicht aufgefallen,  da ich die meisten Befehle über eine Fernbedienung auslöse, kann es aber durchaus sein,  dass ich hier unbewusst mehrfach gedrückt habe,  wenn der AVR mal nicht reagiert hatte,  werde die nächsten Tage mal etwas genauer darauf achten. Werde mir für den Wecker erst mal ein kleines Skript anlegen das prüfte ob der AVR eingeschaltet wurde und bei Bedarf noch mal ein einschalt Befehle sendet (ähnlich meiner PCA301 Überwachung).

Gruß Schlimbo

Markus Bloch

Zitat von: Schlimbo am 06 Februar 2016, 16:19:19
Dann sollte es doch bei meinem RX-V773 funktionieren, oder?

Ja, bei der RX-Vx73'er Reihe ist der Befehl aber anders. Das habe ich heute korrigiert.

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

Am besten mal das Log für den AV Receiver mit verbose 5 ein paar Tage mitlaufen lassen. Dann kann man später nach "timeout" oder "empty answer received" suchen.

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)

Schlimbo


ElmarK

@Schlimbo
Coole Idee, könnte ich den Befehl zum Anlegen des Weckers von dir bekommen?

Receiver einschalten, input tuner, Sender, ... oder ?

LG, Elmar

Schlimbo

Hallo Elmar,

für den Wecker nutze ich die ROOMMATE Wecker Funktion
http://www.fhemwiki.de/wiki/Weckautomation

in dem Weckprogramm wird dann der AV_Receiver eingeschaltet und über "navigateListMenu" ein Internet Radiosender gestartet.

Die Lautstärken Änderung übernimmt ein Skript in myUtils.
Aufruf:
{Volumen_smooth('AV_Receiver_Zone2','volumeStraight','600','-80','-55')}
Kürze Erklärung zu den übergebenen Werten:
1. Parameter: Name des Gerätes das gesteuert werden soll (hier "AV_Receiver_Zone2")
2. Parameter: set Name (volumeStraight)
3. Parameter: Änderungszeit in Sekunden (600)
4. Parameter: Anfangswert (-80)
5. Endwert (-55)
Das Skript kann zur langsamen Erhöhung aber auch zur Absenkung der Lautstärke genutzt werden.
Ich habe das Skript recht Universal gehalten, so dass es auch mit anderen AVRs funktionieren sollte oder für andere Dinge genutzt werden kann. (z.B. Beleuchtung Dimmen usw.)

myUtils Code:
#########Volumen smooth
sub Volumen_smooth($$$$$) {
  my ($Device, $reading, $duration, $startValue, $endValue) = @_;
  my $vol_step = '00';
  my $time_step = '00';
  my $sleep_time = '00';
  my $sec = '00';
  my $sec_alt = '00';
  my $min = '00';
  my $std = '00';
  my $vol = '00';
  my $vol_alt = '00';
  my $i = '0';
  my $rounded = '';

readingsSingleUpdate($defs{$Device},"smooth_aktiv","off",1);

## DELETE TEMP. AT-COMMANDS POTENTIALLY CREATED EARLIER BY THIS SCRIPT
  for ($i=1; $i <= 101; $i++) {
if (defined($defs{"atTmp_".$i."_".$Device})) {
    fhem "delete atTmp_".$i."_".$Device;
}   
  }

  if($duration ne 'reset') {
        readingsSingleUpdate($defs{$Device},"smooth_aktiv","on",1);
        fhem "set $Device:FILTER=$reading!=$startValue $reading $startValue";
$vol_step = (($endValue - $startValue)/100);
$time_step = ($duration / 100);

for ($i=1;$i<=100;$i += 1) {     
$vol = sprintf("%02.0f",($startValue + $i * $vol_step));
$rounded = sprintf("%.0f", $vol);
$sleep_time = ($time_step * $i);
$min = sprintf("%02.0f", (int($sleep_time/60)));
$std = sprintf("%02.0f", (int($min/60)));
$sec = sprintf("%02.0f", (int($sleep_time - 60*$min - 3600*$std)));
                if (($sec != $sec_alt) and ($vol != $vol_alt)) {
   $sec_alt = $sec;
           $vol_alt = $vol;
   fhem 'define atTmp_'.$i.'_'.$Device.' at +'.$std.':'.$min.':'.$sec." set $Device $reading $vol";
        }
          }
         fhem 'define atTmp_'.$i.'_'.$Device.' at +'.$std.':'.$min.':'.$sec.' {readingsSingleUpdate($defs{'.$Device.'},"smooth_aktiv","off",1)}';
  }
}


Gruß

Schlimbo