Squeezebox Modul - erste Version

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

Vorheriges Thema - Nächstes Thema

alex885

#1425
Hallo,

SB_Player u.a. mit TTS ist grad eine meiner Baustellen...

ttsDelay scheint bei mir nicht zu funktionieren...

stelle ich 10 oder 10,10 ein plappert tante google trotzdem schon nach ca 3 sec los, die ersten Worte werden jedoch verschluckt....

gibts da Lösungsmöglichkeiten?

merci,A
FHEM auf Hackintosh-NUC, 5 x Rpi mit Fhem2Fhem & Shairport-Sync , FB7390, CUL, HMLAN, ZWave, Zigbee, RfxTrx, Rollotron, mySensors, Xiaomi mi, div Zeuchs..

ChrisD

Hallo,

Setze das Attribut ttsOptions beim Player auf debug, starte die Ausgabe und schau was im FHEM-Log steht. Wichtig sind die Zeilen die 'SB_PLAYER_SetTTSState' enthalten.

Grüße,

ChrisD



bastelfeak

Hallo,
ich kämpfe mich gerade durch die Möglichkeiten des SB_Players.

Ich möchte gern eine schöne Readingsgroup für meinen Player erzeugen und im Floorplan darstellen.

Folgende Dinge habe ich bis jetzt nicht lösen können:

  • Cover in der rg darstellen, bis jetzt steht da nur eine URL :/
  • Play-Pause Taste darstellen, ich habe schon jeweils eine Taste für die jeweilige Funktion, lieber wäre mir aber eine Triggertaste

Über eine hilfreiche Antwort würde ich mich freuen

Viele Grüße
bastelf(r)eak

ChrisD

Hallo,

@Dittel: Über welches Modul machst du die Sprachausgabe ? Die beschriebenen Probleme passen eher zum Text2Speech-Modul.

@bastelf(r)eak: Für das Cover musst du html-Tags hinzufügen damit es als Bild angezeigt wird, z.B.
'coverarturl' => '<div><img src="%VALUE" height="50" width="50"></div>' im Attribut valueIcon

Für Play/Pause kannst du das Reading playStatus verwenden. Im Attribut commands kannst du mit
'playStatus.paused' => 'set $DEVICE play', 'playStatus.stopped' => 'set $DEVICE play', 'playStatus.playing' => 'set $DEVICE pause'festlegen was beim Anklicken passieren soll und über das Attribut valueIcon kannst du das Aussehen anpassen, z.B.
'playStatus.paused' => 'IconFuerPause', 'playStatus.playing' => 'IconFuerPlay', 'playStatus.stopped' => 'IconFuerStop'

Grüße,

ChrisD

alex885

@Dittel, FYI:

hab das auch manchmal, scheint bei mir ein shairport-(sync) problem zu sein, da es auch beim radiostreaming auftritt. Hab' allerdings auch keine direkt angebundenen Lautsprecher in Benutzung.

FHEM auf Hackintosh-NUC, 5 x Rpi mit Fhem2Fhem & Shairport-Sync , FB7390, CUL, HMLAN, ZWave, Zigbee, RfxTrx, Rollotron, mySensors, Xiaomi mi, div Zeuchs..

TWART016

Ich habe mir ein userReading für die duration gebaut.
ftuiDuration:duration.* {int(ReadingsVal($name,'duration',0))}

Im Log erscheint dauernd dieser Fehler:
2017.04.06 00:28:37 1: PERL WARNING: Argument "?" isn't numeric in int at (eval 43246) line 1.
2017.04.06 00:28:37 3: eval: {int(ReadingsVal($name,'duration',0))}

Kann es sein, dass der Fehler vom iPhone kommt, da es zumeist "offline" ist?

bastelfeak

@ChrisD vielen Dank! So hat es geklappt. Ich hatte alles so ähnlich schon angelegt, aber mit so vielen Fehlern im Detail, dass es nicht funktioniert hat :) An vielen Stellen fehlen mir einfach die Grundkenntnisse von Perl.

Dann gleich noch eine Frage hinterher: Wie bekomme ich die Füllzeichen "_" für die Leerzeichen in den DropDown Menüs weg? Ich habe sowohl Favoriten als auch Playlists als Dropdown, in beiden werden Leerzeichen scheinbar automatisch durch Unterstriche ersetzt. Vermurlich über ValueStyle? Ich gucke mal ob ich selber eine Lösung finde...


ChrisD

Hallo,

@TWART016: duration hat den Wert '?' wenn die Dauer unbekannt oder der Player nicht erreichbar ist. Die Meldung im Log kommt weil Perl das ? nicht in eine Zahl umwandeln kann. Du kannst versuchen das userReading zu ändern:
ftuiDuration:duration.* {my $d=ReadingsVal($name,'duration',0);$d eq '?' ? 0:int($d)}

@bastelfeak: Die '_' sind bereits in den Readings enthalten da Leerzeichen im UI Probleme bereiten. In FTUI gibt es mittlerweile eine Möglichkeit Leerzeichen zu verwenden, in FHEMWEB geht es aber nicht.

Grüße,

ChrisD

Standarduser

Hallo ChrisD,

