Forum eedomus http://forum.eedomus.fr/ |
|
Pour les utilisateurs de SONOS http://forum.eedomus.fr/viewtopic.php?f=13&t=756 |
Page 1 sur 18 Suivant » |
Auteur: | darkwinter [ 05 Déc 2012 15:07 ] |
Sujet du message: | Pour les utilisateurs de SONOS |
Bonjour, Je souhaite savoir si il est possible de couper via une requête HTTP l'ensemble des sonos (pour ceux qui utilise l'appli, cela équivaut à la touche "suspendre tout"). J'ai trouvé quelques infos pour différentes requêtes sur Sonos : http://192.168.1.XXX:1400/reboot - Reboots the Sonos http://192.168.1.XXX:1400/advconfg.htm - Not quite sure what this is doing, it has an enable/disable list box and the ability to submit the selection. http://192.168.1.XXX:1400/support/review - Lists a brief summary of the connected devices on your Sonos network. http://192.168.1.XXX:1400/status - Has several links that provide status information regarding the Sonos. There are ~30ish links on this page. Some of the more interesting ones are "dmesg", "mount", and "upnp" http://192.168.1.XXX:1400/unlock.htm - Not sure what this one does, but seems like it could be potentially interesting. All that the page provides is a text box and a "submit" button. Si vous avez une piste je suis preneur. Par avance, merci. |
Auteur: | starmich [ 05 Déc 2012 18:27 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Ahh je ne savais même pas qu'on pouvais suspendre l'activité d'un Sonos Du coup je vais regarder ça dès que j'ai un peu de temps... Les seuls choses que je fais avec Sonos c'est envoyer des commandes Upnp pour faire du classique : play/pause/suivant/précédent/volume etc... Et rien que ça c'est déjà horrible car leur langage est semi propriétaire |
Auteur: | darkwinter [ 16 Déc 2012 18:36 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Ok merci de l'info. Possible d'associer une commande upnp dans une règles par exemple. Exemple: lorsque j'active mon alarme j'envoie en même temps une commande upnp qui coupe (stop) tous les sonos? |
Auteur: | starmich [ 17 Déc 2012 19:08 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Oui tu peux couper tes Sonos via une requete Upnp. C'est ce que je fais d'ailleurs quand j'active mon alarme. Je passe via un script PHP pour le faire, si tu veux je peux t'envoyer un bout de code que tu pourras adapter a tes besoins. |
Auteur: | darkwinter [ 17 Déc 2012 20:24 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Ah super bonne nouvelle je suis preneur Je t'envoi mon email en MP. Merci beaucoup |
Auteur: | DjMomo [ 18 Déc 2012 10:24 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Et pourquoi pas en faire profiter tout le monde sur le forum ?? |
Auteur: | starmich [ 18 Déc 2012 14:34 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Je poste ça se soir sur le forum pour que tout le monde y ai accès |
Auteur: | darkwinter [ 18 Déc 2012 18:19 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Merci beaucoup. Pour djmomo, effectivement bonne remarque le partage à la communauté. |
Auteur: | starmich [ 19 Déc 2012 00:45 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Comme promis, voici un fichier qui permet d'envoyer des requêtes Upnp au Sonos. Il n'y a aucune gestion d'erreur, j'ai simplifié au maximum le code pour que vous puissiez l'adapter à vos besoin donc on trouve uniquement les requêtes upnp. Il y a 2 tableaux PHP tout en haut du code où il faut lister les différents sonos dans l'appartement avec leur IP et le port (il est possible de récupérer l'IP de chaque Sonos depuis l'application Sonos de votre tablet ou smartphone, le port lui reste toujours le même : 1400). Exemple : $IP_TABLE = array( 'sonos_salon' => '192.168.XXX.XXX' ); $PORT_TABLE = array( 'sonos_salon' => 1400 ); // va lancer la lecture du Sonos ayant l'IP 192.168.XXX.XXX playSonos('salon'); Si vous avez des soucis avec, laissez un message |
Auteur: | darkwinter [ 19 Déc 2012 13:34 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Je viens de faire quelques tests : IP serveur d'hébergement en local: 192.168.0.90 J'ai créer un fichier stop.php comprenant : <?php include("sonos.php"); stopSonos($_GET['room']); ?> Normalement avec la commande : http://192.168.0.90/sonos/stop.php?room=bain La musique dans la salle de bain dois se couper mais à priori non. Si vous avez une idée du pb, je suis preneur. Voici le fichier sonos. php (merci encore starmich) avec mes IP locale: <?php $IP_TABLE = array( 'sonos_chambre' => '192.168.0.17', 'sonos_cuisine' => '192.168.0.15', 'sonos_dressing' => '192.168.0.18', 'sonos_hall' => '192.168.0.19', 'sonos_bain' => '192.168.0.23', 'sonos_salon' => '192.168.0.20' ); $PORT_TABLE = array( 'sonos_chambre' => 1400, 'sonos_cuisine' => 1400, 'sonos_dressing' => 1400, 'sonos_hall' => 1400, 'sonos_bain' => 1400, 'sonos_salon' => 1400 ); function sendUpnp($sendTo, $msg, $type = 'control'){ global $STREAM_TIMEOUT, $DEBUG, $IP_TABLE, $PORT_TABLE; if($type == 'control'){ $sRequestXml = '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:'.$msg.' xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><Speed>1</Speed></u:'.$msg.'></s:Body></s:Envelope>'; $url = 'http://' . $IP_TABLE[$sendTo] . ':' . $PORT_TABLE[$sendTo] . '/MediaRenderer/AVTransport/Control'; } else if($type == 'volume'){ $sRequestXml = '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetVolume xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1"><InstanceID>0</InstanceID><Channel>Master</Channel><DesiredVolume>' . $msg . '</DesiredVolume></u:SetVolume></s:Body></s:Envelope>'; $url = 'http://' . $IP_TABLE[$sendTo] . ':' . $PORT_TABLE[$sendTo] . '/MediaRenderer/RenderingControl/Control'; } else if($type == 'getvolume'){ $sRequestXml = '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetVolume xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1"><InstanceID>0</InstanceID><Channel>Master</Channel></u:GetVolume></s:Body></s:Envelope>'; $url = 'http://' . $IP_TABLE[$sendTo] . ':' . $PORT_TABLE[$sendTo] . '/MediaRenderer/RenderingControl/Control'; } else if($type == 'information'){ $sRequestXml = '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetPositionInfo xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><Channel>Master</Channel></u:GetPositionInfo></s:Body></s:Envelope>'; $url = 'http://' . $IP_TABLE[$sendTo] . ':' . $PORT_TABLE[$sendTo] . '/MediaRenderer/AVTransport/Control'; } else if($type == 'playing'){ $sRequestXml = '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetTransportInfo xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><Channel>Master</Channel></u:GetTransportInfo></s:Body></s:Envelope>'; $url = 'http://' . $IP_TABLE[$sendTo] . ':' . $PORT_TABLE[$sendTo] . '/MediaRenderer/AVTransport/Control'; } $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 300); //timeout after 5 minutes (60 * 5 = 300) if($type == 'control'){ curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml", "SOAPAction: \"urn:schemas-upnp-org:service:AVTransport:1#$msg\"")); } else if($type == 'volume'){ curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml", "SOAPAction: \"urn:schemas-upnp-org:service:RenderingControl:1#SetVolume\"")); } else if($type == 'getvolume'){ curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml", "SOAPAction: \"urn:schemas-upnp-org:service:RenderingControl:1#GetVolume\"")); } else if($type == 'information'){ curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml", "SOAPAction: \"urn:schemas-upnp-org:service:RenderingControl:1#GetPositionInfo\"")); } else if($type == 'playing'){ curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml", "SOAPAction: \"urn:schemas-upnp-org:service:RenderingControl:1#GetTransportInfo\"")); } curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $sRequestXml); $sResponse = curl_exec($ch); return $sResponse; } // Lance la lecture de la playlist function playSonos($room){ sendUpnp('sonos_'.$room, 'Play'); } // Met en pause la lecture function pauseSonos($room){ sendUpnp('sonos_'.$room, 'Pause'); } // Prochain morceau dans la playlist function nextSonos($room){ sendUpnp('sonos_'.$room, 'Next'); } // Précédent morceau dans la playlist function previousSonos($room){ sendUpnp('sonos_'.$room, 'Previous'); } // Stop la lecture de la musique function stopSonos($room){ sendUpnp('sonos_'.$room, 'Stop'); } // Change le volume du Sonos (entre 0 et 100) function volumeSonos($volume = 0, $room){ sendUpnp('sonos_'.$room, $volume, 'volume'); } ?> |
Auteur: | DjMomo [ 19 Déc 2012 13:49 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
sonos.php :
framework_sonos.php
Appel :
Pas testé, mais ca devrait fonctionner. PS : pensez aux balises code pour poster du code sur le forum, c'est plus lisible. |
Auteur: | darkwinter [ 19 Déc 2012 14:01 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Tester chez moi : http://192.168.0.90/sonos/framework_son ... &room=bain Fonctionne pas. Tu pourras tester chez toi DJ momo? |
Auteur: | DjMomo [ 19 Déc 2012 14:57 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Si tu me prêtes un sonos |
Auteur: | DjMomo [ 19 Déc 2012 15:00 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Question : l'extension curl est activée sur ton serveur web ? |
Auteur: | darkwinter [ 19 Déc 2012 15:30 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Bonne question: je suis sur un serveur web sur un NAS synology. Je me renseigne. |
Auteur: | DjMomo [ 19 Déc 2012 15:38 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
DSM -> Panneau de configuration -> Services web -> Extensions PHP |
Auteur: | darkwinter [ 19 Déc 2012 15:51 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Oui par contre dans les extensions, tu n'as pas curl. |
Auteur: | DjMomo [ 19 Déc 2012 16:03 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Appelle ce script, et vérifie dans la section curl s'il est actif. J'y repense, mais sur les Syno, curl n'est pas une extension, c'est compilé avec. Donc normalement si ton Syno est à jour, curl est présent et activé. |
Auteur: | darkwinter [ 19 Déc 2012 16:12 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Oui oui c'est bien enable dans le php.info On va attendre le retour de starmich. C'est peux être un pb au niveau du sonos.php |
Auteur: | starmich [ 19 Déc 2012 17:00 ] |
Sujet du message: | Re: Pour les utilisateurs de SONOS |
Je vais regarder tout ca dès que je rentre à la maison... j'ai sorti le code de mon framework et je ne l'ai pas testé entièrement donc il se peut que j'ai zappé une variable quelque part Je prépare donc un code un peu plus clean tout à l'heure ! |
Page 1 sur 18 | Le fuseau horaire est UTC+1 heure |
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/ |