das ich noch immer mit der programmieung fats am anfang stehe, habe ich ein sicher einfaches problem. mein script bricht nach 30sek mit timeout ab. es startet meinen av-receiver und startet danach meinen streaming client. wie kann ich das „ordentlich“ scripten ?
auch sorry fürs nicht ordentlich suchen vorher. ich bin aber eher davon ausgegangen, dass mein script an si´ch schon käse ist und wollte es gleich richtig machen und nicht einfach den timeout ändern
ich habe jetzt deinen kommentar gelesen zu set_time_limit() . das habe ich mal ins script eingebaut aber ohne erfolg. max_execution habe ich gleich gelassen. es kommt aber: Wrong parameter count for set_time_limit()
ich würde sowas über den Script-Timer lösen, dann sind beliebige Laufzeiten möglich. Ab 10 Sekunden nehme ich den Timer, daher habe ich einige Sleep dringelassen, soll ja auch nur eine kleine Hilfe sein. Aber das ist natürlich alles Geschmackssache…:rolleyes:
Dazu muss jedoch eine Zusatzvariable angelegt werden, welche den aktuellen Stand speichert. Die einzelnen Teile würde ich dann mit Switch-Case Anweisungen trennen. In etwa könnte das so aussehen:
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : webradio_on.ips.php
Trigger :
Interval :
*/
$state = GetValueInteger("Timer_state"); // das ist die Hilfsvariable
Switch ($state)
{
case 1:
COMPort_SendText(39016, "PWON");
COMPort_SendText(39016, chr(13));
IPS_Sleep(1000);
COMPort_SendText(39016, "MV20");
COMPort_SendText(39016, chr(13));
IPS_Sleep(50);
COMPort_SendText(39016, "SIDBS/SAT");
COMPort_SendText(39016, chr(13));
IPS_Sleep(50);
COMPort_SendText(39016, "Z250");
COMPort_SendText(39016, chr(13));
IPS_Sleep(50);
COMPort_SendText(39016, "Z2DBS/SAT");
COMPort_SendText(39016, chr(13));
IPS_Sleep(50);
COMPort_SendText(39016, "Z1DBS/SAT");
COMPort_SendText(39016, chr(13));
IPS_Sleep(2000);
WinLIRC_SendOnce(34135,"streamium","internet");
SetValueInteger("Timer_state",$state + 1);
IPS_SetScriptTimer($IPS_SELF ,25); // 1. Wartezeit (vorher: IPS_Sleep(25000);)
break;
case 2:
WinLIRC_SendOnce(34135,"streamium","favoriten");
IPS_Sleep(3000);
WinLIRC_SendOnce(34135,"streamium","down");
IPS_Sleep(2000);
WinLIRC_SendOnce(34135,"streamium","ok");
SetValueInteger("Timer_state", 0); // das deaktiviert den imer wieder
IPS_SetScriptTimer($IPS_SELF ,1); // die Hilfsvariable wird in den Ausgangszustand zurückgesetzt
break;
}
?>
Das kann man natürlich beliebig erweitern. Zeiten spielen hierbei keine Rolle mehr.
Hilfsvariable anlegen nicht vergessen!
<?
case 2:
WinLIRC_SendOnce(34135,"streamium","favoriten");
IPS_Sleep(3000);
WinLIRC_SendOnce(34135,"streamium","down");
IPS_Sleep(2000);
WinLIRC_SendOnce(34135,"streamium","ok");
SetValueInteger("Timer_state", 1); // die Hilfsvariable wird in den Ausgangszustand zurückgesetzt
IPS_SetScriptTimer($IPS_SELF ,0); // das deaktiviert den Timer wieder
break;
vielen dank erstmal das meint ich mit einem ordentlichen script
ich habe es so übernommen und einen integer variable Timer_script angelegt. wenn ich das script starte, passiert aber absolut nix. keine fehlermeldung aber auch keine reaktion. was habe ich vergessen ?