[Neues Modul] BOSE SoundTouch

Begonnen von dominik, 05 Januar 2016, 22:28:40

Vorheriges Thema - Nächstes Thema

GabbaGundolf

Hallo zusammen,
ich bin neu im Thema FHEM und versuche mich gerade daran, meine SoundTouch 300 als TTS einzubinden. Erstmal großen Dank für dieses Modul und die viele Arbeit die offensichtlich darin steckt!

Ich habe mich an die Anleitung in der FHEM commandref BOSEST gehalten, die Voraussetzungen installiert und das BOSEST-Objekt definiert. Daraufhin wurde auch meine SoundTouch gefunden.

Ich hatte zunächst die Ausgabe mit dem miniDLNA Server versucht, bin aber daran gescheitert. Erst später habe ich gesehen, dass ein miniDLNA-Server nicht mehr nötig sei. Dennoch funktioniert bei mir der Aufruf...
set BOSE_9784E3A9B6AC speak "Hallo Test"
...nicht.
Habe das BOSEST-Objekt auch nach meinen vielen miniDLNA Versuchen neu anlegen lassen.

Ich nutze in FHEM die aktuelle Modulversion.
# v2.2.0 - 20171211
# - FEATURE: support new Audio Notification API for TTS (no more minidlna)
...

Ich habe schon sehr viele Stunden Zeit in die Fehlersuche investiert, komme aber leider nicht mehr weiter.

Habt ihr eine Idee, woran es liegen könnte? Oder was ich für Möglichkeiten habe, das Problem einzugrenzen?

Vielen Dank im Voraus!

Gruß André

PS: Bose-System einschalten, Lautstärke etc. funktioniert. Nur TTS nicht.

Prof. Dr. Peter Henning

Ah, ein ST300-Nutzer.

Ich bin eigentlich gerade dran, die auch zu kaufen - bin aber etwas verschreckt über Meldungeń, dass die sich nicht immer mit ihrem Subwoofer verbinden kann. Können wir dazu mal PM austauschen, oder einen eigenen Thread aufmachen ?

LG

pah

GabbaGundolf

Habe dir eine PM geschrieben :) Zusammenfassung für den Rest: Bisher keinerlei Probleme zwischen SoundTouch 300 und Subwoofer Acoustimass 300. Meinerseits klare Kaufempfehlung.

Hellspawn

Hallo,
ich schließe mich dem auch mal so an. Hatte zuerst eine Teufel Soundbar mich ähnlichem umfang... naja die Bose ST300 ist wirklich besser. Ich hatte mit der Teufel ständig Verbindungsabbrüche... mit der Bose bis dato keinen einzigen und ich habe die ST300 mit Sub und Rear Lautsprechern jetzt seit über 6 Monaten... keinerlei Probleme und ich steuere mittlerweile, TV, Soundbar, Blue-Ray und VU Solo SE alles mit der Bose Fernbedienung ... klare Kaufempfehlung

Gruß
Carsten

GabbaGundolf

Hallo,
hat keiner eine Idee? :(

Ohne Text-To-Speech ist alles doof  :-\

Mir würde es vielleicht schon helfen wenn Ideen geäußert werden. Ich habe einfach gar keine Idee mehr und keinen Pack-An.

Viele Grüße


Prof. Dr. Peter Henning

Oh, bei mir läuft das auf einer ST10 problemlos. Was sagt denn das Log ?

LG

pah

fred_feuerstein

Bei Soundtouch 10, 20 oder 30 läuft das mit TTS (ohne miniDLNA) auch erst ab "Series III".

Ich habe bspw. eine Soundtouch Portable (series II), damit klappt das nicht.
Keine Ahnung wie es mit der Soundtouch 300 aussieht.

Gruß, Fred

FHEM auf Raspberry PI 3B+ im 7Zoll TouchDisplay Gehäuse, OS: Bullseye, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp) und knapp 300 Devices aller Art

Schoebie700

Hallo zusammen,

