[Modul] SqueezeBox (Release)

Danke für’s melden.
Die ganze Funktion ist mit diesem Fehler behaftet.
Vermutlich beim umstellen auf meine Hilfs-Klassen vergessen dort die Parameter anzupassen.
Morgen kommt ein Fix.
Michael

Version 3.30 steht auf GitHub und im Store als Beta zur Verfügung.
Folgende Fehler wurden behoben:

  • Fix Fehlermeldungen im Wecker behoben.
  • Fix Fehlermeldung im Splitter bei deaktiver HTML-Playlist behoben.
  • Zusätzlicher Fix für Fehlermeldung beim Profil der TrackList.

Die Stable kommt vermutlich Ende KW 1/2020.

Danke an die Tester :wink:

Der Fehler war zwar schon mal behoben, aber wohl nicht komplett.
Sollte jetzt funktionieren.

Auch behoben.

Auch beboben.

Michael

Herzlichen Dank! Es tauchen jetzt keine Log Einträge mehr auf wenn ich in der Squeezebox Splitter Instanz den Haken bei ‚Playlist als HTML-Box anlegen‘ rausnehme.

G.

Hallo Michael,

habe in meinem IPS ein bisschen aufgeräumt, aber darüber hinaus auch mal die IP in meinem Netzwerk neu sortiert, u.a. auch von dem SqueezeBox-Player. Dieser wird auch gefunden aber will ich das Device erstellen gibt es folgende Fehlermeldung:

„Minimalwert darf nicht größer sein als der Maximalwert“ …SqueezeBoxDevice.module.php(23)…on line 141

Kannst Du damit etwas anfangen?

Joachim

Der Fehler ist in der Beta behoben. Siehe einen Beitrag über deinem.

Verstehe aber nicht warum die neue Instanz anlegen willst, wenn sie die IP Adressen ändern. Die ist doch völlig irrelevant. Läuft doch alles über den Server.
Michael

…super, Danke!

Ich habe wohl einen Fehler beim Einschlaftimer von Squeezebox festgestellt:

Wenn ich die Anzahl Minuten des Einschlaftimers einstelle, wird zwar der Timer gestartet und die Variable Ausschalten In wird korrekt angepasst. Die Variable Einschlaftimer bleibt aber auf 0, und die Variable Ausschalten In zählt nicht herunter.

Hingegen funktioniert der Einschlaftimer auf der Squeezebox korrekt.

G.

Kann ich hier nicht nachstellen. Funktioniert hier wie erwartet.
Oder ich habe dich nicht richtig verstanden.
Wenn Variablen nicht aktualisiert werden, benötige ich einen Dump der Player-Instanz, wenn der Fehler auftritt.
Michael

Ich bekomme alle 5 Minuten folgende Meldung:

17.01.2020, 06:25:49 | LMS Discovery | Hintergrundsuche nach Logitech Media Servern

kann man dies vll. abstellen? oder einschränken?

Gruß MV

:slight_smile:
Das ist doch auch nur eine Nachricht vom Typ Information.
Michael

Der gemeldete Fehler im Bereich des Sleeptimers taucht nicht mehr auf. Es lag wohl daran, dass ich mit der Variable ein eigenes Action Script verbunden hatte.

G.

Guten Abend,
ich habe ein Problem mit dem Squeezebox Modul. Ich habe letzte Woche Mittwoch mal auf die aktuelle Version im Store geupdatet. Nebenbei auch das Pushover-Modul und das Homekit-Modul. Erst am nächsten Tag merkte ich, dass die Bewegungsmelder das Licht nicht mehr anschalten und dass das ganze System träge ist.
Symcon läuft auf nem Pi2 mit installiertem Mediaserver und 2 Squeezeplayern. Nach näherem hinschauen war die CPU Auslastung auf einmal nicht mehr bei 5-15% sondern bei 60-100%. Im Symcon PHP waren alle Threads rot, wurden aber abgearbeitet. Die Zeit hing im PHP Thread-Fenster 30min hinterher. Auf dem Pi stimmte die Zeit aber. Nach Reset erstmal wieder alles i.O. aber nach und nach passiert das ganze wieder. Nach deinstallieren der Module zum Ausschliessen bin ich drauf gekommen, dass es das Squeezeboxmodul ist.

Was kann das sein? Bzw. was brauchst du zur Fehleranalyse?

Grüße
Matthias

Welche Scripte waren das?

Gibt es Fehler im Logfile?

Hast du den Spezialschalter OPCache aktiviert?
Und den Kompatibilitätsmodus aus?
Beides bringt mehr Leistung.
Michael

