• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

[C#] - Sonos-App für Windows Phone ?

ElricM

Core Quäler

Registriert
14 Juli 2013
Beiträge
2.034
Hallo Coder,

ich bin seit einer Woche stolzer Besitzer einer Multi-Roomanlage von SONOS. Besteht derzeit aus 3 Lautsprecher (PLAY1 und PLAY3), einer Bridge und einer Connect.

Es gibt auch eine Windows-Desktop-Software, die so leidlich funktioniert, aber wer will schon die Musikanlage jedes Mal über den PC steuern. Meine Frau ist mir da schon an den Hals gegangen :) Es gibt die üblichen Apps für IPhone und Android, aber nix für Windows Phone.
Zumindest nichts offizielles vom Hersteller. Es existieren zwar zwei Apps aus der "Heimecke", aber die taugen nicht sehr viel. Ich habe dann meiner Frau eine Logitec Harmony Ultimate besorgt, da geht's dann auch über Fernbedienung, aber auch hier ist das Featureset ziemlich traurig (Laut, Leise, Starten, Stoppen und Musik aus einer Favoritenliste auswählen).

Mich ärgert das und gestern Abend habe ich eine Hackingsession mit Wireshark unternommen und der PC-Software mal unter den Rock geschaut. Auf den Abspielgeräten findet sich ein Linux mit einer Webschnittstelle auf Port 1400. Die Kommunikation findet per Webrequests (Soap POSTs) und ... ei ei per UPnP statt.
Jetzt juckt es mich gewaltig, eine eigene App für Windows Phone 8.1 und Windows Store App 8.1 auf der Basis von Universal Apps aus VS 2013 zu schreiben. Hat hier schon jemand praktische Erfahrung mit dem Thema ?

Grüße
ElricM
 

ElricM

Core Quäler

Registriert
14 Juli 2013
Beiträge
2.034
  • Thread Starter Thread Starter
  • #2
UPnP unter Windows RT ist wohl eher untrivial. Unter "normalen" Windows gibt es eine Menge Ansätze, die auf einer guten alten COM-Dll (UPnP 1.0 Type Library (Control Point)) basieren. Das scheidet für Windows Store und Windows Phone aus. Also selbst ist der Entwickler :)

Alles fängt mit dem Auffinden der Devices an, dafür gibt es das ( Simple Service Discovery Protokoll ).

Ein HTTP-Request mit einem UPD-Multibroadcast auf Port 1900 sollte es regeln.

[src=csharp]
string message = "M-SEARCH * HTTP/1.1\r\n" +
"HOST: 239.255.255.250:1900\r\n" +
"ST:upnp:rootdevice\r\n" +
"MAN:\"ssdp:discover\"\r\n" +
"MX:3\r\n\r\n";
[/src]

Hier gibt es hoffentlich die nötigen Backgrounds: http://upnp.org/sdcps-and-certification/standards/

Dann versuche ich mal mein Glück. :)
 

godlike

Warp drölf
Veteran

Registriert
13 Juli 2013
Beiträge
14.327
Ort
Topkekistan
Hat jetzt zwar nichts mit Programmierung zu tun aber hast du mal nach Yatse oder BubbleUpnP gesucht? Damit sollte eine Steuerung ja möglich sein.
 

tm98

Dreikäsehoch

Registriert
14 Juli 2013
Beiträge
826
Ort
Günxmürfel
Als Sonos und eventuell bald Windowsphone User finde ich das sehr interessant. Falls du da tatsächlich was bastelst, halt uns bitte auf dem Laufenden.
 

ElricM

Core Quäler

Registriert
14 Juli 2013
Beiträge
2.034
  • Thread Starter Thread Starter
  • #5
Hat jetzt zwar nichts mit Programmierung zu tun aber hast du mal nach Yatse oder BubbleUpnP gesucht? Damit sollte eine Steuerung ja möglich sein.

Ist doch beides für Android ? Aber nicht für Windows (Phone).

--- [2015-03-24 21:01 CET] Automatisch zusammengeführter Beitrag ---

Als Sonos und eventuell bald Windowsphone User finde ich das sehr interessant. Falls du da tatsächlich was bastelst, halt uns bitte auf dem Laufenden.

Mache ich :)
 

ElricM

Core Quäler

Registriert
14 Juli 2013
Beiträge
2.034
  • Thread Starter Thread Starter
  • #7
Nach einigen Anregungen aus dem Netz und ein bisschen Inspiration komme ich auf folgendes

[src=csharp] public async void SearchForDevices()
{
var socket = new DatagramSocket();
socket.MessageReceived += async (sender, args) =>
{
DataReader reader = args.GetDataReader();

uint count = reader.UnconsumedBufferLength;
string data = reader.ReadString(count);
var response = new Dictionary<string, string>();
foreach (
string x in
data.Split(new[] {"\r\n", "\n"}, StringSplitOptions.None))
{
if (x.Contains(":"))
{
string[] strings = x.Split(':');
response.Add(strings[0].ToLower(), x.Remove(0, strings[0].Length + 1));
}
}

try
{
Device device = await GetXml(response);
Debug.WriteLine("Device found");
if (DeviceFound != null)
DeviceFound(this, new DeviceFoundEventArgs(device));
}
catch (WebException exp)
{
Debug.WriteLine(exp.Message);
}
};
IOutputStream stream = await socket.GetOutputStreamAsync(new HostName("239.255.255.250"), "1900");


const string message = "M-SEARCH * HTTP/1.1\r\n" +
"HOST: 239.255.255.250:1900\r\n" +
"ST:upnp:rootdevice\r\n" +
"MAN:\"ssdp:discover\"\r\n" +
"MX:3\r\n\r\n";

var writer = new DataWriter(stream) {UnicodeEncoding = UnicodeEncoding.Utf8};
writer.WriteString(message);
await writer.StoreAsync();
}[/src]

Läßt sich auch anzeigen ;)

SonosDetect.jpg
 
Oben