Squeezebox Modul - erste Version

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

Vorheriges Thema - Nächstes Thema

kvo1

Moin Jochen.

{fhem("set Kueche talk |/home/pi/gong.mp3| Achtung Es folgt eine Durchsage | ".ReadingsVal("FhemMail","Subject",""))}

und wenn Du einfach den Text "Achtung Es folgt eine Durchsage"  also mp3 aufnimmst , inl. der ,15 sec. Pause und damm die beiden mp3 zu einen file merg´st ?  ;)

gruss
klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

FHEMAN

Möglicherweise gibts auch gar keine sinnige Erklärung für das Verhalten. Ich würde mal testen, die beiden Texte mittels .= zu einem String zusammenfassen und abspielen bzw vorlesen zu lassen.
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

joginet

Zitatund wenn Du einfach den Text "Achtung Es folgt eine Durchsage"  also mp3 aufnimmst , inl. der ,15 sec. Pause und damm die beiden mp3 zu einen file merg´st ?  ;)

Exakt das hatte ich mir auch schon überlegt...  :)

ZitatMöglicherweise gibts auch gar keine sinnige Erklärung für das Verhalten. Ich würde mal testen, die beiden Texte mittels .= zu einem String zusammenfassen und abspielen bzw vorlesen zu lassen.

Meine Vermutung ist, dass der LMS nicht schnell genug zwischen den mp3s/playlisten umschaltet. Wie müsste ich das denn schreiben mit dem ".=" ?

Gruß, Jochen
Meine Konfig: FHEM auf NUC i5 mit Mint, HM-LAN, div. HM Schalter und Heizungsthermostate, FB 6840LTE mit Dect200, HUE bridge, HUE bulbs + Lightstrips, VU+Duo2 und Philips-TV Steuerung, Pushmail, Floorplan, Sprachsteuerung + Feedback per Arduino mit MOVI-Shield, LMS Multiroom mit 7x Pi

ChrisD

Hallo,

Bei mir funktioniert die Ausgabe wenn ich
set meinPlayer talk |gong.mp3| Achtung Es folgt eine Durchsage |silence1x5.mp3| und das ist test nummer 2
eingebe.

Getestet habe ich es mit squeezelite 1.7 auf einem Raspberry mit einem Hifiberry DAC.

Welchen Player verwendest du auf welcher Hardware ?

Grüße,

ChrisD

joginet

#694
Zitat
Welchen Player verwendest du auf welcher Hardware ?

Moin, ich verwende den piCorePlayer 1.19i_RPi2 auf einem Raspi 2.

Der LMS läuft bei mir auf einem weiteren Pi2 unter Raspian.

Gruß, Jochen

Edit:
Hmm - hab's gerade nochmal getestet - einmal mit 2. Text und einmal mit Reading am Ende.
Jetzt geht es... Keine Ahnung warum - ich habe nichts verändert...  ???

Edit2: Doch nicht. Aber: in der fhem-Befehlszeile geht es, auch mit den Perl-Klammern.
Ich hatte mir ein notify gebaut, um eine eingehende mail vorlesen zu lassen:
http://forum.fhem.de/index.php/topic,33088.msg290836.html#msg290836

Wenn das notify die talk-Funktion anschiebt, dann geht es scheinbar nicht - dann wird das Reading gar nicht erst vorgelesen - nur Gong und Ansage.
Und zwar sobald eine zweite mp3-Datei drin ist. Warum das so ist erschließt sich mir allerdings nicht...
Meine Konfig: FHEM auf NUC i5 mit Mint, HM-LAN, div. HM Schalter und Heizungsthermostate, FB 6840LTE mit Dect200, HUE bridge, HUE bulbs + Lightstrips, VU+Duo2 und Philips-TV Steuerung, Pushmail, Floorplan, Sprachsteuerung + Feedback per Arduino mit MOVI-Shield, LMS Multiroom mit 7x Pi

FHEMAN

oder funktioniert es nur dann nicht, wenn du 2x Text vorlesen lässt? Unabhängig von den mp3s. Schau dir mal den talkstatus an, wenn du nur einen text vorlesen lässt. Wie gesagt, ich hatte da auchso meine Probleme.
Wg. String concat:
my $ansage = "Achtung Ansage... ";
$ansage .= ReadingsVal(...);
fhem("set meinplayer talk |mp3file| $ansage |");

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

joginet

Moin Ronny,

