Squeezebox -> Clientsocket connect neu starten, wenn Verbindung möglich ist?

Hi,

wenn der Server, auf dem das Squeezecenter läuft, down bzw. runtergefahren ist, dann disconnect die Clientsocket-Instanz der Squeezebox. Wenn der Server mit Squeezecenter wieder hochgefahren ist, wird aber die Verbindung nicht wieder automatisch hergestellt, sondern man muss den Clientsocket manuell auf connected stellen.

Gibt es eine Möglichkeit, dass Clientsocket regelmäßig selbst prüft, ob eine Verbindung möglich ist und damit eigenständig auf connected stellt, bzw. ein Script was den Server (Squeezecenter) auf „is online“ prüft und dann den Clientsocket auf connected stellt?

Hat jemand eine Idee?

Ich wäre dafür sehr dankbar!

P.S. Es läuft nachwievor IPS 1 :wink:

Das war ja schon mehrfach Thema im Forum, leider gibt es hier keine Möglichkeit. Man kann nur mittels Sys_Ping prüfen ob die Verbindung auf der Netzwerkebene funktioniert, es gibt aber keinen IPS(V1) Befehl um den ClientSocket wieder automatisch zu verbinden. Das Problem habe ich mit meinem XPort leider auch.

Hi Ferengi,

Oh sorry! :o

leider gibt es hier keine Möglichkeit. … es gibt aber keinen IPS(V1) Befehl um den ClientSocket wieder automatisch zu verbinden.

Mist!
Gibts in IPS V2 die Möglichkeit?

Vielen Dank für deine Auskunft, wenns auch negativ ist.

Was mir da noch einfällt…
Gibt es eventuell irgendwo eine „Schraube“ an der man drehen kann, dass man den Abstand zwischen den Retrys verändern kann?
Mit welchem Delay werden die Retrys eigentlich gestartet?

P.S. Übrigens Glückwunsch zum Mod! Hast es verdient.

Danke für die Glückwünsche.:wink:

Gibts in IPS V2 die Möglichkeit?


IPS_ApplyChanges($id); 

Zwingt in der V2 eine Instanz zum erneuten Verbinden.

Hallo,

ich lasse in der V1 meine Fritzbox jede Nacht disconnecten und danach wieder connecten, weil ich damit auch öfter Probleme mit der Anrufsignalisierung hatte.
Das geht mit den Befehlen:IPS_GetInstanceSettings und IPS_SetInstanceSettings.
<Settings>
<Open Value=„0“/>
<Host Value=„192.168.1.1“/>
<Port Value=„1012“/>
<Retrys Value=„1“/>
</Settings>
der Open Value ist bei 0 disconnected und bei -1 connected.

