Squeezebox Modul - erste Version

Begonnen von bugster_de, 17 Dezember 2013, 22:12:10

Vorheriges Thema - Nächstes Thema

eldrik

#1980
Hi,

hat vielleicht jemand einen Tipp für mich damit bei mir wieder die TTS Ausgabe von syncGroups funktioniert?

Bisher habe ich für gewisse Events das Kommando

LMS set syncGroup talk meinesyncgruppe Test genutzt um einfache Benachrichtigungstexte auszugeben.

Nun ist mir vor kurzem aufgefallen, dass dieses nicht mehr funktioniert.

Ich setzte folgende Squeezbox Version ein

Logitech Media Server Version: 7.9.2 - 1568726655 @ Tue Sep 17 15:49:29 CEST 2019

Die SB Module habe ich zur Sicherheit mit

update force https://raw.githubusercontent.com/ChrisD70/FHEM-Modules/master/autoupdate/sb/controls_squeezebox.txt

auf den neuesten Stand gebracht und FHEM neu gestartet.

Bei Verbose 3 der LMS erhalte ich folgende Ausgabe nachdem ich den syncGroup talk Befehl abgesetzt habe.

2019.10.05 17:08:00.019 3: SB_SERVER_Save(LMS): name: xxxSgTalkxxx
2019.10.05 17:08:00.020 3: SB_SERVER_LoadSyncGroup(LMS): load: Obergeschoss, poweron: 0
2019.10.05 17:08:03.093 1: SB_SERVER_tcb_StartTalk(LMS): timeout waiting for player power on and sync, aborting
2019.10.05 17:08:03.094 3: SB_SERVER_Recall(LMS): name: xxxSgTalkxxx
2019.10.05 17:08:03.159 0: SB_PLAYER_abcdef123403: ttsdebug - play


Läuft zu dem Zeitpunkt ein Player, stoppt die Wiedergabe auch und wird nach einiger Zeit wie erwartet fortgesetzt, jedoch erfolgt keine Sprachausgabe.

Die einzelnen Player kann ich ganz normal via FHEM steuern, eine TTS Ausgabe über sayText eines einzelnen Players funktioniert auch ???

Über einen Tipp würde ich mich freuen.

Edit: OK nach einigen Tests, scheint ein Player die Probleme zu verursachen, wird dieser rausgelassen funzt es wieder.

Wird die syncGroup via

syncGroup load SyncGruppe

geladen und die Wiedergabe gestartet (wie bei meiner morgendlichen Weckerroutine) wird die Wiedergabe problemlos wiedergegeben.

Kann ggfs. der Timeout erhöht werden oder wie komme ich dem einen Player weiter auf die schliche?

Zu den Playern, es handelt sich um einen Multiroomserver auf Basis eine Rpis mit drei 5.1 USB Soundkarten, sprich ein einzelnes Gerät und keine unterschiedlich angebundenen etc.

Greetz
Eldrik

ChrisD

Hallo,

In der beigefügten Version habe ich das Timeout auf 30s erhöht. Kannst du testen ob das Problem damit behoben ist ?

Grüße,

ChrisD

eldrik

Hi,

danke, jetzt wird 30 Sekunden gewartet und es passiert nichts.

Der problematische Player ist der mit der 12 am Ende, der zum Zeitpunkt des Tests auch lief.

2019.10.06 13:54:21.570 3: SB_SERVER_Save(LMS): name: xxxSgTalkxxx
2019.10.06 13:54:21.572 3: SB_SERVER_LoadSyncGroup(LMS): load: Allwaussen, poweron: 0
2019.10.06 13:54:51.643 1: SB_SERVER_tcb_StartTalk(LMS): timeout waiting for player power on and sync, aborting
2019.10.06 13:54:51.644 3: SB_SERVER_Recall(LMS): name: xxxSgTalkxxx
2019.10.06 13:54:51.683 0: SB_PLAYER_abcdef123403: ttsdebug - stop
2019.10.06 13:54:51.805 0: SB_PLAYER_abcdef123412: ttsdebug - stop


Kann man an dem problematischen Player etwas erweitern? Scheinbar scheint es ja Probleme mit dem erkennen des Poweron zu geben?