Zitatoder funktioniert es nur dann nicht, wenn du 2x Text vorlesen lässt? Unabhängig von den mp3s.

Nein, denn

{fhem("set Kueche talk |/home/pi/gong.mp3| Achtung Es folgt eine Durchsage | blablabla | ".ReadingsVal("FhemMail","Subject",""))}

funktioniert, aber

{fhem("set Kueche talk |/home/pi/gong.mp3| Achtung Es folgt eine Durchsage |/home/pi/silent.mp3| ".ReadingsVal("FhemMail","Subject",""))}

funktioniert nicht.

Allerdings wie gesagt - nur wenn das über mein notify angestossen wird - über die fhem Kommandozeile geht beides.
Egal - ich kann damit leben - bis auf die Pause funktioniert alles prima.

Zur Not bastele ich mir ein "Ansage-mp3" mit integrierter Pause  :)

Gruß, Jochen
Meine Konfig: FHEM auf NUC i5 mit Mint, HM-LAN, div. HM Schalter und Heizungsthermostate, FB 6840LTE mit Dect200, HUE bridge, HUE bulbs + Lightstrips, VU+Duo2 und Philips-TV Steuerung, Pushmail, Floorplan, Sprachsteuerung + Feedback per Arduino mit MOVI-Shield, LMS Multiroom mit 7x Pi

ChrisD

Hallo,

@joginet: Ich kann den Effekt leider nicht reproduzieren. Auch mit dem notify
define Durchsage notify FhemMail {fhem("set meinPlayer talk |/playlists/LMS/gong.mp3| Achtung Es folgt eine Durchsage |/playlists/LMS/silence1x5.mp3| ".ReadingsVal("FhemMail","Subject",""))}
wird der gesamte Text ausgegeben. Ich weiß daher nicht so Recht wo ich ansetzen soll um den Fehler zu finden.

@Derron: Ich habe save und recall in 98_SB_PLAYER etwas erweitert:
- bei save kann zusätzlich ein Name für den Zustand mit übergeben werden, z.B.
set meinPlayer save Zustand_1
- mit
get meinPlayer savedStateswerden die gespeicherten Zustände angezeigt

- bei recall kann der Name des Zustandes sowie verschiedene Optionen mit angegeben werden, möglich sind:
  - del: löscht den Zustand nach dem Wiederherstellen
  - delonly: Zustand wird aus der Liste gelöscht ohne wieder hergestellt zu werden
  - on: der Player wird eingeschaltet, unabhängig davon was abgespeichert wurde
  - off: der Player wird ausgeschaltet, unabhängig davon was abgespeichert wurde
  - play: der Player wird eingeschaltet und die Wiedergabe wird gestartet
  - stop: der Player wird angehalten
  die einzelnen Optionen können (soweit sinnvoll) kombiniert werden indem sie durch Leerzeichen getrennt angegeben werden, z.B.
set meinPlayer recall Zustand_1 del play
- recall bietet jetzt die gespeicherten Zustände zur Auswahl an
- die Zustände werden bei einem 'Save config' von FHEM mit abgespeichert wenn das Perl-Modul Data::Dumper vorhanden ist, beim Start von FHEM werden sie wieder eingelesen
- wenn kein Name bei save/recall mit angegeben wird, wird 'default' als Name verwendet
- TTS verwendet einen eigenen Namen und beeinflusst so die anderen Zustände nicht mehr

Die neue Version kann mit
update 98_SB_PLAYER https://raw.githubusercontent.com/ChrisD70/FHEM-Modules/master/autoupdate/sb/controls_squeezebox.txtinstalliert werden. Danach muss FHEM neu gestartet werden. Ein reload des Moduls reicht nicht aus.

Grüße,

ChrisD

FHEMAN

Hallo ChrisD, das hört sich ja genial an! Vielen vielen Dank für die Implementierung. Ich werde es am Wochenende testen und meinem Player jede Menge neue Funktionen spendieren (Umschalten zw den beiden Lieblingsplaylists, Senderansage etc.)

Danke und 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

joginet

Zitat@joginet: Ich kann den Effekt leider nicht reproduzieren. Auch mit dem notify
Code: [Auswählen]

define Durchsage notify FhemMail {fhem("set meinPlayer talk |/playlists/LMS/gong.mp3| Achtung Es folgt eine Durchsage |/playlists/LMS/silence1x5.mp3| ".ReadingsVal("FhemMail","Subject",""))}

