Squeezebox Modul - erste Version

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

Vorheriges Thema - Nächstes Thema

ChrisD

Hallo,

@Morrino: Zum Testen habe ich Squeezelite v1.8.6-830 verwendet. An den Default-Einstellungen habe ich nichts geändert, so dass squeezelite mit
/usr/local/bin/squeezelite -n "piCorePlayer" -o sysdefault:CARD=ALSA -a 80:::1:
gestartet wurde.

Weiterhin habe ich versucht die Squeezelite-Version 1.8.6 durch 1.5 zu ersetzen. Mit 1.5 werden sowohl Google als auch VoiceRSS (mit beliebigen Bitraten) korrekt abgespielt. Das Problem liegt bei Squeezelite, seit Version 1.7 funktioniert es nicht mehr richtig.

@C0mmanda: Du kannst versuchen VoiceRSS mit 48kHz/16 Bit zu verwenden, alternativ kannst du eine andere Version von Squeezelite ausprobieren.

Grüße,

ChrisD

TWART016

Wenn nichts synchonisiert wird, also nur ein Player für sich spielt, wird bei SYNCMASTER "none" angezeigt. Wie man diesen Wert ändern, z.B. in den eigenen Playernamen?

Oder kann im Tablet UI eine IF-Abrage gemacht werden? If SYNCMASTER=none zeige Wert X an.

TWART016

Nächste Frage: Schalte ich mute bei einem Master, bleiben die anderen Player der Syncgruppe laut. Sollten die nicht dann auch stummgeschalten werden? Bei Play/Pause/Stop funktioniert das, auch bei einem anderen Player aus der Syncgruppe.

Kann das Verhalten angepasst werden?

Bei iPeng gibt es zudem eine Lautstärke für alle Player. Beim verändern der Lautstärke werden alle Player der Syncgruppe prozentual bzw. der Wert angepasst. Kann so etwas auch eingebaut werden?

ChrisD

Hallo,

ZitatWie man diesen Wert ändern, z.B. in den eigenen Playernamen?
Da kannst ein Userreading anlegen welches den gewünschten Wert annimmt. Es wäre zwar möglich das Modul anzupassen dass in dem Fall der Playername angezeigt wird, allerdings würde dies dazu führen dass Userreadings und Funktionen die von 'none' ausgehen nicht mehr funktionieren würden.

ZitatKann das Verhalten angepasst werden?
Ja, über das Attribut syncVolume. Alternativ kannst du es auch im UI des LMS ändern (Einstellungen - Player - Synchronisieren - Lautstärke synchronisieren).

Grüße,

ChrisD

TWART016

Zitat von: ChrisD am 22 Januar 2017, 14:31:30
Da kannst ein Userreading anlegen welches den gewünschten Wert annimmt.
Wie müsste das Reading aussehen? Nur wenn none angezeigt wird, möchte ich den Wert ändern, ansonsten soll der Wert bestehen bleiben.


Zitat von: ChrisD am 22 Januar 2017, 14:31:30
Ja, über das Attribut syncVolume. Alternativ kannst du es auch im UI des LMS ändern (Einstellungen - Player - Synchronisieren - Lautstärke synchronisieren).
Mit syncVolume wird der Wert dem Player gleichgesetzt, bei dem die Änderung passiert. Bei iPeng wird einfach der aktuelle Wert des Players plus z.B. 2 gesetzt.
Master: 56 -> 57
Slave: 22 -> 23 und nicht 22 -> 57

ChrisD

Hallo,

ZitatWie müsste das Reading aussehen?
Du kannst z.B. dies verwenden:
attr playerXXX userReadings meinSynced:synced.* {(ReadingsVal($name,'synced','') eq 'none')?'playerXXX':ReadingsVal($name,'synced','')}

ZitatBei iPeng wird einfach der aktuelle Wert des Players plus z.B. 2 gesetzt.
In dem Fall handelt es sich um eine Spezialfunktion von iPeng die nicht vom Server bereitgestellt wird. Ich könnte syncMode z.B. um 'iPengEmu' erweitern so dass das Verhalten von iPeng emuliert wird. Dazu müsste ich aber wissen was iPeng genau macht:
- gibt es getrennte Lautstärkeregler pro Gruppe oder wirkt sich der Lautstärkeregler eines einzelnen Players einer Gruppe auf alle anderen aus ?
- gibt es eine Option es ein- und auszuschalten ?
- was passiert wenn die automatische Synchronisation der Lautstärke beim LMS eingeschaltet ist ?
- ist auswählbar ob die Lautstärkeänderung prozentual oder absolut erfolgt, wenn nein, was wird verwendet ?