Anbei mein Script als Muster, das könnte man mittels Sys_Ping noch auf deinen Fall anpassen.


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : ResetClientSocket.ips.php
Trigger  : 
Interval : 
*/
$status=IPS_GetInstanceSettings(38231);
$status=explode("
",$status);
//print_r ($status);
$status=explode("=",$status[9]);
$status=explode("/",$status[1]);
print_r ($status);
if (preg_match('/-1/',$status[0]))
{
echo "war an, erst ausmachen";
IPS_SetInstanceSettings(38231,
'<ID>
  <UniqueID Value="{3CFF0FD9-E306-41DB-9B5A-9D06D38576C3}"/>
  <ModuleName Value="ClientSocket"/>
  <ModuleType Value="1"/>
  <GUI>
    <X Value="735"/>
    <Y Value="675"/>
  </GUI>
  <Settings>
    <Open Value="0"/>
    <Host Value="192.168.1.1"/>
    <Port Value="1012"/>
    <Retrys Value="1"/>
  </Settings>
  <LOCATION>
    <NAME Value="FritzBox"/>
    <LEVEL Value="IP-SYMCON\FritzBox"/>
    <INFO/>
  </LOCATION>
  <Connection Value="25447"/>
</ID>
');
IPS_Sleep(2000);
}
IPS_SetInstanceSettings(38231,
'<ID>
  <UniqueID Value="{3CFF0FD9-E306-41DB-9B5A-9D06D38576C3}"/>
  <ModuleName Value="ClientSocket"/>
  <ModuleType Value="1"/>
  <GUI>
    <X Value="735"/>
    <Y Value="675"/>
  </GUI>
  <Settings>
    <Open Value="-1"/>
    <Host Value="192.168.1.1"/>
    <Port Value="1012"/>
    <Retrys Value="1"/>
  </Settings>
  <LOCATION>
    <NAME Value="FritzBox"/>
    <LEVEL Value="IP-SYMCON\FritzBox"/>
    <INFO/>
  </LOCATION>
  <Connection Value="25447"/>
</ID>
');
IPS_Sleep(1000);
IPS_SetInstanceSettings(38231,
'<ID>
  <UniqueID Value="{3CFF0FD9-E306-41DB-9B5A-9D06D38576C3}"/>
  <ModuleName Value="ClientSocket"/>
  <ModuleType Value="1"/>
  <GUI>
    <X Value="735"/>
    <Y Value="675"/>
  </GUI>
  <Settings>
    <Open Value="-1"/>
    <Host Value="192.168.1.1"/>
    <Port Value="1012"/>
    <Retrys Value="1"/>
  </Settings>
  <LOCATION>
    <NAME Value="FritzBox"/>
    <LEVEL Value="IP-SYMCON\FritzBox"/>
    <INFO/>
  </LOCATION>
  <Connection Value="25447"/>
</ID>
');?>

Der Befehl IPS_SetInstanceSettings ist mit Vorsicht zu genießen, da dieser bei fehlerhafter Anwendung die settings beschädigt.

@ransi

Danke für den Tipp!
Werde ich mal „ausexperimentieren“.

Hallo ransi,

nochmals vielen Dank für den Tipp!
Funktioniert einwandfrei…
Ich lasse das Script alle von Minuten triggern. Das ist ausreichend für meinen Bedarf.

<?
/*
*******************************
 Squeezecenter Clientsocket-Autoconnect
*******************************
File     : SC-Clientsocket-Autoconnect.ips.php
Trigger  : Timer
Interval : 5 Minuten
*/


$status = IPS_GetInstanceSettings(27592);
$status = explode("
",$status);
$status = explode("=",$status[9]);
$status = explode("/",$status[1]);
$server = Sys_Ping("192.168.1.1",64,1000);

//echo "
[$server]";


// Serverabfrage u. Clientsocket-Status-Abfrage
if (!substr($server,0, 4) <>'Resp')                                             // Response from Server
{
   if (preg_match('/0/',$status[0]))                                            // Status 0 = Disconnected
   {
   echo "Server ist online, Clientsocket disconnected, wird connected";

//Clientsocket auf Connected setzen
IPS_SetInstanceSettings(27592,
      '<ID>
        <UniqueID Value="{3CFF0FD9-E306-41DB-9B5A-9D06D38576C3}"/>
        <ModuleName Value="ClientSocket"/>
        <ModuleType Value="1"/>
        <GUI>
          <X Value="675"/>
          <Y Value="405"/>
        </GUI>
        <Settings>
          <Open Value="-1"/>
          <Host Value="192.168.1.1"/>
          <Port Value="9090"/>
          <Retrys Value="2"/>
        </Settings>
        <LOCATION>
          <NAME Value="SqueezeCenter - BIGFRIEND"/>
          <LEVEL Value="IP-SYMCON\IPS"/>
          <INFO/>
        </LOCATION>
        <Connection Value="59721"/>
      </ID>'
);
}}
?>

schön dass ich auch mal helfen konnte.

Hallo Ferengi,

IPS_SetInstanceSettings funktioniert in V2 nicht mehr so.
Was kann ich dafür jetzt verwenden?

P.S. Vielmehr meine ich eigentlich:
Wie kann ich den Status der Verbindung überprüfen?
Hast dzu eine Idee?

Den Befehl IPS_SetInstanceSettings gibt es in der V2 nicht mehr.
Ein Ersatz ist mir derzeit nicht bekannt.

Die Frage des Status der Verbindung wurde in einem anderen Beitrag ja schon von paresy erläutert.

Hallo Thomas,

ja, hat sich nach diesem post von paresy sowieso erübrigt.