Greetz
Eldrik

Greetz
Eldrik

ChrisD

Hallo,

Ich kann das Problem leider nicht nachstellen.

Anbei findest du eine Version die das Timeout auf 2 Minuten setzt.

Kannst du zum Testen
- bei beiden Playern im Attribut ttsOptions ttsDebug setzen
- schauen was bei beiden Player im Internal 'SYNCMASTERPN' und Reading 'power' steht
- set syncGroup talk ... ausführen
- nach einiger Zeit (30 s oder 1 min) erneut schauen was bei beiden Player im Internal 'SYNCMASTERPN' steht
- im Log schauen was mit 'ttsdebug' ausgegeben wurde ?

Grüße,

ChrisD

dadoc

Hallo zusammen,
Zitat von: TWART016 am 01 November 2017, 17:08:16
hat es schon jemand geschaft den LMS oder einen Player per Alexa oder Siri/Homebridge zu steuern?
Die Frage treibt mich auch um. Im Slimdevices-Forum hatten sich Paul und Phillipe bereits Gedanken gemacht, sind aber wohl seitens Amazon an Grenzen gestoßen und haben dort eine Petition gestartet.
Das http://hab-tunes.com - Projekt scheint dagegen seit Februar tot.
Wäre natürlich toll, wenn man hier über den Alexa fhem-Connector weiterkäme, aber mir fehlen da momentan die Kenntnisse für einen Ansatz.
Hat jemand...?
Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

eldrik

Zitat von: ChrisD am 12 Oktober 2019, 20:38:54
Hallo,

Ich kann das Problem leider nicht nachstellen.

Anbei findest du eine Version die das Timeout auf 2 Minuten setzt.

Kannst du zum Testen
- bei beiden Playern im Attribut ttsOptions ttsDebug setzen
- schauen was bei beiden Player im Internal 'SYNCMASTERPN' und Reading 'power' steht
- set syncGroup talk ... ausführen
- nach einiger Zeit (30 s oder 1 min) erneut schauen was bei beiden Player im Internal 'SYNCMASTERPN' steht
- im Log schauen was mit 'ttsdebug' ausgegeben wurde ?

Grüße,

ChrisD

Hi,

Danke für deine bisherigen Anstrengungen, werd ich ausprobieren, vor Mittwoch komme ich aber nicht dazu.

Greetz
Eldrik

holle75

