Danke, dass du mir dabei helfen möchtest.
Ich habe den Befehl einmal ausgeführt - zur Sicherheit auch als Admin. (Generell habe ich auch angefangen mir ein kleines php Skript zu basteln, was auch diese Befehle sendet, aber ich habe es zur Sicherheit auch noch einmal explizit über die Shell auf dem NAS gemacht. Das PHP Skript nutzt curl und funktioniert soweit auch mit dem unten beschriebenen.).
Also der Befehl liefert folgendes (ich hab die ID hier etwas verfälscht - aber das tut ja nichts zur Sache - weiß nicht genau wie geheim man diese halten sollte):
Rich (BBCode):
{
"data": {
"players": [
{
"id": "10AE601086AA",
"is_multiple": false,
"name": "AFTB",
"password_protected": false,
"support_seek": true,
"support_set_volume": true,
"type": "airplay"
},
{
"id": "__SYNO_Multiple_AirPlay__",
"is_multiple": true,
"name": "Multiple AirPlay Devices",
"password_protected": false,
"support_seek": true,
"support_set_volume": true,
"type": "airplay"
}
]
},
"success": true
}
Ich habe mal basierend auf diesem Link:
https://forum.synology.com/enu/viewtopic.php?t=102647 den dort genannten Radiosender (war zu faul nen anderen zu suchen) auf dem AFTB abgespielt. Dafür habe ich natürlich die ID entsprechend auf die des AFTB gesetzt. Das funktioniert auch. Der Radiosender schallte fröhlich aus den Boxen. Letztendlich ist AFTB eine AirPlay Receiver App auf meinem FireTV. Man sieht aber, dass die Chromecast Geräte mit dem Befehl nicht aufgelistet werden.
Ich sollte noch dazu sagen, dass die Chromecast Geräte auch nicht in der Audio Station im Browser als Geräte angezeigt werden. Dies ist mal im folgenden Screenshot gezeigt:
Das die Chromecasts aber auf jeden Fall funktionieren weiß ich 1. aus der DS Audio App (Android) dort nutze ich Chromecast regelmäßig und 2. der Browser Chrome ermöglicht es mir auch den Ton auf einem Chromecast Gerät auszugeben. Aber das ermöglicht mir halt leider noch nicht so direkt einen "Stream" auf ein Chromecast Gerät über ein PHP Skript oder Shell Skript zu senden.
Ich vermute, dass dort nochmal eine zusätzliche API Schnittstelle genutzt wird - gegebenenfalls auch in Kombination mit einer Chromecast API Schnittstelle? Eine Theorie ist, dass die Chromecasts erst über die Chromecast API oder so gesucht werden müssen und man dann einen irgendwie generierten Stream/Playlist dort hin ballern kann. Ich habe aber auch so spontan noch keinen Ansatz, da ich mich damit im Rahmen von Entwicklung noch nicht auseinander gesetzt habe - bisher habe ich Chromecast einfach genutzt
Ich habe auch hier mal geschaut:
https://github.com/kwent/syno/blob/master/definitions/AudioStation/6.0.1-3092/AudioStation.api (
https://github.com/kwent/syno) dort habe ich mir auch versucht ein paar Befehle heraus zu suchen - aber da finde ich so spontan auch nichts (oder ich übersehe etwas).
Über jede Idee bin ich auf jeden Fall dankbar.
___________________________________________
Hier mal noch die PHP Schnipsel mit denen ich momentan rumspiele für die Leute die es interessiert. Ob das so sinnvoll, effizient, sicher etc. ist, weiß ich aber noch nicht. Erstmal war ich froh, dass es funktioniert hat
.
PHP:
/* STEP 1 create temporary cookie file */
$ckfile = tempnam("/tmp", "CURLCOOKIE");
/* STEP 2 login to set cookie properly */
$ch = curl_init ("http://IPNAS:5000/webapi/auth.cgi?api=SYNO.API.Auth&version=2&method=login&account=USERNAME&passwd=PASSWORT&session=AudioStation&format=cookie");
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);
echo $output.'<br /><br />'; //sollte success ausgeben
/* STEP 3 do something in Audio Station */
//read playlists
$ch = curl_init ("http://IPNAS:5000/webapi/AudioStation/playlist.cgi?api=SYNO.AudioStation.Playlist&version=2&method=list");
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);
$jsonOut = json_decode($output,true);
//listet nun alle Playlists auf - Einfache Liste, um überhaupt erstmal etwas zu sehen!
echo "<b>".count($jsonOut['data']['playlists'])." Playlists vorhanden!</b><br>";
foreach($jsonOut['data']['playlists'] as $playlist)
{
echo "<ul>";
echo "<li>id: ".$playlist['id']."</li>";
echo "<li>library: ".$playlist['library']."</li>";
echo "<li>name: ".$playlist['name']."</li>";
echo "<li>path: ".$playlist['path']."</li>";
echo "<li>sharing_status: ".$playlist['sharing_status']."</li>";
echo "<li>type: ".$playlist['type']."</li>";
echo "</ul>";
}
/* STEP 4 logout and destroy cookiefile*/
$ch = curl_init ("http://IPNAS:5000/webapi/auth.cgi?api=SYNO.API.Auth&version=2&method=logout&session=AudioStation");
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
echo $output.'<br><br>'; //sollte auch ein success geben
unlink($ckfile);