ich habe auch mal eine Frage. Ich versuche 2 von 3 Bose Soundtouches zu einer Zone zu verbinden und in dieser eine MP3 abzuspielen.

Meine Player:

Küche: BOSE_B0D5CC18E620
Bad: BOSE_985DAD2B4EFC
Wohnzimmer: BOSE_68C90B330E39

Küche und Bad sollen eine Zone werden.

   fhem("set BOSE_B0D5CC18E620 createZone BOSE_B0D5CC18E620,BOSE_985DAD2B4EFC");
   fhem("set BOSE_B0D5CC18E620 addToZone BOSE_985DAD2B4EFC");

Ich verstehe die Doku aus dem Wiki nicht:

createZone deviceID   -   create multiroom zone (defines <name> as zoneMaster)
addToZone deviceID   -   add device <name> to multiroom zone
removeFromZone deviceID   -   remove device <name> from multiroom zone

Kann mir bitte bitte jemand helfen?

Viele Grüße

FHEM - purer Anfänger

Prof. Dr. Peter Henning

#518
Es gibt immer noch keine TTS-Ausgabe auf meiner neuen ST300. Aus dem Log:
2018.07.19 06:33:15 5: BOSEST: BOSE_C4F312DD64C7, received message.
2018.07.19 06:33:15 5: BOSEST: processXml:
$VAR1 = {
          'msg' => {
                   'body' => {
                             'pingRequest' => {
                                              'pong' => 'true'
                                            }
                           },
                   'header' => {
                               'deviceID' => 'C4F312DD64C7',
                               'request' => {
                                            'requestID' => '1',
                                            'info' => {
                                                      'type' => 'new'
                                                    },
                                            'msgType' => 'RESPONSE'
                                          },
                               'method' => 'GET',
                               'url' => 'webserver/pingRequest'
                             }
                 }
        };

2018.07.19 06:33:15 5: BOSEST: run mojo loop

und dann nach diversen mojo loops

2018.07.19 06:33:16 4: BOSEST: set /speaker => <play_info><app_key>XXXXXXXXXXXXXXXXXXXXXXXX</app_key><url>http://translate.google.com/translate_tts?ie=UTF-8&tl=de&client=tw-ob&q=Test</url><service>Test</service><volume>31</volume></play_info>
2018.07.19 06:33:17 4: BOSEST: success: <?xml version="1.0" encoding="UTF-8" ?><Error value="403" name="HTTP_STATUS_FORBIDDEN" severity="Unknown">unsupported device</Error>
2018.07.19 06:33:17 5: BOSEST: run mojo loop


Die ST 300 weigert sich also, die URL als Quelle anzunehmen.

LG

pah

fred_feuerstein

ich denke, es liegt nicht an irgendwelche Einstellungen. Meine Soundtouch portable kann scheinbar auch kein TTS.


Wie sieht es eigentlich mit der Weiterentwicklung des Bose Moduls aus?

Es wurde ja glaube ich schon mal angefragt nach der Funktion, eine Sounddatei (mp3, ...) direkt als Web- oder File-Link abspielen zu können.
Geht das denn schon? Falls ja, wie?

Gruß, Fred

FHEM auf Raspberry PI 3B+ im 7Zoll TouchDisplay Gehäuse, OS: Bullseye, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp) und knapp 300 Devices aller Art

Prof. Dr. Peter Henning

#520
Ich habe jetzt erst einmal versucht, meine ST300 auch zum Sprechen zu bringen - klappt prima, aber noch sind diverse Workarounds nötig. Sieht in etwa so aus, wie der ursprüngliche minidlna-Ansatz.

Außerdem verwende ich lieber die Stimme 'Marlene' von Amazon Polly.
Für Polly gibt es aber keine Perl-Bindung - also machen wir dazu ein kleines Python-Programm. Benötigt wird ein AWS-Account

Zunächst müssen mit pip die python-Bibliotheken libsoundtouch und boto3 installiert werden.

Der erste Teil des Programms schickt das Argument des Aufrufes

Zitatpython getpolly.py 'Hier kommt mein Text'