#1986
Hallo, ich bekomme neuerdings bei Neustart fhem diese Meldungen im Log:
PERL WARNING: Use of uninitialized value $args[3] in pattern match (m//) at ./FHEM/98_SB_PLAYER.pm line 4549.
2019.10.16 19:06:37 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_SB_PLAYER.pm line 4571.
2019.10.16 19:06:37 1: PERL WARNING: Use of uninitialized value $args[3] in hash element at ./FHEM/98_SB_PLAYER.pm line 4573.
2019.10.16 19:06:37 1: PERL WARNING: Use of uninitialized value $args[3] in hash element at ./FHEM/98_SB_PLAYER.pm line 4574.
2019.10.16 19:06:37 1: PERL WARNING: Use of uninitialized value $args[3] in hash element at ./FHEM/98_SB_PLAYER.pm line 4575.
2019.10.16 19:06:37 1: PERL WARNING: Use of uninitialized value $args[3] in concatenation (.) or string at ./FHEM/98_SB_PLAYER.pm line 4579.


bin mir allerdings nicht sicher, woher. Kein update letzthin durchgeführt. Was sich verändert haben könnte, ist die Medialist, resp. ich denke, da kommt die Fehlermeldung her? Sonderzeichen, etc.

Jemand eine Idee?

Danke und Gruß
H.

holle75

#1987
.... es sind Playlists aus Spotify/Spotty die nicht gemocht werden. Sonderzeichen, evtl Ausrufezeichen, Punkte .... welche Zeichen es genau sind, weiß ich nicht. Vielleicht sollte man diese im Modul ausfiltern/abfangen?

ChrisD

Hallo,

Die Herkunft der Wiedergabeliste spielt keine Rolle. Das Modul filtert jetzt bereits eine ganze Reihe an Zeichen aus und dies ist wahrscheinlich das Problem. Wenn die Playlist z.B. +**+**+ heißt, bleibt nach dem Filter nichts mehr übrig.

Anbei eine Test-Version des Server-Moduls die in dem Fall einen zufälligen Namen generiert.

Grüße,

ChrisD

holle75

Danke Chris, ich habe jetzt die paar Playlists der letzten Wochen entfernt, bedeutet, ich kann es nicht probieren. Egal wie, ist dein Ansatz raffiniert. Sollte man so in die nächste Version übernehmen.

Danke und Gruß
H.

pschlaeppi

Hallo zusammen,

Ich verwende mehrheitlich PiCore Player Version 5.0, 2 Logitech Touch, 2 Logitech Radios und einen Logitech Boom.
Solange ich mit VoiceRSS nur gerade einen Text "dies ist eine FHEM Test Sprachausgabe" ausgebe, funktioniert alles bestens.

Gebe ich davor noch eine MP3 Datei aus, so wird der Anfang der Text Ausgabe abgeschnitten. aber auch das Ende der Messgae.
Die verwendete Sirene wird ausgegeben gefolgt von "ist ein FHEM Test".

Hänge ich am Ende noch einemal die Sirene an, wird auch diese ausgegeben. Der Text wird nicht weiter gekürzt.
Den Codec im ttslink habe ich sowohl als MP3 wie auch als AAC gesetzt gehabt, hier gibt es keinen Unterschied.

Der Name der MP3 Datei, sowie der Text befinden sich jeweils in Variablen die ich mit einem kleinen Modul ausgebe.
Aufruf der Ausgabe erfolgt durch:
fhem ("set $Player sayText |$sndFile||$text||$sndFile|");

Gebe ich das ganze direkt im Player in der set Eingabemaske ein mit:
|000_pri1_info.mp3||Dies ist eine FHEM Test Sprachausgabe||000_pri1_info.mp3|
erhalte ich dasselbe Resultat. Es spielt auch keine Rolle ob ich sayText oder talk verwende.

- Wie kriege ich das hin das die Text Ausgabe nicht abgeschnitten wird?

- Anhand einiger Posts habe ich gesehen das man scheinbar auch direkt beim Aufruf über Pipes separiert
   Optionen und Parameter mitgeben kann, habe dazu aber in der Command Referenz nichts gefunden.
   Hab ich da was übersehen? Habe wie oben beschrieben auch mit "update force ..." aktualisiert und neu gestartet?

Wer hat mir da allenfalls  Tipps zu den beiden Fragen?

Grüsse

Philipp



ChrisD

Hallo,

Das Pipe-Zeichen wird verwendet um Dateien zu markieren. In deinem Fall sollte

Zitat|000_pri1_info.mp3| Dies ist eine FHEM Test Sprachausgabe |000_pri1_info.mp3|

funktionieren. Wichtig sind die Leerzeichen nach resp. vor dem Pipe-Symbol.

Grüße,

ChrisD

eldrik

Zitat von: ChrisD am 12 Oktober 2019, 20:38:54
Hallo,

Ich kann das Problem leider nicht nachstellen.

Anbei findest du eine Version die das Timeout auf 2 Minuten setzt.

Kannst du zum Testen
- bei beiden Playern im Attribut ttsOptions ttsDebug setzen
- schauen was bei beiden Player im Internal 'SYNCMASTERPN' und Reading 'power' steht
- set syncGroup talk ... ausführen
- nach einiger Zeit (30 s oder 1 min) erneut schauen was bei beiden Player im Internal 'SYNCMASTERPN' steht
- im Log schauen was mit 'ttsdebug' ausgegeben wurde ?

Grüße,

ChrisD

Hi,

ich vermute jetzt, dass ich den Grund für die Problematik gefunden habe.

Und zwar zickten einige der Syncgroups auch ohne den vermeintlich problematischen Player, weshalb ich diverse Male Player in Syncgroups mit addp removep angelegt und wieder gelöscht habe bis mir aufgefallen ist, dass zwar beim entfernen des letzten Players einer Syncgroup, das sg<syncgroup> als Reading im LMS Modul verschwindet, die gerade entfernte Syncgroup jedoch noch weiterhin im Readings syncGroups vorhanden bleibt.

Nachdem ich alle nicht mehr existenten Syncgroups über delete <template> entfernt hatte gab es direkt danach keine weiteren Probleme mehr, mit zuvor noch funktionslosen Syncgroups :)