wird der gesamte Text ausgegeben. Ich weiß daher nicht so Recht wo ich ansetzen soll um den Fehler zu finden.

Hi ChrisD,
Mein notify ist zeimlich groß, es schaltet z.B. meine Dummys zum syncen aller Player an.
Evt. ist das bei mir auch ein timingproblem, denn es dauert ja einen Moment, bis sich alle Player zusammengeschaltet haben. Egal - ich baue mir ein Durchsage-mp3 mit einer kleinen Pause - da kann ich prima mit leben.
Der Rest funktioniert hervorragend !
Auf jeden Fall Danke für Deine Mühe - ich freue mich auf die neuen Features und werde weiter basteln !  :)

Gruß, Jochen
Meine Konfig: FHEM auf NUC i5 mit Mint, HM-LAN, div. HM Schalter und Heizungsthermostate, FB 6840LTE mit Dect200, HUE bridge, HUE bulbs + Lightstrips, VU+Duo2 und Philips-TV Steuerung, Pushmail, Floorplan, Sprachsteuerung + Feedback per Arduino mit MOVI-Shield, LMS Multiroom mit 7x Pi

SL85

Hallo ChrisD,

ich habe auch nach Anleitung einen Rpi B+ als LMS und einen Rpi B+ mit dem PiCorePlayer am laufen.
Leider füllt sich mein Logfile extrem.
Hier meine Konfig:
define LogiTechMediaServer SB_SERVER 192.168.178.29[:cliserverport] [RCC:rccname] [WOL:wolname] [USER:username] [PASSWORD:password]
attr LogiTechMediaServer alivetimer 120
attr LogiTechMediaServer doalivecheck true
attr LogiTechMediaServer httpport 9000
attr LogiTechMediaServer maxcmdstack 200
attr LogiTechMediaServer maxfavorites 30
attr LogiTechMediaServer verbose 1

define SB_PLAYER_000000000001 SB_PLAYER 00:00:00:00:00:01
attr SB_PLAYER_000000000001 IODev LogiTechMediaServer
attr SB_PLAYER_000000000001 alias Musik Wohnzimmer
attr SB_PLAYER_000000000001 amplifier play
attr SB_PLAYER_000000000001 coverartheight 50
attr SB_PLAYER_000000000001 coverartwidth 50
attr SB_PLAYER_000000000001 devStateIcon off:10px-kreis-rot on:10px-kreis-gruen
attr SB_PLAYER_000000000001 donotnotify false
attr SB_PLAYER_000000000001 event-on-change-reading currentTitle,currentArtist,state
attr SB_PLAYER_000000000001 fadeinsecs 5
attr SB_PLAYER_000000000001 fp_Musik 1,205,2
attr SB_PLAYER_000000000001 idismac true
attr SB_PLAYER_000000000001 room SB_PLAYER
attr SB_PLAYER_000000000001 serverautoon true
attr SB_PLAYER_000000000001 ttslanguage de
attr SB_PLAYER_000000000001 ttslink http://translate.google.com/translate_tts?ie=UTF-8
attr SB_PLAYER_000000000001 volumeLimit 100
attr SB_PLAYER_000000000001 volumeStep 10
attr SB_PLAYER_000000000001 webCmd favorites:volume
attr SB_PLAYER_000000000001 verbose 1

define WohnzimmerText readingsGroup SB_PLAYER_000000000001.*:currentArtist,currentTitle
attr WohnzimmerText noheading 1
attr WohnzimmerText nonames 1
attr WohnzimmerText notime 1
attr WohnzimmerText fp_Musik 100,200,0
attr WohnzimmerText room SB_PLAYER
attr WohnzimmerText style style="color:lightblue;;text-align:left;;font-size:10px"
attr WohnzimmerText visibility hidden

define WohnzimmerTextVis DOIF ([SB_PLAYER_000000000001:state] eq "on") (set WohnzimmerText visibility show) DOELSEIF ([SB_PLAYER_000000000001:state] eq "off") (set WohnzimmerText visibility hide)
attr WohnzimmerTextVis room SB_PLAYER

define rc1 remotecontrol
attr rc1 fp_Musik 25,600,0
attr rc1 rc_iconpath icons/remotecontrol
attr rc1 rc_iconprefix black_btn_
attr rc1 room SB_PLAYER
attr rc1 row00 off:POWEROFF3,play:PLAY,mute:MUTE
define notify_rc1 notify rc1 set SB_PLAYER_000000000001 $EVENT