an Amazon und bekommt eine MP3_Datei zurück. Die wird gespeichert unter /tmp/IRGENDEINE UUID.mp3

Zusätzlich muss man das Verzeichnis /opt/fhem/www/sounds anlegen, und darin mit  dem Befehl ln -s /tmp tmp das /tmp-Verzeichnis als softlink einbinden. Im Endergebnis ist die erzeugte MP3-Datei auffindbar unter
http://ip_adresse FHEM:8083/sounds/tmp/IRGENDEINE UUID.mp3

Und genau diese URL wird im 2. Schritt an die Bose ST300 übergeben und abgespielt.

Alles noch etwas wackelig, keine Argumentüberprüfung und noch kein Löschen der alten MP3s implementiert, aber als erster Schritt und proof of concept ganz ok.


import sys
import time
import uuid
import boto3
from libsoundtouch import soundtouch_device
from libsoundtouch.utils import Source, Type

polly_client = boto3.Session(
                aws_access_key_id='XXXXXXXXXXXXXXXXXXXXXXXX',                     
    aws_secret_access_key='YYYYYYYYYYYYYYYYYYYYYYYYYY',
    region_name='eu-central-1').client('polly')

ssmltext = '<speak><break time="1s"/>' + sys.argv[1] + '</speak>'

response = polly_client.synthesize_speech(VoiceId='Marlene',
                OutputFormat='mp3',
                TextType='ssml',
                Text = ssmltext)
               
name = str(uuid.uuid4())
name = '/tmp/' + name + '.mp3'

file = open(name, 'w')
file.write(response['AudioStream'].read())
file.close()

device = soundtouch_device('IP_ADRESSE ST300')
#device.power_on()

name = 'http://IP_ADRESSE FHEM:8083/fhem/sounds' + name

device.snapshot()
device.play_url(name);

#WILL MAN EINE URL ABSPIELEN
#device.play_url('http:/....XXX.mp3');
time.sleep(5)
device.restore()


Wer "nur" eine fertige MP3-Datei abspielen will, hat es noch einfacher

import sys
import time
from libsoundtouch import soundtouch_device
from libsoundtouch.utils import Source, Type

name = sys.argv[1]

device = soundtouch_device('192.168.0.48')
#device.power_on()


name = 'http://192.168.0.194:8083/fhem/sounds/' + name

device.snapshot()
device.play_url(name);
time.sleep(5)
device.restore()


Jetzt muss man nur noch herausfinden, welche Daten man dazu in Perl umsetzen muss...

LG

pah

Edit: Ich antworte mir mal selbst. Den Amazon-Teil kann man erledigen durch Verwendung von Paws: https://metacpan.org/pod/Paws::Polly


Carstenb

Hallo,
gibt es eine Beschränkung wie viele Befehle ich hintereinander an die Lautsprecher schicken darf? Ich habe ein Makro im Residents Modul worin ich diese Befehle hintereinander absetze:
fhem "set BOSE_8030DC53AA3F on";
fhem "set BOSE_8030DC53AA3F playEverywhere";
fhem "set BOSE_8030DC53AA3F volume 25";
fhem "set BOSE_B0D5CCF64B90 volume 25";
fhem "set BOSE_5065833DABB4 volume 45";


Das führt dazu, dass alle Lautsprecher eingeschaltet werden der Kanal ist auch der letzte der eingestellt war, jedoch wird nichts abgespielt. Ich muss dann die Lautsprecher wieder aus- und einschalten damit es wieder funktioniert.
Bestimmt mache ich etwas falsch, komme aber leider alleine nicht drauf. Hat jemand einen Rat?

Vieel Grüße
Carsten

fred_feuerstein

#522
evtl. setzt Du die Befehle zu schnell hintereinander ab. Ich habe eine solche Befehlskette in einem DOIF (Wecker). Und da lasse ich zwischen den Befehlen mit dem Attribut Wait 3 Sekunden Pause.