Vielleicht ist es ja ein Anhaltspunkt für den Code, syncgroups auch aus dem Reading syncGroups zu entfernen wenn ein sg<syncgroup> Reading, durch das entfernen des letzten zur Syncgroup gehörenden Players entfernt wird?

Greetz
Eldrik

pschlaeppi

Hallo Chris D,

Herzlichen Dank für die schnelle Antwort und deine unermüdliche Arbeit und Unterstützung. Dieses Modul ermöglicht eine unglaubliche Vielfalt an Einsatzmöglichkeiten.

Das Einfügen des Space vor und nach den Pipes hat das Problem gelöst.

Ich habe mir mit einigen Homematic Funk Fernbedienungen zu all meinen LMS Playern gebaut.
Da ich zunehmend sehbehindert bin, nutze ich nun die Sprachausgabe um mir bei einem
Senderwechsel oder Wechsel von einer Playlist zu einer anderen jeweils Sender/Playlist anzusagen. Darüber hinaus habe ich eine Taste mit einer Info Routine belegt. Diese liest mir jeweils die folgenden Angaben vor
- Aktuelle Zeit
- Radio Sender oder Playliste
- Artist
- Titel

Diese Infos sende ich mir dann jeweils per Pushmeldung und Email auch noch zu, so dass ich mir Songs die mir gefallen auch Nachts beim einschlafen schnell zustellen kann um Sie später bestellen zu können. Da Songs und Interpreten ja meistens Englisch sind, wechsle ich die Ansagesprache nach Englisch. Der Radiosender ist aber in der Regel in deutscher Sprache. Auch die Zeit möchte ich gerne in Deutsch ansagen.
Zwei Messages direkt hintereinander zu senden funktioniert auf Grund der unterschiedlichen Sprachdauer schlecht. Im weiteren wird dann vielfach das ursprüngliche Programm nicht mehr fortgesetzt.

- Gibt es eine Möglichkeit innerhalb eines Speakbefehles die Sprache zu wechseln?
- falls nicht, kann es irgendwie anders gelöst werden?
- gibt es einen Event auf den ich feststellen kann wenn die erste Message fertig gesprochen ist um dann die
  zweite gezielter auslösen zu können.
- kann die Dauer bis das ursprüngliche Programm wieder restored wird, gezielt gesteuert werden dass zwei
  Messages abgewartet würden?

Wäre froh um Tipps oder Denkanstösse.

Mit freundlichem Gruss

Philipp




ChrisD

Hallo,

@Eldrik: Danke für die Analyse, ich muss mir überlegen wie ich das umsetzen kann.

@Philipp:

Zitat- Gibt es eine Möglichkeit innerhalb eines Speakbefehles die Sprache zu wechseln?

Ja, du kannst die Sprache mit |opt:l=...| festlegen, z.B.:
set myPlayer talk Es ist 8 Uhr |opt:l=en| Time is money |opt:l=de| Weiter in Deutsch

Zitat- gibt es einen Event auf den ich feststellen kann wenn die erste Message fertig gesprochen ist um dann die zweite gezielter auslösen zu können

Ja, wenn du eventOnDone in ttsOptions setzt wird nach der Sprachausgabe das Event 'ttsdone' erzeugt. Auf dieses kannst du z.B. mit einem notify reagieren:
define n_myPlayer_ttsdone notify myPlayer:ttsdone.* ...

Zitat- kann die Dauer bis das ursprüngliche Programm wieder restored wird, gezielt gesteuert werden dass zwei Messages abgewartet würden?

Nein, sobald der Server meldet dass alles abgespielt wurde, wird automatisch der vorherige Zustand wieder hergestellt.

Das Abspielen mehrere Ansagen sollte aber gehen. Du kannst die 'talk'-Befehle direkt hintereinander aufrufen, es ist nicht nötig eine Pause zu machen.

Grüße,

ChrisD