Nabend.
Ich habe mich gerade über die Größe meiner Log Dateien gewundert und dabei ist mir aufgefallen, dass ich immer wieder folgende Einträge im Log vorfinde, wenn ein Player läuft:



function sendError25937(data)
{
var notify = document.getElementsByClassName("ipsNotifications")[0];
var newDiv = document.createElement("div");
newDiv.innerHTML ='<div style="height:auto; visibility: hidden; overflow: hidden; transition: height 500ms ease-in 0s" class="ipsNotification"><div class="spacer"></div><div class="message icon error" onclick="document.getElementsByClassName(\'ipsNotifications\')[0].removeChild(this.parentNode);"><div class="ipsIconClose"></div><div class="content"><div class="title">Fehler</div><div class="text">' + data + '</div></div></div></div>';
if (notify.childElementCount === 0)
	var thisDiv = notify.appendChild(newDiv.firstChild);
else
	var thisDiv = notify.insertBefore(newDiv.firstChild,notify.childNodes[0]);
var newheight = window.getComputedStyle(thisDiv, null)["height"];
thisDiv.style.height = "0px";
thisDiv.style.visibility = "visible";
function sleep (time) {
  return new Promise((resolve) => setTimeout(resolve, time));
}
sleep(10).then(() => {
	thisDiv.style.height = newheight;
});
}

</script><colgroup>
<col width="35em" />
<col width="35em" />
<col width="400em" />
<col width="400em" />
<col width="95em" />
<col width="35em" />
</colgroup>
<thead style="">
<tr><th style="color:#ffffff;text-align:left;;"></th><th style="color:#ffffff;text-align:center;;">Pos</th><th style="color:#ffffff;text-align:left;;">Titel</th><th style="color:#ffffff;text-align:left;;">Interpret</th><th style="color:#ffffff;text-align:left;;">Bitrate</th><th style="color:#ffffff;text-align:left;;">Dauer</th></tr>
</thead>
<tbody style="">
<tr style="background-color:#408080;color:#ffffff;" onclick="eval(document.getElementById('script25937').innerHTML.toString()); window.xhrGet25937({ url: 'hook/SqueezeBoxPlaylist25937?Type=Track&ID=1&Secret=%2F6KPxfkq2Z6j%2FvUCasCoKSENiUk%3D' });"><td style="text-align:left;;"><div class="iconMediumSpinner ipsIconArrowRight" style="width: 100%; background-position: center center;"></div></td><td style="text-align:center;;">1</td><td style="text-align:left;;">New Age</td><td style="text-align:left;;">Marlon Roudette</td><td style="text-align:left;;">128kb/s CBR</td><td style="text-align:left;;">00:00</td></tr></tr>
</tbody>
</table>

16.02.2020 09:10:55 | 29446 | MESSAGE | VariableManager      | [Media\Squeezeboxen\Kueche\Playlist] = <table style="margin:0 auto; font-size:0.8em;">
<script type="text/javascript" id="script25937">
function xhrGet25937(o)
{
    var HTTP = new XMLHttpRequest();
    HTTP.open('GET',o.url,true);
    HTTP.send();
    HTTP.addEventListener('load', function()
    {
        if (HTTP.status >= 200 && HTTP.status < 300)
        {
            if (HTTP.responseText !== 'OK')
                sendError25937(HTTP.responseText);
        } else {
            sendError25937(HTTP.statusText);
        }
    });
}



Das ist doch etwas seltsam oder? Kann mir jemand helfen?

Nö, ist nicht seltsam.
Das ist die Playlist als HTMLBox.
Diese sollte sich nur beim Wechsel des Tracks aktualisieren.
Michael

Hm, ok. Aber warum wird bei mir im Aktualisierungsintervall (4sek) das Log damit zugeballert? :wink:

Zu deinen Fragen:
OPCache hab ich nicht an und Kompatibilitätsmodus auch nicht. Scheint kein Problem der Performance zu sein.

So ich hab jetzt auch mal nachgeforscht.
Er kann laut log auf einmal eine Playlist nicht mehr lesen und versucht es dann im Sekundentakt. Jetzt ist natürlich die Frage warum kann er sie auf einmal nicht lesen…

