Hallo Thorsten,
SNS_PlayFiles() pausiert ja die aktuelle Wiedergabe, spielt die mitgegebene Datei ab und setzt dann die Wiedergabe fort. Soweit funktioniert es auch perfekt.
Nun passiert es aber bei mir ab und zu, dass zwei SNS_PlayFiles() recht dicht hintereinander folgen. Ich habe es zwar mit Semaphoren abgesichert sodass sie sich nicht ins Gehege kommen sollten, aber dennoch passiert es dann, dass nach dem zweiten Abspielauftrag die Wiedergabe nicht wieder aufgenommen wird.
Es sieht so aus, als ob der zweite Auftrag nicht mitbekommt, dass nach dem ersten Auftrag eine Wiedergabe gestartet wurde. Siehst du eine Möglichkeit, dass zu verbessern? Oder hättest du einen Tipp, wie lange und worauf ich eventuell nach dem ersten Auftrag warten müsste, bis ich den nächsten Auftrag starte?
Für SNS_PlayFilesGrouping() gilt das gleiche entsprechend.
Burkhard
Edit:
für SNS_PlayFiles() könnte die Lösung so aussehen (ab Zeile 1407):
// If it was playing before, play again
if ($transportInfo == 1) {
$this->SendDebug(__FUNCTION__ . '->sonos', 'Play()', 0);
$sonos->Play();
for ($i = 0; $i < 10; $i++){
$transportInfo = $sonos->GetTransportInfo();
//$this->SendDebug(__FUNCTION__ . '->sonos', sprintf('TransportInfo: %s', $transportInfo), 0);
if ($transportInfo !== 1){
IPS_Sleep(300);
} else {
break;
}
}
}