also so wie hier:
Zitat von: Prof. Dr. Peter Henning am 10 Dezember 2017, 11:56:39
Und noch ein dritter Post in Folge: Der smarte Wecker bekommt erst einmal testweise ein DOIF:


define Wecker_Bose DOIF
([[timeProfileC:wakeup]])
(set BOSE_50338B343509 volume 20)
(set BOSE_50338B343509 channel 20)
(set BOSE_50338B343509 volume 25)
(set BOSE_50338B343509 volume 30)
(set BOSE_50338B343509 volume 35)
(set BOSE_50338B343509 volume 40)

timeProfileC:wakeup ist ein Reading, in den die Weckzeit eingetragen wird. Dieses DOIF steigert die Lautstärke über 20 Sekunden von 20 auf 40. Achtung: Weil die Hardware aussteigt, wenn zwei Kommandos zu schnell hintereinander kommen, ist die gesamte Kommandosequenz in Teile zerlegt. Mit dem Attribut
attr Wecker_Bose wait 0,2,5,5,5,5
wird der zweite Teil um 2 Sekunden verzögert, der 3. und alle Weiteren um 5 Sekunden.

LG

pah
Gruß, Fred

FHEM auf Raspberry PI 3B+ im 7Zoll TouchDisplay Gehäuse, OS: Bullseye, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp) und knapp 300 Devices aller Art

fred_feuerstein

Zitat von: Prof. Dr. Peter Henning am 20 Juli 2018, 15:55:27
http://ip_adresse FHEM:8083/sounds/tmp/IRGENDEINE UUID.mp3

Und genau diese URL wird im 2. Schritt an die Bose ST300 übergeben und abgespielt.


und mit welchem Befehl kann man eine solche MP3 über die Url an die Soundtouch übergeben?
set BOSE_08DF1F0711233322  ??? http://IP_ADRESSE FHEM:8083/sounds/tmp/IRGENDEINE UUID.mp3  ?!
Gruß, Fred

FHEM auf Raspberry PI 3B+ im 7Zoll TouchDisplay Gehäuse, OS: Bullseye, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp) und knapp 300 Devices aller Art

Parador

#524
Hallo Zusammen,

eigentlich hatte ich meinen Soundtouch schon zum Sprechen gebracht, doch seit einiger Zeit bleibt er stumm...
Über die Soundtouch-Software finde ich den minidlna-Server und kann die Mp3's dort auch abspielen. Es scheinen aber keine neuen Dateien erzeugt zu werden...

Heute hatte ich Zeit mich dem Problem etwas zu widmen...
Ich habe mit
Zitatset <BOSE_000....> speak "Guten Morgen" 35 de
versucht ihn zum sprehen zu bewegen, aber leider passierte nix.
Dann habe ich das VerboseLevel auf 5 gesetz und es nochmal probiert... und folgende Meldunge im Log gefunden:
2018.08.18 5: BOSEST: run mojo loop
2018.08.18 5: BOSEST: finished mojo loop
2018.08.18 4: BOSEST: set /speaker => <play_info><app_key>fürsForumentnommen</app_key><url>http://translate.google.com/translate_tts?ie=UTF-8&tl=de&client=tw-ob&q=Guten%20Morgen</url><service>Guten Morgen</service><volume>35</volume></play_info>
2018.08.18 4: BOSEST: success: <?xml version="1.0" encoding="UTF-8" ?><Error value="403" name="HTTP_STATUS_FORBIDDEN" severity="Unknown">unsupported device</Error>
2018.08.18 5: BOSEST: run mojo loop


und bin nun irritiert warum hier ein 403'er fehler kommt. An dem Rechner an dem ich gerade sitze kann ich die URL problemlos aufrufen, da der Raspi auf dem FHEM läuft auch ständig andere Dinge aus dem Netz abfragt, geht dort grundsätzlich auch die Internetverbindung.
Kommt die Rückmeldung mit dem 403'er evtl. nicht vom ST sondern von Google's Translate??  Bzw. woran kann es noch liegen?

Vielen Dank für Euere Ideen und Hilfe bereits im Voraus!

VG