Sonos Alternative - Multiroom Audio

Hallo zusammen!

Ich habe für mich die perfekte Sonos Alternative gefunden - https://www.arylic.com/
Die Arylic Verstärker gibt es zu moderaten Preisen (auch bei Amazon), haben einen guten Klang, eine Api für IP- Symcon und es gibt eine App für IOS und Android ( leider bis jetzt nur im Hochformat).
Ich habe mehrere dieser Player ( A30, A50, S10 und DIY Boards) im Einsatz und via PHP Scripte an Symcon recht simpel angebunden.
Leider bin ich kein großer Programmierer, deshalb gibts noch kein Modul :joy::joy::grimacing:.
Vielleicht sucht ja der eine oder andre mal eine leistbare Alternative zu Sonos, deshalb mein Post hier :blush::blush:

Lg Chris

2 „Gefällt mir“

Hallo Chris,
ich suche ebenfalls nach einer alternative. Hörten sich sehr interessant an die Arylic Produkte. Vom Preis her wirklich interessant.
Was seuerst du alles mit deinem PHP Script?
Könntest du dieses bitte hier einstellen?
Vorab vielen Dank!
Vg Thomas

Hallo!
Hier mal eine Übersicht über die Variablen und Scripte:

Die API ist recht einfach und hier zu finden:
https://developer.arylic.com/httpapi/#http-api

lg Chris

Ok, danke!
Ich habe mir jetzt den Arylic S10 Streamer bestellt.
Könntest du mir vielleicht ein paar deiner Scripte zusenden. Würde mir Recherche ersparen :slight_smile:
Die wichtigsten Befehle zumindest (Play, Pause, Volume…).
Vorab vielen Dank!

Hallo zusammen,

ich habe jetzt hier auch so ein Ding liegen, Up2Stream Amp 2.0 v4.
Macht einen guten Job und wartet auf den Einbau im Badezimmer …

Die Steuerung per API ist ja tatsächlich recht easy.

<?php
$ip="192.168.0.211";
Sys_GetURLContent("http://$ip//httpapi.asp?command=setPlayerCmd:play:http://wdr-1live-live.icecast.wdr.de/wdr/1live/live/mp3/128/stream.mp3");

… spielt 1Live ab. Die anderen Kommandos sind ja prima der API-Dokumentation zu entnehmen. (ggf. sollte man vorher noch auf WIFI schalten und ggf. auch eine überschaubare Lautstärke setzen …)

Ich frage mich nun - bin halt kein PHP-Crack:
Wie kann ich die Variablen, die getPlayerStatus und getStatusEx ausgeben, in Symcon-Variablen speichern, um sie zu visualisieren?
Und muss ich die in Symcon alle von Hand anlegen, oder kann ich das per Script erledigen lassen?

Vom Design her: würdet ihr pro Kommando ein Script anlegen, oder macht man besser ein Steuerungsscript und übergibt den Befehl bei Aufruf („arylic.php Badezimmer play 1live“)?

Was ich in der API nicht gefunden habe, ist 1.) auf die Favoriten zuzugreifen oder 2.) auf Spotify/Deezer als Input zu schalten. Das scheint eine Unter-Quelle von WIFI zu sein, wenn ich das richtig sehe.

Viele Grüße
Karsten

Programmkonzept: Ein Script mit ein paar Funktionen z.B. „parseRespsonse“ und „generateRequest“ erstellen. Dieses Script dann per Include in jedem Sub-Programm aufrufen. Bzw. würde ich nur ein einziges ActionScript schreiben und über switch($_IPS[‚VARIABLE‘]) zwischen den Variablen unterscheiden. Ich habe etwas ähnliches für Mopidy (Musikplayer per websocket) geschrieben. Das könnte ich dir als Beispiel zur Verfügung stellen.

Oh, das wäre cool, gerne! Das klingt auch für mich nach einem besseren Konzept, als zig Einzelskripte zu erstellen.
Es wundert mich zwar, dass sich zu den Stichworten Arylic/Up2Stream/Linkplay hier im Forum bisher nichts findet, aber ich denke, alles, was wir hier dazu zusammenstellen, ist auch für andere nützlich. (Oder alle finden das so trivial, dass keiner fragt :wink:)