Grüße,

ChrisD

FHEMAN

Zitat von: FHEMAN am 06 Januar 2017, 19:28:44
Hallo ChrisD,

ich habe festgestellt, dass bei der TALK Funktion eventuell etwas noch nicht stimmt:
(SB.Group.Test enthält nur den SqueezePlayer SB.Essen)

set LMS_MUSIK syncGroup talk poweron SB.Group.Test |intercom2.mp3|Hallo Welt|
oder
set SB.Essen talk |intercom2.mp3|Hallo Welt|

ergibt MP3 + "Welt" (ohne "Hallo")

currentTitle:
http://api.voicerss.org/?key=...&src=Welt%20.&hl=de-de&f=48khz_16bit_stereo

Schlussendlich bleibt der Player dann falscherweise auch eingeschaltet.

Die MP3 (intercom2.mp3) vor dem Talk-Text ist fast immer synchron. Kann es sein, dass es insb. nur an der Textgenerierung liegt? Ich überlege schon, jetzt doch auf statische MP3s überzugehen. Die Echos im Haus sind einfach uncool ;D
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

TWART016

Zitat von: ChrisD am 23 Januar 2017, 21:08:21
attr playerXXX userReadings meinSynced:synced.* {(ReadingsVal($name,'synced','') eq 'none')?'playerXXX':ReadingsVal($name,'synced','')}
Das habe ich jetzt gesetzt.
meinSynced:synced.* {(ReadingsVal($name,'synced','') eq 'none')?'SB_Player_PCT':ReadingsVal($name,'synced','')};

Und dieser Fehler kommt:
<pre>Error evaluating SB_Player_PCT userReading meinSynced: Bareword "duration" not allowed while "strict subs" in use at (eval 5956) line 2. </pre>


Zitat von: ChrisD am 23 Januar 2017, 21:08:21
In dem Fall handelt es sich um eine Spezialfunktion von iPeng die nicht vom Server bereitgestellt wird. Ich könnte syncMode z.B. um 'iPengEmu' erweitern so dass das Verhalten von iPeng emuliert wird. Dazu müsste ich aber wissen was iPeng genau macht:
- gibt es getrennte Lautstärkeregler pro Gruppe oder wirkt sich der Lautstärkeregler eines einzelnen Players einer Gruppe auf alle anderen aus ?
- gibt es eine Option es ein- und auszuschalten ?
- was passiert wenn die automatische Synchronisation der Lautstärke beim LMS eingeschaltet ist ?
- ist auswählbar ob die Lautstärkeänderung prozentual oder absolut erfolgt, wenn nein, was wird verwendet ?
Von mir aus muss die Funktion von iPeng nicht genau so übernommen werden. Für mich würde es schon reichen setzen der Masterlautstärke = alle Player +2. Die 2 kann ggf. über ein Attribut gesetzt werden.
In wie weit die Synchronisation von LMS das Verhalten beeinflusst müsste man testen.

Und noch eine Frage :D Ist es möglich über das Modul ein Neustart des kompletten LMS Server durchzuführen?

ChrisD

Hallo,

Die Fehlermeldung deutet darauf dass du mehrere UserReadings hast und ein Komma fehlt. Kannst du den ganzen Inhalt des Attributes posten ?

ZitatVon mir aus muss die Funktion von iPeng nicht genau so übernommen werden. Für mich würde es schon reichen setzen der Masterlautstärke = alle Player +2. Die 2 kann ggf. über ein Attribut gesetzt werden.
Es gab bereits vor einiger Zeit die Anfrage den iPeng-Modus zu integrieren, deshalb wollte ich wissen wie iPeng funktioniert. Mangels iOS-Geräten kann ich es nicht selbst testen.

Was verstehst du unter 'Masterlautstärke', eine getrennte Lautstärke für die Gruppe oder die des Masters ? Was soll dann passieren wenn die Lautstärke bei einem Slave geändert wird ?

ZitatIst es möglich über das Modul ein Neustart des kompletten LMS Server durchzuführen?
Das sollte mit
set sbserver cliraw restartserver
möglich sein.

Grüße,

ChrisD

waschbaerbauch

Hallo zusammen!

Es mag vielleicht hier ein wenig offtopic sein, dennoch hoffe ich das mir hier vielleicht jemand helfen kann bei meinem 'Problemchen'.