ich würde gern für meine TabletUI die Gesamtspieldauer der Playlist berechnen. Dafür habe ich mir ein Userreading mit dem Namen durationAll mit folgendem Code erzeugt:


durationAll {
my @matches = (1..1000);
my $sum = 0;
@matches = ReadingsVal('DG.ku.MM.Squeezebox', 'ftuiMedialist', '') =~ /Time...(\d{1,4})/g;

foreach my $num (@matches){
$sum = $sum + $num;
}

return $sum;
}


Wenn ich den Code in ein Perl-Script einfüge, einen beispielhaften Inhalt von ftuiMedialist in eine Variable packe und diesen dann verarbeite, dann kommt die Gesamtspieldauer in Sekunden heraus. In FHEM passiert garnichts, noch nichtmal das Userreading erscheint.

Kannst Du mir da einen Tipp geben?

ChrisD

Hallo,

Der Code funktioniert bei mir, ich habe lediglich 'DG.ku.MM.Squeezebox' durch $name ersetzt. Gibt es keine Meldung im Log ?

Grüße,

ChrisD

Standarduser

#1435
Hi ChrisD,

es erscheint keine Meldung im Log. Ich hatte mich auch schon gefragt, ob sich das nicht irgendwie relativ adressieren lässt, hatte aber noch nicht danach gesucht.

Im Moment habe ich aber ein anderes Problem. Voller Hoffnung und Vorfreude ( ;) ) habe ich mir https://raw.githubusercontent.com/ChrisD70/FHEM-Modules/master/autoupdate/sb/controls_squeezebox.txt zum Update hinzugefügt und gesehen, dass Da mittlerweile (theoretisch) auch Playlisten aus Modulen angezeigt werden sollten. Tuts bei mir nicht.

ftuiMedialist enthält die korrekte Anzahl an Einträgen, aber jeder Eintrag ist leer. Bisher waren immer nur die ersten leer, wenn die Anzahl an Tracks recht hoch war, jetzt kommt garnichts mehr.
[{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"},{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"},{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"},{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"},{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"},{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"},{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"},{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"},{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"},{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"},{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"},{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"},{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"}]

Funktioniert das bei Dir richtig? Soll ich lieber erstmal keine Updates aus dieser Quelle ziehen? Wie handhabst Du das eigentlich?

//EDIT: Wie es aussieht betrifft dieses Problem eher Playlisten, die als Favoriten abgespeichert sind, und auch nicht alle. Favoriten deshalb, weil bisher meine Spotify-Playlisten nicht als Playlisten angezeigt werden. Über den Umweg, die als Favoriten zu speichern, erscheinen sie auch in FHEM und lassen sich so steuern. Alles in Allem dennoch sehr unbefriedigend.

ChrisD

Hallo,

ZitatFunktioniert das bei Dir richtig?
Die Einträge der Liste sind leer wenn der Server keine Daten hat. In dem Fall wird auch im UI des LMS nichts angezeigt. Erst wenn die Tracks dem LMS bekannt sind kann er Informationen weiterreichen. Getestet habe ich es mit Soundcloud da ich kein Spotify habe.

ZitatSoll ich lieber erstmal keine Updates aus dieser Quelle ziehen?
Bei der Quelle bekommst du die gleichen Module wie wenn du den update-Befehl von Hand durchführst. Der einzige Unterschied ist dass die Module beim einem normalen FHEM-Update automatisch mit aktualisiert werden.

ZitatWie handhabst Du das eigentlich?
Ich setze die Module auf Github und verwende sie auch.

Grüße,

ChrisD



Standarduser

Zitat von: ChrisD am 10 April 2017, 20:31:10
Hallo,
Die Einträge der Liste sind leer wenn der Server keine Daten hat. In dem Fall wird auch im UI des LMS nichts angezeigt. Erst wenn die Tracks dem LMS bekannt sind kann er Informationen weiterreichen.

Der LMS zeigt sofort immer alle Tracks an, egal in welcher Kombination, das funktioniert zu 100%. Allerdings zeigt der Player in FHEM das beschriebene Verhalten. Wird da vielleicht eine Art Cache genutzt, der nicht richtig aktualisiert wird?

Soll ich Dir sonst mal Zugangsdaten für Spotify zukommen lassen?

Standarduser

Zitat von: ChrisD am 10 April 2017, 19:29:16
Hallo,

Der Code funktioniert bei mir, ich habe lediglich 'DG.ku.MM.Squeezebox' durch $name ersetzt. Gibt es keine Meldung im Log ?

Grüße,

ChrisD

Hab den Fehler gefunden. Ich habe noch ein weiteres Reading, jedoch das Komma zwischen beiden Definitionen vergessen.
Das andere Problem besteht immer noch.

Borstel

hat das schon mal jemand gemacht und zufälligerweis eine beispielhafte Definition parat.
Ich will das in einem nächsten Schritt als Lautstärkeregler mit Alexa ansprechen.

Für das Setzen des Current-Media-Devices bsw. für Radiosender habe ich bereits implementiert,
aber für die Lautstärke fehlt mir gerade der richtige Ansatz.

Ich habe vor, das ganze wie einen Dimmer einzusetzen.

Für ein lustiges Beispiel wäre ich sehr dankbar.

Gruß Björn