Hallo!
Zugriff auf Favoriten habe ich so gelöst:

$content = Sys_GetURLContent(„http://$IP_Adresse/httpapi.asp?command=MCUKeyShortClick:3“);

für Favorit 3

Mit dem Device Monitor Modul frage ich den Online Status des Players ab.
Die Variablen hole ich mir so (sicher nicht die schönste Variante aber es klappt gut :wink: ):

<?php

error_reporting(0);

$Player_online 					=        GetValue(54615);
$IP_Adresse 					=        GetValue(40125);

$Zonenname				        =       40835;

$Ein_Aus				        =       31385;
$Title					        =       38183;
$Artist					        =       35302;
$Album					        =       10624;
$Volume					        =       14348;
$Mute					        =       17787;
$IUri					        =       32083;
$Uri					        =       34741;


if ($Player_online == true)
{


//device imformation
//http://192.168.100.109/httpapi.asp?command=getStatusEx
$content = Sys_GetURLContent("http://$IP_Adresse/httpapi.asp?command=getStatusEx");
$json = json_decode($content);

//print_r($json);

//Zonenname
//echo ($json->DeviceName);
SetValue($Zonenname, $json->DeviceName);


//playback state
//http://192.168.100.109/httpapi.asp?command=getPlayerStatus
$content = Sys_GetURLContent("http://$IP_Adresse/httpapi.asp?command=getPlayerStatus");
$json = json_decode($content);

//print_r($json);

//Status
//echo ($json->status);
if((($json->status) == "play") or (($json->status) == "load"))
    {
    SetValue($Ein_Aus, true);
    }
else
    {
    SetValue($Ein_Aus, false);
    }


//Title
//echo ($json->Title);
//echo hexToStr($json->Title);
SetValue($Title, hexToStr($json->Title));


//Artist
//echo ($json->Artist);
//echo hexToStr($json->Artist);
SetValue($Artist, hexToStr($json->Artist));


//Album
//echo ($json->Album);
//echo hexToStr($json->Album);
SetValue($Album, hexToStr($json->Album));


//Volume
//echo ($json->vol);
SetValue($Volume, $json->vol);


//Mute
//echo ($json->mute);
SetValue($Mute, $json->mute);


//iuri
//echo ($json->iuri);
//echo hexToStr($json->iuri);
SetValue($IUri, hexToStr($json->iuri));


//uri
//echo ($json->uri);
//echo hexToStr($json->uri);
SetValue($Uri, hexToStr($json->uri));

}

function hexToStr($hex)
{
    $string='';
    for ($i=0; $i < strlen($hex)-1; $i+=2){
        $string .= chr(hexdec($hex[$i].$hex[$i+1]));
    }
    return $string;
 }

Vielleicht schreibt ja mal wer ein Modul dazu, mir fehlt hierzu leider ein wenig die Zeit und das Wissen dazu :smirk:

lg Chris

1 „Gefällt mir“

ach, cool, so einfach ist das mit den Favoriten … danke! Dann fehlt mir ja nur noch das Tablet mit Halterung an der Wand neben den Lichtschaltern. :smiley:
Leider kann ich das erst in einigen Tagen testen - jetzt steht erstmal Badsanieren an und der Player ist für ein paar Tage eingemottet.

Hallo Zusammen,
wie schon oben geschrieben habe ich mir den Arylic S10 Streamer bestellt.
Ich möchte euch nach gut einer Woche Testphase meine Meinung nicht vorenthalten.
Das gerät hält voll was es verspricht. Die Bedienung egal ob per App oder API Befehl ist flüss und funktioniert ohne Probleme. Keine Aufhänger oder unterbrechungen der Streams.
Das ist nicht bei allen Geräten so. Habe da auch schon negative Erfahrung mit anderen Herstellern gemacht.
Die Doku für die API Befehle ist umfangreich und auch für Laien gut verständlich. Mit Beispielen die auf Anhieb klappen.
Rundum bin ich voll zufrieden mit dem Gerät und würde es mir jederzeit wieder kaufen.
Was noch super wäre, wenn es hierzu ein IPS Modul gäbe. Ich bin da zu wenig Experte und bastle mir die Befehle einfach nach meinen Bedürfnissen zusammen. Vielleicht nimmt sich ja jemand drum an, denn die Arylic Geräte wären es allemahl Wert!
Vg Thomas

1 „Gefällt mir“

Grundsätzlich würde ich Anbieten mein Heos bzw. Mopidy Modul/Script so umzuschreiben, dass es mit Arylic funktioniert. Wobei ich etwas überrascht von der sehr niedrigen Resonanz war. Denn ich habe in 11 Monaten genau zwei Nachrichten erhalten.

Aber ich habe kein Gerät und habe auch nicht vor mir eins zu kaufen. Und nur nach Doku, ist es doch etwas mühselig.

Falls also jemand bereit ist mir ein Gerät (bei wirklich Multiroom auch zwei) mal vier Wochen zuzusenden, könnte man sich daran versuchen.

Das mit der niedrigen Resonanz irritiert mich auch, vor allem, weil es die Dinger ja zum Basteln als auch als Set-Top-Box gibt - und sie LinkPlay-kompatibel und unabhängig von der Lautsprecher-Hardware sind. Aber zugegeben - ich bin auch erst nach einiger Suche darauf gestoßen, die üblichen Verdächtigen wie halt eben Sonos scheinen offenbar so hell, dass man die wertvollen Alternativen nicht direkt findet.

Hier im Forum dürften die Arylic/Upstream-Geräte aber eine valide Alternative sein, von daher wäre ein Modul/Script natürlich genial.
Dein Angebot ist klasse! Ich müsste überlegen, ob bzw. wann ich das hinbekomme - eigentlich steht aber genau jetzt nun der Einbau in die Trockenbaudecke an … :blush: Ansonsten muss ich mir das mal über die Weihnachtstage schauen, wenn das Ding einsatzbereit ist.

Hallo Leute,

vielen Dank für den Fingerzeig auf Arylic - hatte ich ja nicht mal ansatzweise auf dem Schirm :wink:
dafür aber jetzt auch einen (A30+ via Amazon) und somit das Wochenende gerettet.

Macht echt Laune die kleine Kiste mit einem Paar JBL Control ONE dran.
Und ja, tolle API mit Beispielen - so macht das Spass.

Euch somit auch ein schönes WE
LG Tom

Hi Folks,

die APCWorkbench (20€) ist echt ihr Geld wert, man(n) muss sich da nur etwas durchfuchsen,
zumal ich erst recht spät gemerkt habe, das man die Veränderungen live direkt Probehören kann ohne jedesmal vorher speichern zu müssen :+1:.

Ein „Handbuch“ im PDF Format dazu wird übrigens im Rakoit-Install Verzeichnis abgeworfen - wirft aber fast mehr Fragen als Antworten auf - noch :wink:

Obacht: ich weiß nicht, ob die SW für jedes Board passt … ich habe „nur“ den A30+

Was mir bisher andererseits bei der API bisher aufgefallen ist:

  • der EQ- und der Mute Wert ändern sich (bisher) garnicht
  • ein Abholen der Fileliste vom USB Stick per ‚getLocalPlayList‘ liefert zwei komische Dinge:
    1. die Liste ist nicht nur unvollständig (mehrere hundert Dateien fehlen, obwohl weniger als 1024 vorhanden sind) und
    2. der JSON String wird nicht vollständig geschlossen (da fehlt also auch das Ende = Klammern und so [siehe 1.]) was den JSON Parser natürlich gänzlich irritiert.

Sieht aus, als wäre nach x-Bytes einfach mal Schluss mit Daten …

Das kann natürlich auch einem Layer 8 Fehler (also Anwender tauschen) geschuldet sein - weil ja noch recht neue Materie, aber vielleicht wisst Ihr da ja mittlerweile mehr …

Ich war echt überrascht das der Stick auch NTFS formatiert sein darf …

To be continued - stay tuned :bulb:

Ich freue mich auf Eure Erkenntnisse
LG Tom