+ Antworten
Seite 38 von 48 ErsteErste ... 28 36 37 38 39 40 ... LetzteLetzte
Ergebnis 371 bis 380 von 476
  1. #371
    Registriert seit
    Sep 2014
    Beiträge
    5

    Hi Reiner,

    da habe ich den Mund wohl etwas voll genommen, ich bräuchte doch noch einmal Deine Hilfe:

    Was habe ich in Folgendem zu ändern (dies bezieht sich auf den removemember-Befehl aus der PHPSonos.inc.php - ich möchte den Player über den Browser ansprechen können - http://192.168.xxx.xxx/sonos2.php?zo...n=removemember - und das Folgende ist aus der sonos2.php):

    Code:
    case 'removemember':
    
    			if(isset($_GET['member'])) {
    			
    				if($debug ==1) {
    				echo "zonen: " . $zonen . "<br>";
    				echo "member: " . $_GET['member'] . "<br>";
    				}
    				
    				# wenn Member gleich Zone ist 
    
    				
    				if ($zonen == $_GET['member']) {
    				die("Der Master kann sich selber nicht entfernen.");
    				}
    				
    				
    				# nachschauen ob die Zone überhaupt verbunden ist
    				$master = zonenmaster($_GET['member']);
    				
    				if (isset($master)) {
    				#	$RemoveMember = $sonos->RemoveMember(getRINCON($sonoszone[$_GET['member']])); # Member Rincon
    					$sonos = new PHPSonos($sonoszone[$_GET['member']]); //Slave Sonos ZP IPAddress
    					$sonos->SetAVTransportURI("");
    				}
    				else {
    					die("Der Player ist nicht mir dem Master verbunden.");
    				}
    
    		  }
    		   else  {
    			die('Die Zone konnte nicht gefunden werden.');
    		  }
    		  break;
    Vielen Dank im Voraus und lG

    Piet
    Geändert von Carnivore (19.09.14 um 17:51 Uhr)

  2. #372
    Registriert seit
    Nov 2012
    Beiträge
    41

    Hi Piet,

    das sollte viel einfacher gehen, der neue Befehl ist stabiler, als die alte Implementierung, und kann auch einen Player "entfernen", der in gar keiner Gruppe ist. Da passiert dann nix mit dem Gruppenstatus...

    Also, etwas in der Art:
    Code:
    case 'removemember':
    	if(isset($_GET['member'])) {
    		$sonos = new PHPSonos($sonoszone[$_GET['member']]);
    		$sonos->RemoveMember();
    	} else  {
    		die('Die Member-Zone konnte nicht gefunden werden.');
    	}
    break;
    Auch hier: ungetestet...

    Die URL braucht dann nicht mehr die "Zone" zu enthalten, aber natürlich den "member", der entfernt werden soll. In deinem Beispiel fehlt dieser Parameter komischerweise...

    Aber nicht vergessen, die neue Version von "RemoveMember" zu verwenden, oder z.B. als "RemoveMemberNew" anzulegen und entsprechend zu verwenden :-)

    Grüße
    Reiner

  3. #373
    Registriert seit
    Sep 2014
    Beiträge
    5

    Hey Reiner,

    das musste ich jetzt noch ausprobieren - und es funktioniert perfekt! Vielen Dank für Deine Hilfe, da sind schon eine Menge Nerven draufgegangen ;-) !!!

    Viele Grüße (mir fällt sicher noch etwas ein, was für einen offensichtlichen Profi offenbar kein Problem ist - nein, sorry, Dich mit solchen Laien-Problemen belästigt zu haben...)

    Schönes WE

    Piet

  4. #374
    Registriert seit
    Nov 2012
    Beiträge
    41

    Hi Piet,

    schön, das geht...
    Ich helfe immer gerne, nur ist dies hier nicht meine "Kernkompetenz", weswegen ich mich hier immer etwas zurückhalte :-)

    Grüße
    Reiner

  5. #375
    Registriert seit
    Nov 2012
    Ort
    Erding
    Beiträge
    449

    Hi zusammen,

    ich versuche mich gerade darin Ansagen über Sonos laufen zu lassen. Leider habe ich immer wieder das Problem das die Ansagen entweder stark verzögert ( Netzwerkverbindung i.o Latenz 1 ms ) oder aber auch doppelt abgespielt werden.

    Das ganze mache ich mit diesem Script :

    PHP-Code:
    include('C:\IP-Symcon\scripts\IPSLibrary\app\modules\IPSSonos\PHPSonos.inc.php');
    function 
    TTS_Play_Sonos($Player_IP,$ansagetext,$ton)
    {

    $wav = array
    (
       
    "chimes"   => "x-file-cifs://SMARTHOMESERVER/media/Sound/chimes.mp3"
    );

    // Sonos Player
    $sonos                         = new PHPSonos($Player_IP);        //Sonos ZP IPAdresse

    //Einlesen und runterrampen der Lautstärke
    $volume                         $sonos->GetVolume();                 // gibt die Lautstärke als Integer zurück

    //Runterrampen der Lautstärke
    while ($sonos->GetVolume()>=6)
    {
        
    $sonos->SetVolume($sonos->GetVolume() -5);
        
    IPS_Sleep(500);
    }

    //Speichern der Aktuellen Informationen
    $oldpi $sonos->GetPositionInfo();
    $oldmi $sonos->GetMediaInfo();
    $radio=(strpos($oldmi['CurrentURI'],"x-sonosapi-stream:")>0)===false;
    $oldti $sonos->GetTransportInfo();

    //Abspielen der gewählten Ton's
    $sonos->SetVolume(50);
    $sonos->SetAVTransportURI($wav[$ton]);
    $sonos->Play();

    //Abfragen ob der Player noch spielt
    IPS_Sleep(1000);
    while (
    $sonos->GetTransportInfo()==1)
    {
        
    IPS_Sleep(200); //Alle 200ms wird abgefragt
    }

    //Generieren der Sprachausgabe
    TTS_GenerateFile(51074 /*[- CORE -\Kommuniaktion\Text To Speech]*/$ansagetext,IPS_GetKernelDir()."media/Sprache1.wav",39);
    IPS_Sleep(75);

    //Abspielen der Sprachausgabe
    $sonos->SetVolume(20);
    $sonos->SetAVTransportURI("x-file-cifs://SMARTHOMESERVER/media/Sprache1.wav");
    $sonos->Play();



    Was könnte das sein ? Zerbreche mir schon seit Tagen den Kopf
    IPS 3.1 Stable || Chromoflex Pro || Siemens Desigo GLT || diverse HM Komponenten || Aeon Labs Z-Wave S2 || RaZberry Pi || ESXi 5.1 || Beagleboard Black || Arduino || Pokeys 57E || 1-Wire Komponenten || EMS Gateway || Viessmann Optokoppler ||
    ... Ich kann micht nicht erinnern, dass ich mal was vergessen hätte ...

  6. #376
    Registriert seit
    Dec 2010
    Beiträge
    921

    Hallo Flobo,

    ich hab die Function in einem Script und rufe dieses aus einem anderen nur noch mit Übergabe der Parameter auf.

    Function-Script:
    PHP-Code:
    <?
    include("PHPSonos.inc.php");

    function 
    TTS_Play_Sonos($Player_IP,$ansagetext,$ton)
    {
    /*=============================================================
    TTS_Play_Sonos - Martin Heinzel - 09.07.2013
    Version: 0.1

    Beschreibung:
    Diese Funktion ersetzt die Sprachausgabe von "Ferengie-Master"
    für die Sprachausgabe auf Soundkarten. Zur Sprachausgabe wird
    ein Sonosplayer genutzt.

    Parameter:
    $Player_IP           ->          Die IP-Adresse des Sonosplayers
    $ansagetext          ->          Der Ansagetext der ausgegeben werden soll
    $ton                 ->          Der Ton/Melodie die vor dem Ansagetext abgespielt werden soll


    Änderungen
    ----------

    tt.mm.jjjj von Version x.x -> y.y

    Beschreibung:

    ================================================================*/

    // Variablen Deklaration --------------------------------------

    // Variablen
    //--------------
    $wav = array
    (
       
    "alarm01"        => "x-file-cifs://laptop01/media/Sounds/Alarm_01.mp3",
       
    "gemecker"        => "x-file-cifs://laptop01/media/Sounds/gemecker.mp3",
       
    "sheep"            => "x-file-cifs://laptop01/media/Sounds/sheep.mp3",
       
    "donkey"            => "x-file-cifs://laptop01/media/Sounds/donkey.mp3"
    );

    //-------------------------------------------------------------


    //--------------------------- Main ----------------------------
    // Sonos Player
    $sonos                         = new PHPSonos($Player_IP);        //Sonos ZP IPAdresse

    //Einlesen und runterrampen der Lautstärke
    $volume                         $sonos->GetVolume();                 // gibt die Lautstärke als Integer zurück

    //Runterrampen der Lautstärke
    while ($sonos->GetVolume()>=6)
    {
        
    $sonos->SetVolume($sonos->GetVolume() -5);
        
    IPS_Sleep(500);
    }

    //Speichern der Aktuellen Informationen
    $oldpi $sonos->GetPositionInfo();
    $oldmi $sonos->GetMediaInfo();
    $radio=(strpos($oldmi['CurrentURI'],"x-sonosapi-stream:")>0)===false;
    $oldti $sonos->GetTransportInfo();

    //Abspielen der gewählten Ton's
    $sonos->SetVolume(12);
    $sonos->SetAVTransportURI($wav[$ton]);
    $sonos->Play();

    //Abfragen ob der Player noch spielt
    IPS_Sleep(1000);
    while (
    $sonos->GetTransportInfo()==1)
    {
        
    IPS_Sleep(200); //Alle 200ms wird abgefragt
    }

    //Generieren der Sprachausgabe
    TTS_GenerateFile(29148 /*[Logisch\Alarme\Ausgaben\TTS\TTS]*/ $ansagetext,IPS_GetKernelDir()."/media/Sprachausgaben/gartenwasser.wav",39);
    IPS_Sleep(75);

    //Abspielen der Sprachausgabe
    $sonos->SetVolume(12);
    $sonos->SetAVTransportURI("x-file-cifs://laptop01/media/Sprachausgaben/gartenwasser.wav");
    $sonos->Play();


    //Abfragen ob der Player noch spielt
    IPS_Sleep(1000);
    while (
    $sonos->GetTransportInfo()==1)
    {
        
    IPS_Sleep(200); //Alle 200ms wird abgefragt
    }

    //Player wieder Starten
    if ($radio)
    {
        
    $sonos->SetRadio($oldmi['CurrentURI']);
    }
    else
    {
        
    $sonos->SetAVTransportURI($oldmi['CurrentURI'],$oldmi['CurrentURIMetaData']);
    }

    try
    {
        
    // Seek TRack_Nr
       
    $sonos->Seek("TRACK_NR",$oldpi['Track']);
       
    // Seek REl_time
       
    $sonos->Seek("REL_TIME",$oldpi['RelTime']);
    }
    catch (
    Exception $e)
    {

    }
    if (
    $oldti==1$sonos->Play();
    $sonos->SetVolume($volume);

    //------------------------- Main ENDE --------------------------
    }
    ?>
    Aufrufendes Script:
    PHP-Code:
    <?

    include('15409.ips.php'); // function ansage auf sonos
    $Player_IP $sonosKeller;
    $ansagetext 'Das Gartenwasser ist noch offen';
    $ton 'gemecker';

    //function TTS_Play_Sonos($Player_IP,$ansagetext,$ton)
    /*=============================================================
    TTS_Play_Sonos - Martin Heinzel - 09.07.2013
    Version: 0.1

    Beschreibung:
    Diese Funktion ersetzt die Sprachausgabe von "Ferengie-Master"
    für die Sprachausgabe auf Soundkarten. Zur Sprachausgabe wird
    ein Sonosplayer genutzt.

    Parameter:
    $Player_IP           ->          Die IP-Adresse des Sonosplayers
    $ansagetext          ->          Der Ansagetext der ausgegeben werden soll
    $ton                 ->          Der Ton/Melodie die vor dem Ansagetext abgespielt werden soll
    */

    TTS_Play_Sonos($Player_IP,$ansagetext,$ton)

    ?>
    Grüsse, Wolfgang
    IPS 3.4 #3775 auf Windows7 x64. Hardware: FB 7490 06.51, Synology NAS DS 109+ DSM 4.2-3252 (Apache 2.2.22, MySQL 5.1.49), Gigaset S685IP, S0-Stomzähler, IPSwitchAddE, PlugWise USB 30 Circles, EnOcean, Sonos Play3.

  7. #377
    Registriert seit
    Oct 2014
    Beiträge
    20

    Standard IP eines Players über RINCON ermitteln

    Hallo Zusammen

    Ich möchte gerne den Group-Coordinator eines angesprochenen Sonos herausfinden.

    An die RINCON komme ich ja wie folgt recht einfach:

    Code:
    $PositionInfo = $sonos->GetPositionInfo();
    $coordinatorRincon = substr(strstr($PositionInfo['TrackURI'],"x-rincon:"),9);
    Wie komme ich den von von der RINCON auf die IP-Adresse des Players?

    Danke schon mal für euer HIlfe!

  8. #378
    Registriert seit
    Oct 2014
    Beiträge
    20

    Auch keiner ne Idee?
    IPS 3.2 unter virtuellem Win 7 (Parallels, Mac OS X), LCN Gebäudeinstallation, Sonos

  9. #379
    Registriert seit
    Feb 2010
    Ort
    Kreis Wesel
    Beiträge
    226

    ich hatte mit mal eine function geschrieben, kann dir evtl. helfen
    PHP-Code:
    //******************************************************************************
    // SONOS_Gruppe_tabelle()
    // $tabelle['Büro'][0] = ID
    // $tabelle['Büro'][1] = IP
    // $tabelle['Büro'][2] = Coord oder Member
    // $tabelle['Büro'][3] = Coord-Name
    //******************************************************************************

    function SONOS_Gruppe_tabelle()
    {
        
    // Gruppen holen
        
    $zonen    br_sonos_GetSONOS_Zones();
        
    $gruppen br_sonos_GetSONOS_Groups();
        
    $master    array_keys($gruppen);

        
    // eigene Tabelle aufbereiten
        
    foreach ($master as $index)
        {
            
    $member    array_keys($gruppen [$index] ['Member']);
            
    $coord   $zonen[($gruppen[$index]['Coordinator'])]['CurrentZoneName'];
            
    $tabelle[$zonen[$index]['CurrentZoneName']] = array ($index$zonen[$index]['IP'], 'Coord'$coord);
           foreach (
    $member as $index)
            {
                
    $tabelle[$zonen[$index]['CurrentZoneName']] = array ($index$zonen[$index]['IP'], 'Member'$coord);
            }
        }
        
    //print_r ($master);
        //print_r ($member);
        
    return $tabelle;



    Gruß, Peter

  10. #380
    Registriert seit
    Apr 2014
    Beiträge
    224

    Moin Leute,
    sorry, aber komme schon wieder nicht weiter, finde die Einbindung ist ein bischen komisch beschrieben... Habe einfach die PHPSonos.inc.php Datei in den Ordner Scripts im IPS Verzeichnis kopiert, mehr muss ich doch nicht machen oder? Keine IO Instanzen etc. anlegen? Weil wenn ich nun dieses Script

    PHP-Code:
    include("PHPSonos.inc.php");
    $sonos = new PHPSonos("192.168.1.43"); //Sonos ZP IPAdresse
    $sonos->SetMute(true); 
    einfüge (IP passt) passiert rein garnichts...


    Gruß

Ähnliche Themen

  1. Einzelne Sonos Player ansteuern
    Von paresy im Forum Audio & Video, TK-Anlagen, ISDN
    Antworten: 43
    Letzter Beitrag: 25.04.16, 19:25
  2. UIO 88 über PHP in V2.0 ansteuern
    Von Schneider im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 7
    Letzter Beitrag: 21.09.08, 21:40

Stichworte