Hier ein Auszug meines Logfiles:
2015.05.08 21:20:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 mode ?

2015.05.08 21:20:46 1: SB_SERVER_Read: the buf: 00:00:00:00:00:01 mode ?

2015.05.08 21:21:09 1: SB_SERVER_Read: the buf: fhemalivecheck

2015.05.08 21:23:09 1: SB_SERVER_Read: the buf: fhemalivecheck

2015.05.08 21:25:09 1: SB_SERVER_Read: the buf: fhemalivecheck

2015.05.08 21:25:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 artist ?

2015.05.08 21:25:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 album ?

2015.05.08 21:25:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 title ?

2015.05.08 21:25:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 playlist url ?

2015.05.08 21:25:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 remote ?

2015.05.08 21:25:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 status 0 500 tags:Kcu

2015.05.08 21:25:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 alarms 0 200 tags:all filter:all

2015.05.08 21:25:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 playerpref alarmsEnabled ?

2015.05.08 21:25:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 playerpref alarmDefaultVolume ?

2015.05.08 21:25:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 playerpref alarmTimeoutSeconds ?

2015.05.08 21:25:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 playerpref alarmSnoozeSeconds ?

2015.05.08 21:25:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 playerpref syncVolume ?

2015.05.08 21:25:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 playlist name ?

2015.05.08 21:25:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 duration ?

2015.05.08 21:25:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 time ?

2015.05.08 21:25:46 1: SB_SERVER_Read: the buf: 00:00:00:00:00:01 artist ?

2015.05.08 21:25:46 1: SB_SERVER_Read: the buf: 00:00:00:00:00:01 album ?

2015.05.08 21:25:46 1: SB_SERVER_Read: the buf: 00:00:00:00:00:01 title ?

2015.05.08 21:25:46 1: SB_SERVER_Read: the buf: 00:00:00:00:00:01 playlist url ?
00:00:00:00:00:01 remote ?
00:00:00:00:00:01 status 0 500 tags:Kcu
00:00:00:00:00:01 alarms 0 200 tags:all filter:all

2015.05.08 21:25:46 1: SB_SERVER_Write(LogiTechMediaServer): called with FN:00:00:00:00:00:01 mode ?

2015.05.08 21:25:46 1: SB_SERVER_Read: the buf: 00:00:00:00:00:01 playerpref alarmsEnabled ?
00:00:00:00:00:01 playerpref alarmDefaultVolume ?
00:00:00:00:00:01 playerpref alarmTimeoutSeconds ?
00:00:00:00:00:01 playerpref alarmSnoozeSeconds ?

2015.05.08 21:25:46 1: SB_SERVER_Read: the buf: 00:00:00:00:00:01 playerpref syncVolume ?
00:00:00:00:00:01 playlist name ?
00:00:00:00:00:01 duration ?
00:00:00:00:00:01 time ?
00:00:00:00:00:01 mode ?

2015.05.08 21:27:09 1: SB_SERVER_Read: the buf: fhemalivecheck


Hast du eine Idee woran das liegen kann?

Gruß Sebastian

ChrisD

Hallo,

Die Ausgabe im Log kommt wahrscheinlich von einer etwas älteren Version mit Debug-Ausgaben. Kannst du überprüfen welche Version du installiert hast ?

Die Version kannst du u.a. in FHEM sehen wenn du den Befehl
version
eingibst. Interessant sind hierbei die Zeilen mit 97_SB_SERVER und 98_SB_PLAYER.

Grüße,

ChrisD

SL85

Hallo,

mit "version" finde ich die Module leider nicht.
Aber in der "97_SB_SERVER.pm" Datei habe ich folgendes gefunden:

based on 97_SB_SERVER.pm beta 20141120 bugster_de, Update 0014 CD

Hilft das?

Gruß Sebastian

ChrisD

Hallo,

Du verwendest die aktuelle Version aus Contrib in der ich aber vergessen habe das Logging zurückzusetzen. Ich habe die Datei korrigiert, du musst sie aber von Hand aus dem SVN herunterladen.

Alternativ kannst du mit
update 97_SB_SERVER https://raw.githubusercontent.com/ChrisD70/FHEM-Modules/master/autoupdate/sb/controls_squeezebox.txt
auch die Datei von GitHub installieren die den Fehler nicht enthielt.

Danach solltest du FHEM neu starten.

Grüße,

ChrisD

SL85

Hat funktioniert :)

Vielen Dank!!!

Gruß Sebastian