Hallo Gemeinde,
@ wibo050447
danke für die Rückkopplung. Eine Initialisierung sollte nicht notwendig sein. Das System soll out of the box funktionieren. Essentiell ist nur als ersten Schritt einen SSDP-Request durchzuführen, damit die Arrays für die Devices und Server erstellt werden (das war letztlich in der Initialisierung).
@ kallii
wenn eine ältere Version bei Dir funktionierte, warum nimmst Du die dann nicht ? Kannst Dich ja auch selbst daran versuchen …
Die letzte Version war ja auch für Portierung ungetestet (wie geschrieben).
Dennoch habe ich mal den heutigen Stand zusammengepackt:
Multimedia_2015-04-22.zip (759 KB)
Vorher den Baum Multimedia löschen und ggf. Playlists aus IP-Symcon/media/Multimedia sichern. Habe die Installation testweise erfolgreich auf mein Surface gebeamt. Nur den alten Item musste ich im WFC löschen.
Wer helfen will, kann sich ja mal damit befassen:
Ein (zeitweises) Problem sind nach wie vor die SSDP M-Search Abfragen. Ich habe da bisher keine stabile Abfrage zustande bekommen. Meist funktioniert diese beim ersten Aufruf. Bei nachfolgenden Aufrufen in kurzem Abstand bekomme ich jedoch nur lokale IP´s (127.0.0.1) herein. Ein zurück wechseln auf einen UDP-Socket und Abfrage darüber schliesst mir jedoch immer die WLAN-Geräte aus. Ich habe keine Ahnung woran weder das eine noch das andere liegen könnte, nehme aber an, dass es mit Windows selbst (svchost) in Konflikt kommt.
Ich habe auch gesucht, ob Windows selbst eine Datei aller Geräte, die es durch die Netzwerksuche ermittelt, anlegt. Gefunden habe ich bisher noch nichts. Dennoch wäre es geschickt, wenn man so eine Datei einfach auslesen könnte.
In der UPNP_SSDP_Request.ips.php (unter Multimedia/Core/SSDP) wird eine Funktion zum SSDP M-Search (function msearch($ST) - diese findet man in UPNP_Discovery_Functions.ips.php unter Multimedia/Core) aufgerufen:
function mSearch($ST)
{
error_reporting(E_ALL | E_STRICT);
//Variablen------------------------------------------------------------------
$USER_AGENT = 'WINDOWS, UPnP/1.0, Intel MicroStack/1.0.1497';
//$USER_AGENT = 'Windows/6.0 UDAP/2.0 IP-Symcon DLNA';
$MULTICASTIP = '239.255.255.250';
$MX = '3';
$MAN = 'ssdp:discover';
$sockTimeout = '30';
//Message--------------------------------------------------------------------
$msg = 'M-SEARCH * HTTP/1.1' . "
";
$msg .= 'HOST: '.$MULTICASTIP.':1900' . "
";
$msg .= 'MAN: "'. $MAN .'"' . "
";
$msg .= 'MX: '. $MX ."
";
$msg .= 'ST: ' . $ST ."
";
$msg .= 'USER-AGENT: '. $USER_AGENT . "
";
$msg .= '' ."
";
//MULTICAST MESSAGE absetzen-------------------------------------------------
$sock = socket_create( AF_INET, SOCK_DGRAM, getprotobyname('udp') );
$opt_ret = socket_set_option( $sock, SOL_SOCKET, SO_REUSEADDR, 1 );
$send_ret = socket_sendto( $sock, $msg, strlen( $msg ), 0, $MULTICASTIP, 1900);
//TIMEOUT setzen-------------------------------------------------------------
socket_set_option( $sock, SOL_SOCKET, SO_RCVTIMEO, array( 'sec'=>$sockTimeout, 'usec'=>'0' ) );
//RESPONSE empfangen und bearbeiten (parseMSearchResponse())-----------------
$response = array();
do
{
unset( $buf );
@socket_recv( $sock, $buf, 4096, MSG_WAITALL );
if( !is_null($buf) ) $response[] = parseMSearchResponse( $buf );
}
while( !is_null($buf) );
//SOCKET schliessen----------------------------------------------------------
socket_close( $sock );
return $response;
print_r ($response);
}
Diese ist sicher nicht ganz perfekt. Vielleicht hat ja jemand eine Idee diese zu verbessern. Diese Funktion sollte jedenfalls ein Array mit allen erreichten Geräten zurückgeben wie z.B.:
Array
(
[0] => Array
(
[HTTP] => HTTP/1.1 200 OK
[ST] => upnp:rootdevice
[CACHE-CONTROL] => max-age=1800
[USN] => uuid:fb26bf43-353d-493c-933e-47cbdbcf1ed6::upnp:rootdevice
[LOCATION] => http://192.168.178.64:20000/
[SERVER] => Windows NT/5.0, UPnP/1.0
)
[1] => Array
(
[HTTP] => HTTP/1.1 200 OK
[ST] => uuid:fb26bf43-353d-493c-933e-47cbdbcf1ed6
[CACHE-CONTROL] => max-age=1800
[USN] => uuid:fb26bf43-353d-493c-933e-47cbdbcf1ed6
[LOCATION] => http://192.168.178.64:20000/
[SERVER] => Windows NT/5.0, UPnP/1.0
)
[2] => Array
(
[HTTP] => HTTP/1.1 200 OK
[ST] => urn:schemas-upnp-org:device:MediaServer:1
[CACHE-CONTROL] => max-age=1800
[USN] => uuid:fb26bf43-353d-493c-933e-47cbdbcf1ed6::urn:schemas-upnp-org:device:MediaServer:1
[LOCATION] => http://192.168.178.64:20000/
[SERVER] => Windows NT/5.0, UPnP/1.0
)
[3] => Array
(
[HTTP] => HTTP/1.1 200 OK
[ST] => urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1
[CACHE-CONTROL] => max-age=1800
[USN] => uuid:fb26bf43-353d-493c-933e-47cbdbcf1ed6::urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1
[LOCATION] => http://192.168.178.64:20000/
[SERVER] => Windows NT/5.0, UPnP/1.0
)u.s.w
Gefiltert wird dann nach den bereitgestellten Services der Devices und Server später. Also nicht wundern, wenn hier zahlreiche Einträge auftauchen (wie bei mir gerade eben 88). Ich setze einen SSDP:all ab -> Die Geräte haben mehrere Services. Das könnte man auch spezifischer machen, wollte ich aber nicht.
Um Playlists habe ich mich in letzter Zeit nicht gekümmert…![:wink: :wink:](https://community.symcon.de/images/emoji/win10/wink.png?v=9)
Hinzu gekommen sind in letzter Zeit Veränderungen der Device und Server - Verarbeitung, ein kompletter Reset, etc.
Viele Grüße
André