Zuerst kommt im Log einmal:
14/02/20 00:24:30 | 49078 | ERROR | KernelMT | InstanceManager: Error for Instance #47227, Message VM_UPDATE: <br />
<b>Notice</b>: No anwser from LMS in <b>/var/lib/symcon/modules/.store/de.nall.chan.logitech.squeezebox/SqueezeBoxDevice/module.php</b> on line <b>3643</b><br />
<br />
<b>Notice</b>: Error on read playlist in <b>/var/lib/symcon/modules/.store/de.nall.chan.logitech.squeezebox/SqueezeBoxDevice/module.php</b> on line <b>3122</b><br />

und dann spammt er nacheinander:
14/02/20 16:54:13 | 17263 | DEBUG | VariableManager | [Bad\Squeezebox Bad\Max2Play_Bad\Playlist] = <table style=„margin:0 auto; font-size:0.8em;“>
<script type=„text/javascript“ id=„script47227“>
function xhrGet47227(o)
{
var HTTP = new XMLHttpRequest();
HTTP.open(‚GET‘,o.url,true);
HTTP.send();
HTTP.addEventListener(‚load‘, function()
{
if (HTTP.status >= 200 && HTTP.status < 300)
{
if (HTTP.responseText !== ‚OK‘)
sendError47227(HTTP.responseText);
} else {
sendError47227(HTTP.statusText);
}
});
}

function sendError47227(data)
{
var notify = document.getElementsByClassName(„ipsNotifications“)[0];
var newDiv = document.createElement(„div“);
newDiv.innerHTML =’<div style=„height:auto; visibility: hidden; overflow: hidden; transition: height 500ms ease-in 0s“ class=„ipsNotification“><div class=„spacer“></div><div class=„message icon error“ onclick=„document.getElementsByClassName(‚ipsNotifications‘)[0].removeChild(this.parentNode);“><div class=„ipsIconClose“></div><div class=„content“><div class=„title“>Fehler</div><div class=„text“>’ + data + ‚</div></div></div></div>‘;
if (notify.childElementCount === 0)
var thisDiv = notify.appendChild(newDiv.firstChild);
else
var thisDiv = notify.insertBefore(newDiv.firstChild,notify.childNodes[0]);
var newheight = window.getComputedStyle(thisDiv, null)[„height“];
thisDiv.style.height = „0px“;
thisDiv.style.visibility = „visible“;
function sleep (time) {
return new Promise((resolve) => setTimeout(resolve, time));
}
sleep(10).then(() => {
thisDiv.style.height = newheight;
});
}

</script><colgroup>
<col width=„50em“ />
<col width=„50em“ />
<col width=„250em“ />
<col width=„250em“ />
<col width=„100em“ />
</colgroup>
<thead style="">
<tr><th style=„color:#ffffff;text-align:center;;“></th><th style=„color:#ffffff;text-align:center;;“>Pos</th><th style=„color:#ffffff;text-align:center;;“>Title</th><th style=„color:#ffffff;text-align:center;;“>Artist</th><th style=„color:#ffffff;text-align:center;;“>Duration</th></tr>
</thead>
<tbody style="">
</tbody>
</table>

@cor82
Opcache musst du aktivieren für mehr Leistung :smiley:

Wenn die Fehlermeldung kommt, sind zu dem Zeitpunkt alle PHP-Threads belegt?

Und, das auch für @ChristianL :
Ich hätte gerne ein Debug des Splitter und der Player-Instanz wenn er anfängt die Playliste zu spammen.
Das sieht nach einem Bug aus.
Michael

Hoffe das reicht, hab’s ne Zeitlauf laufen lassen…

dump.txt (16.7 KB)

dump_1.txt (24.1 KB)

So ich habe jetzt auch mal wieder das Modul installiert zum testen. Ich habe ja 2 Player Bad und Wohnzimmer. Problem scheint er mit dem Bad zu haben. Irgendwann kommt im Log:

20/02/20 10:25:29 | 21994 | ERROR | KernelMT | InstanceManager: Error for Instance #47227, Message VM_UPDATE: <br />
<b>Warning</b>: <br />
<b>Notice</b>: No anwser from LMS in <b>/var/lib/symcon/modules/.store/de.nall.chan.logitech.squeezebox/LMSSplitter/module.php</b> on line <b>1779</b><br />
RESULT: in <b>/var/lib/symcon/modules/.store/de.nall.chan.logitech.squeezebox/SqueezeBoxDevice/module.php</b> on line <b>3613</b><br />

Und dann wird wieder das log voll gespammt, der Pi geht in Überlast, die Threads werden rot und fangen an zeitlich hinterher zu hängen siehe Screenshots.

Anbei auch die Dumps vom Splitter und dem Badplayer

dump.txt (24.1 KB)

dump(1).txt (28.2 KB)