Am Anfang wollte ich nach diversen Anleitungen im Internet WLAN Lautsprecher mit RPi zero nachbauen, allerdings sind diese ja sehr rar - zu vernünftigen Preisen - gesäht. Da kamem mir beim stöbern im 'Elektroschrott' ein paar alte SmartPhones entgegen - HTC Desire von anno dazumal. Da dachte ich mir was so ein Rpi oder RPi zero kann, das müsste es doch auch schaffen, es hat ja zumindest alle Möglichkeiten wie WLAN/BT/AudioOut etc.

Beim weiteren Stöbern bin ich dann auf die Android App 'SqueezePlayer' gestossen und dazu die kostenlose Variante zum steuern Squeezer 1.4.1. Das Ganze funktioniert soweit auch gar nicht so schlecht für den Anfang. Meine Vorstellung wäre die HTCs und den Lautsprecher (BT/Aktiv-LS) dann dauerhaft an den Strom zu bringen. Solange ein Stream aktiv läuft funktioniert das auch, wenn die Wiedergabe allerdings für eine Weile nicht aktiv gewesen ist und ich den Bildschirm vom HTC entsperre, dann sind die Apps nicht mehr aktiv, obwohl ich sie nicht (wissentlich) geschlossen habe. Hier ist nun der manuelle Eingriff notwendig - händisches Starten von Squeezer (zieh die SqueezePlayer App nach) - den ich irgendwie noch beseitigen müsste um hier zumindest provisorisch mit dem System an den Start zu gehen.

Hat hier wer eine Idee oder übersehe ich sogar das Offensichtliche?

Vielen Dank für Ratschläge die zur Ergreifung des Abbruchs/Schliessen führen.

Gruß Mario

FHEMAN

Hi Mario,

Android schließt Apps, wenn der Speicher nicht mehr reicht. Weiß nicht, ob es das bei dir ist.
Was du aber machen kannst:
Ich erinnere mich, dass OrangeSqueeze ein schönes Player Widget bereitstellt. Das kannst du in beliebiger Größe, also auch Fullscreen auf deinem Homescreen platzieren. Vielleicht wäre das eine Lösung.
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

TWART016

Zitat von: ChrisD am 26 Januar 2017, 11:59:45
Die Fehlermeldung deutet darauf dass du mehrere UserReadings hast und ein Komma fehlt. Kannst du den ganzen Inhalt des Attributes posten ?
Oh mann  :o ich habe ein Semikolon anstatt eines Kommas gesetzt. Den Code habe ich jetzt gesetzt.

syncMaster:Master.* {(ReadingsVal($name,'Master','') eq 'none')?'Wohnzimmer':ReadingsVal($name,'Master','')},

Master kommt von Master {InternalVal("SB_Player_PCT","SYNCMASTERPN","")},


Zitat von: ChrisD am 26 Januar 2017, 11:59:45
Es gab bereits vor einiger Zeit die Anfrage den iPeng-Modus zu integrieren, deshalb wollte ich wissen wie iPeng funktioniert. Mangels iOS-Geräten kann ich es nicht selbst testen.
Gibt es eine ähnliche App für Android?



Zitat von: ChrisD am 26 Januar 2017, 11:59:45
Was verstehst du unter 'Masterlautstärke', eine getrennte Lautstärke für die Gruppe oder die des Masters ? Was soll dann passieren wenn die Lautstärke bei einem Slave geändert wird ?
z.B.
SYNCMASTERPN = Wohnzimmer
SYNCGROUPPN = Bad,Küche

jetzt setze ich bei SYNCMASTERPN das volumen +2, dann wird auch bei allen SYNCGROUPPN +2 gesetzt. Vielleicht sogar per neues set, wie z.B. syncVolume. Dann kann man auch nur das Volumen von SYNCGROUPPN ändern, ohne die Werte von SYNCGROUPPN.



Zitat von: ChrisD am 26 Januar 2017, 11:59:45
Das sollte mit
set sbserver cliraw restartserver
möglich sein.
Funktioniert leider nicht. Der state des devices geht nur kurz auf disconnected und dann einige Sekunden später wieder auf opened. Der Server startet auch nicht neu, oder ist das nur der Dienst vom LMS? Der erscheint im Log.
2017.01.27 00:11:27 1: 192.168.178.14:9090 disconnected, waiting to reappear (LMS)
2017.01.27 00:11:27 3: SB_SERVER_Notify(LMS): DISCONNECTED - STATE: disconnected power: on


heppel

Moin allerseits,

ich habe noch mal probiert, TTS mit einem Squeezelite Player zu benutzen. Ich war nicht komplett erfolgreich, aber ich schildere hier mal mein Vorgehen und meine Erkenntnisse. Vielleicht kommen wir dann ja noch gemeinsam ans Ziel.

Benutzt habe ich:

