Plugin Bose SoundTouch Rajout de commandes

Tags: #<Tag:0x00007fcbb54bf298>

Bonjour

Tout d’abord je vous souhaite à toutes et à tous une très belle nouvelle année.

Je vous sincèrement vous remercier également de la qualité du plugin BoseSoundTouch
Je l’utilise avec le lifestyle 650 est tout fonctionne bien.

Cependant, serait-il possible de rajouter des commandes (comme l’accès aux sources hdmi 1, hdmi 2, hdmi 3 et hdmi 4 ?

Je m’explique. J’utilise en même temps le plugin Harmony, mais plusieurs fois par semaine le hub ne répond plus aux connections et je suis obligé de le débrancher puis rebrancher que tout fonctionne.

Si je pouvais sélectionner la source grâce à votre plugin je pourrai me passer des fonctions du hub Harmony dans mon scénario.

Je vous remercie beaucoup de bien vouloir étudier la faisabilité de la demande. Si je peux aider dans les tests, n’hésitez pas. Je suis à votre disposition.

A bientôt. Très bonne journée à vous

Bonjour,

Merci d’abord !

Pour connaitre la faisabilité, il faudrait me retourner la commande curl http://soundtouch:8090/sources où soundtouch est l’IP ou le nom d’hôte de la bose. Cela permettra de voir si ces entrées sont bien référencées et éventuellement exploitable.
Après, je ne peux donner aucun délai sur la réalisation.

Bonjour

Désolé du retard. J’ai du m’absenter quelques jours. Je fais ça au plus vite.
Merci beaucoup. Pour le développement je m’en doute que vous avez sans doute d’autres chats à fouetter pour le moment !

Merci d’avance d’avoir bien voulu prendre du temps pour examiner la question.
A bientôt
Cordialement

Bonsoir.

Wouahh, impressionnant. Je ne pensais pas voir toutes ces infos avec ta commande !

Dans le doute, j’ai retiré les infos comme l’ID ou encore mes données personnelles. Si tu as besoin de ces infos privées pour un test, aucun problème on peut échanger en MP.

Encore merci de bien vouloir y jeter un coup d’oeil.

Au plaisir

Bose Modifs

AirPlay2DefaultUserName

…@…fr

QPlay1UserName

QPlay2UserName

UPnPUserName

StoredMusicUserName

…@…fr

…@…fr

HDMI_1

…@…fr

HDMI_2

…@…fr

HDMI_3

SpotifyConnectUserName

SpotifyAlexaUserName

HDMI_4

HDMI_5

HDMI_6

TV

ANALOG_FRONT

ANALOG1

ANALOG2

COAX1

COAX2

OPTICAL1

OPTICAL2

Merci pour ce retour, j’aurai surement des questions à poser quand je m’y mettrai.

Aucun problème.

Ça sera avec un grand plaisir.

Bonne journée.

Bonjour,

Je me suis lancé dans l’ajout de cette fonctionnalité. Serait-il possible de m’envoyer le résultat au format XML au lie de l’image en MP pour que je fasse quelques tests

Bonsoir

MP envoyé avec les données en format code et non anonymisées.

Merci beaucoup @sabinus52

Rappel de ton problème :

Pour le livestyle 650, seules les connexions « Select BLUETOOTH » et « Select HDMI_1 » fonctionnent = OK.
Lors d’un appui sur une autre sources hdmi = KO, on obtient le résultat que la commande est bien exécutée, mais aucun changement de source constatée sur la TV.

Le problème est que ce n’est pas peut être pas compatible.
Pour s’en assurer il faut passer la commande :

curl --request POST --header "Content-Type: text/xml" --data '<ContentItem source="PRODUCT" sourceAccount="HDMI_1"></ContentItem>' http://soundtouch:8090/select

Me retourner le résultat et vérifier que ca sélectionne bien le HDMI 1

Puis

curl --request POST --header "Content-Type: text/xml" --data '<ContentItem source="PRODUCT" sourceAccount="HDMI_2"></ContentItem>' http://soundtouch:8090/select

Me retourner le résultat et vérifier pareil que ca sélectionne bien le HDMI 2

Sinon sélectionner le hdmi2 avec la télécommande, puis me retourner la requête suivante :

curl http://soundtouch:8090/now_playing

J’ai un souci. Je pense que je dois mal faire les commandes.
Avec celle commande : curl http://soundtouch:8090/now_playing
Je me rends sur un navigateur web et j’écris http://[IP Lifestyle 650]:8090/now_playing

Mais comment faire avec les deux autres lignes ?

Voici tout de même le résultat avec la 3ème ligne effectuée depuis navigateur web

Avec la commande : curl http://soundtouch:8090/now_playing

Pour Bluetooth :

<nowPlaying deviceID="C4F312D5472C" source="BLUETOOTH" sourceAccount="">
<ContentItem source="BLUETOOTH" location="" sourceAccount="" isPresetable="false">
<itemName/>
</ContentItem>
<track/>
<artist/>
<album/>
<stationName/>
<art artImageStatus="SHOW_DEFAULT_IMAGE"/>
<playStatus>INVALID_PLAY_STATUS</playStatus>
<connectionStatusInfo status="DISCOVERABLE" deviceName=""/>
</nowPlaying>

Pour Hdmi 1 :

<nowPlaying deviceID="C4F312D5472C" source="PRODUCT" sourceAccount="HDMI_1">
<ContentItem source="PRODUCT" sourceAccount="HDMI_1" isPresetable="false"/>
<art artImageStatus="SHOW_DEFAULT_IMAGE"/>
<playStatus>PLAY_STATE</playStatus>
</nowPlaying>

Pour Hdmi 2 :

<nowPlaying deviceID="C4F312D5472C" source="PRODUCT" sourceAccount="HDMI_2">
<ContentItem source="PRODUCT" sourceAccount="HDMI_2" isPresetable="false"/>
<art artImageStatus="SHOW_DEFAULT_IMAGE"/>
<playStatus>PLAY_STATE</playStatus>
</nowPlaying>

Pour hdmi 3 :

<nowPlaying deviceID="C4F312D5472C" source="PRODUCT" sourceAccount="HDMI_3">
<ContentItem source="PRODUCT" sourceAccount="HDMI_3" isPresetable="false"/>
<art artImageStatus="SHOW_DEFAULT_IMAGE"/>
<playStatus>PLAY_STATE</playStatus>
</nowPlaying>

Pour hdmi 4 :

<nowPlaying deviceID="C4F312D5472C" source="PRODUCT" sourceAccount="HDMI_4">
<ContentItem source="PRODUCT" sourceAccount="HDMI_4" isPresetable="false"/>
<art artImageStatus="SHOW_DEFAULT_IMAGE"/>
<playStatus>PLAY_STATE</playStatus>
</nowPlaying>

Pour hdmi 5 :

<nowPlaying deviceID="C4F312D5472C" source="PRODUCT" sourceAccount="HDMI_5">
<ContentItem source="PRODUCT" sourceAccount="HDMI_5" isPresetable="false"/>
<art artImageStatus="SHOW_DEFAULT_IMAGE"/>
<playStatus>PLAY_STATE</playStatus>
</nowPlaying>

Pour hdmi 6 (Front) :

<nowPlaying deviceID="C4F312D5472C" source="PRODUCT" sourceAccount="HDMI_6">
<ContentItem source="PRODUCT" sourceAccount="HDMI_6" isPresetable="false"/>
<art artImageStatus="SHOW_DEFAULT_IMAGE"/>
<playStatus>PLAY_STATE</playStatus>
</nowPlaying>

Pour faire les autres requêtes avec ton navigateur, tu peux utiliser un plugins sachant faire de l’API REST ou bien sinon lancer les commandes dans une console depuis ta box domotique.

Déjà avec les requêtes on voit bien que cela ressort un résultat cohérent.

Alors, j’ai essayé un truc de ce genre :

image

Mais le résultat est : 400 Bad Request

Voici le texte dans la partie résultat HTTP:

POST /select?source=%22PRODUCT%22&sourceAccount=%22HDMI_1%22 HTTP/1.1
Content-Length: 0
Content-Type: text/xml
Host: 192.168.2.34:8090

HTTP/1.1 400 Bad Request
Content-Length: 0
Server: Allegro-Software-RomPager/5.40b1
Access-Control-Allow-Origin: http://192.168.2.34
Access-Control-Allow-Headers: Content-Type
Connection: close

Je pense que je le fais mal. Ca m’énerve, je ne trouve pas comment faire ces requêtes. Sincèrement navré de ne pas réussir à t’aider sur ce coup-là.

Du coup, j’ai aussi essayé de passer par un script sur jeedom.
Lorsque nous sommes sur une source HDMI_…(peut importe laquelle 1 à 6) et que je sélectionne le bouton « tester le script » avec cette donnée dans la partie requête :
curl http://192.168.2.34:8090/select?PRODUCT&sourceAccount=BLUETOOTH
La source du lifestyle change et va bien sur l’entrée : BLUETOOTH

En revanche, lorsque je change le texte dans la partie requête et que j’écris par-exemple :
curl http://192.168.2.34:8090/select?PRODUCT&sourceAccount=HDMI_1
Il n’y a aucun changement

Capture d’écran du script:
image

Bonjour
Problème suite la mise à jour 1.1.0 du plugin
J’ai une barre de son soundtouch 300 et un soudtouch 10
Sur la barre de son, j’ai bien récupéré le fonctionnement du plugin (comme indiqué dans le changelog il a fallu que j’appuie sur « recréer les commandes manquantes » car ça ne fonctionnait plus sinon)
Sur le soundtouch 10, rien à faire : j’ai donc supprimé l’équipement et tenté de le recréer : quand je crée un nouvel équipement, après avoir saisi son nom, le message d’erreur suivant apparait quand on fait OK (avant même d’avoir pu créer l’équipement, donc avant de pouvoir saisir son IP)

Capture d’écran 2021-03-06 à 10.02.39

Une idée ?
Merci de votre aide

Bonjour,
L’erreur n’est pas très grave, il faudrait saisir l’IP de l’enceinte et sauvegarder.
Normalement l’erreur devrait disparaître.

oups autant pour moi - je n’avais pas remarqué que le soundtouch avait changé d’IP (je croyais l’avoir mis en statique mais non …) - du coup effectivement malgré l’erreur l’équipement a bien été créé et en ajoutant la (bonne) adresse IP j’ai bien récupéré la liaison avec Jeedom
Sorry de la « fake news » !

As tu un moyen de te connecter en mode console sur ta box Jeedom en ssh par exemple, bien plus simple pour lancer les commandes ?
Sinon tu peux essayer d’envoyer cette commande depuis Windows via l’invite de commandes, car je crois qu’il y a curl depuis Win10. Mais comme je n’ai pas de Windows chez moi, je n’ai pas pu la tester sous ce système.

Si tu veux utiliser les scripts dans Jeedom, il faut mettre la commande comme je l’ai indiqué dans mon message plus haut, le seul hic c’est que je n’aurai pas ce que retourne la commande :

curl --request POST --header "Content-Type: text/xml" --data "<ContentItem source="PRODUCT" sourceAccount="HDMI_1"></ContentItem>" http://soundtouch:8090/select

La commande suivante est incorrecte et ne pourra pas fonctionner :

curl http://192.168.2.34:8090/select?PRODUCT&sourceAccount=HDMI_1

Super, mais cela m’a de voir que je peux rajouter quelques tests pour éviter que des erreurs s’affichent inutilement

Bonjour @sabinus52

Désolé, je n’ai pas réussi à copier/coller le texte mais voici la capture d’écran de la commande lancée sur la console.

Avec celle-ci, il indique un message d’erreur : (6) Could not resolve host: soundtouch

curl --request POST --header "Content-Type: text/xml" --data "<ContentItem source="PRODUCT" sourceAccount="HDMI_1"></ContentItem>" http://soundtouch:8090/select

Avec celle-ci (en indiquant l’adresse IP), le changement vers le port HDMI_1 s’effectue correctement, mais ensuite aucun changement vers les autres ports:

curl --request POST --header "Content-Type: text/xml" --data "<ContentItem source="PRODUCT" sourceAccount="HDMI_1"></ContentItem>" http://192.168.2.34:8090/select
  • HDMI_2, HDMI_3, HDMI_4, HDMI_5, HDMI_6

Malheureusement il n’y a aucun message d’erreur. C’est simplement le changement de source qui n’est pas effectué. Mais pour lui l’opération s’est déroulée avec succès.

La première partie du tableau c’est lors du test en utilisateur normal. Naturellement ça n’a pas fonctionné.
Le changement s’est opéré en basculant vers l’utilisateur root.
Les résultats sont identiques à ceux obtenus lors des tests sur l’interface jeedom

Console

En revanche un changement par rapport à la source « BLUETOOTH » :
Il indique une erreur 1005, mais le changement de source se produit correctement.

image

Bonjour

Merci pour ces tests !

Après avoir fait pas mal de recherches sur différents forums, on trouve quasiment peu d’informations comment faire pour sélectionner une source autre que TV et BLUETOOTH. Donc je pense que ce n’est pas prévu par l’API de Bose.

Mais on peut essayer de faire le test suivant pour HDMI_1

curl --request POST --header "Content-Type: text/xml" --data '<ContentItem source="AUX" sourceAccount="HDMI_1"></ContentItem>' http://192.168.2.34:8090/select

Puis pour HDMI_2

curl --request POST --header "Content-Type: text/xml" --data '<ContentItem source="AUX" sourceAccount="HDMI_2"></ContentItem>' http://192.168.2.34:8090/select

Si cela ne fonctionne pas, c’est peut être spécifique à ce modèle d’enceinte, mais il me faudrait d’autres retours pour savoir.

Bonjour

Alors plusieurs choses. Dont certaines que je n’explique pas pour le moment.

Les tests avec les lignes ci-dessous nous emmène tous au même endroit

curl --request POST --header "Content-Type: text/xml" --data '<ContentItem source="AUX" sourceAccount="HDMI_1"></ContentItem>' http://192.168.2.34:8090/select
curl --request POST --header "Content-Type: text/xml" --data '<ContentItem source="AUX" sourceAccount="HDMI_2"></ContentItem>' http://192.168.2.34:8090/select
etc

ICI:
2021-03-08 23.19.12

Je pensais que c’était l’entrée BLUETOOTH, appelée depuis ton plugin par appui sur « Select BLUETOOTH »
Mais NON, il s’agit de l’entrée du « player » soundtouch. Également accessible avec cette ligne de commande:

curl --request POST --header "Content-Type: text/xml" --data '<ContentItem source="AUX" sourceAccount="BLUETOOTH"></ContentItem>' http://192.168.2.34:8090/select

Car avec ton plugin, lorsque l’on appui sur « Select BLUETOOTH », voici l’écran qui s’affiche:

2021-03-08 23.18.31

Alors je me suis dit. J’utilise un hub Harmony de chez logitech pour diriger mes appareils. Donc, il suffit de récupérer la donnée transmise lorsque l’on sélectionne l’entrée HDMI_2 par-exemple.

Mais NON

Pas si simple. Car dans le plugin Harmony, malgré la présence des commandes « InputHdmi1 », « InputHdmi2 », etc. Rien ne se passe en appuyant sur les commandes.

POURTANT, sur la télécommande, où les mêmes commandes sont présentes, l’ampli switch correctement de source.

J’en déduis, peut être à tort, mais que l’API ne permet effectivement pas de transmettre ces données via le réseau mais uniquement par la télécommande en RF.

Enfin, il ne s’agit que de ma propre hypothèse. Tu en penses quoi ?

image

P.S. A partir de demain soir je vais devoir m’absenter pendant une dizaine de jours. Mais promis, à mon retour, je veux bien tester si jamais tu as encore des idées à me proposer !

Encore merci à toi pour ton aide. A bientôt