Logitech Media Server Version: 7.9.0 - 1466175427 @ Fri Jun 17 15:35:04 UTSC 2016
Squeezelite v1.8.6-830 (nicht in einer Syncgruppe)
$Id: 97_SB_SERVER.pm 0030 2016-12-28 22:09:00Z CD $
$Id: 98_SB_PLAYER.pm 0067 2016-12-27 20:08:00Z CD/MM/Matthew/Heppel $

Außerdem benutze ich einen eigenen lokalen TTS-Dienst, damit ich reproduzierbare Daten bekomme.

Die erste Auffälligkeit war, das für jeden "talk"-Befehl zwei Webanfragen beim TTS-Server ankommen. Die erste kommt immer vom LMS, die zweite kommt entweder auch vom LMS oder vom Player. Das hängt davon ab, ob in den LMS-Einstellungen "Streaming über Proxy" eingestellt ist, oder nicht. (Anmerkung: Player in einer Syncgruppe verwenden immer den Proxy.)

Wenn "Streaming über Proxy" aus ist, klappt bei meinem Testaufbau gar nichts. Ich kann weder eine Ansage über meinen TTS-Dienst machen, noch eine statische MP3 ansagen lassen.

Wenn "Streaming über Proxy" an ist, kann ich beliebige MP3-Dateien mit "Talk" einstreuen. Ansagen mit Text, die über meinen TTS-Server laufen, funktionieren manchmal, und manchmal nicht. Das haengt vom Text ab, den ich ansagen lasse. Z.B. funktioniert "Dies ist eine Testansage" immer, während "Hallo Du" und "Die Innentemperatur ist 21 Grad" nie funktionieren. Die MP3-Dateien von den nicht funktionierenden Ansagen kann ich aber mit "Talk" ansagen lassen.

Das Modul glaubt im Fehlerfall, dass der Text angesagt wird:

2017.01.27 22:37:07 0: SB_PLAYER_SetTTSState: SB_Player_hp123: ttsstate: wait for play
2017.01.27 22:37:07 0: SB_PLAYER_SetTTSState: SB_Player_hp123: ttsstate: playing

Der Player sagt aber nichts und das Ganze hängt.

Hat noch jemand Ideen oder muss ich mir einen Workaround basteln, der immer erst eine Datei erzeugt und die dann ansagt ?

Viele Grü0e,
  Heppel


ChrisD

#1348
Hallo,

Das Problem liegt bei Squeezelite, aus diesem Grund verwende ich noch immer die Version 1.5. Diese spielt alle Streams, unabhängig von Format und Länge. Könntest du deine Tests mit 1.5 wiederholen ?

ZitatDas Modul glaubt im Fehlerfall, dass der Text angesagt wird:
Der LMS meldet dass der Stream abgespielt wird, wegen des Bugs im Player passiert aber nichts. Im UI des LMS sieht es auch so aus als würde die Wiedergabe laufen. Ich habe bis jetzt noch keinen Weg gefunden dies sicher zu erkennen. Ich könnte ein Timeout zum Modul hinzufügen, z.B.:
set player talk timeout:10 Dies ist ein Test
Damit würde 10 Sekunden nach Play abgebrochen.

Edit: Der Bug wurde inzwischen von Ralphy bestätigt (Beitrag 3205, ab 3190 ist eine Analyse des Fehlers), wann eine korrigierte Version von Squeezeplayer verfügbar sein wird ist aber noch offen.

Grüße,

ChrisD

FHEMAN

Zitat von: heppel am 27 Januar 2017, 23:02:20
Hat noch jemand Ideen oder muss ich mir einen Workaround basteln, der immer erst eine Datei erzeugt und die dann ansagt ?

Hallo Heppel,

ich bin auch noch dabei, das Talk Feature bei mir stabil zum Laufen zu bekommen. Eine Lösung habe ich daher leider nicht.
Zum Einsatz kommt bei mir vorrangig Squeezelite v1.8.4-762 (im piCorePlayer v2.04). Als TTS nutze ich VoiceRSS. Alles auf Proxy gestellt. Mit dieser Konfiguration funktioniert das Talk. In einer Syncgroup zumindest einige Male, jedoch nicht zuverlässig synchron.

Ich finde deine Idee mit der lokalen MP3 als Workaround ziemlich gut. Kannst du mir nähere Infos dazu geben? Was hast du da für einen Dienst aufgesetzt? Von der Stimme her finde ich IVONA ziemlich ausgereift. So bin ich gerade dabei, mir hier ein Sammelsurim an mp3s zu erstellen.

Gruß
Ronny
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB