Modul für MPD

Begonnen von roedert, 08 Januar 2014, 12:17:21

Vorheriges Thema - Nächstes Thema

tomster

#195
Bei mir zeigt es play/stop/etc. auch nicht im eventViewer an; zumindest nicht wenn ich MPD mit dem Modul-Icons in FHEMWeb starte oder stoppe...

--edit--

Halt! Doch. Zumindest seit ich die Playlisten-Bereinigung von nesges wieder entfernt habe...

setstate

#196
Die Playlists müssen mit Anführungszeichen gesendet werden:

So geht es:

set MPD1 playlist "Pay Close Attention : XL Recordings"

Per Auswahl aus der Combobox im FHEMWEB kommt bei jeder Playlist:

mpd_Msg ACK ERROR [2@0] {load} wrong number of arguments for "load"

setstate

#197
Zitat von: nesges am 15 Mai 2015, 11:59:52

Dabei ist mir grade ein Bug aufgefallen, denke ich: Ich habe Playlists mit Doppelpunkt im Namen, das bringt get playlist offenbar durcheinander. Mir wird nur jeweils das erste Wort des Playlistnamen geliefert und die Playlists werden nicht voneinander getrennt.

Das kann ich bestätigen, passiert bei mir auch

mpc liefert:
Pay Close Attention : XL Recordings
Piano Ballads by spotify


MPD Modul liefert alles in einer Zeile:
Pay Close Attention Piano Ballads by spotify

edit: man könnte in nesges Funktion "mpd_playlists" auch das Command "get MPD1 mpdCMD listplaylists" benutzen und dann die "playlist: ...." Zeilen auslesen. Das command funktioniert besser mit diesem Modul.

Anderer Punkt: aktuelle named Playlist abrufen
Im MPD Protokoll habe ich keine Info gefunden, ob man den Namen der aktuellen Playlist auslesen könnte. Gibts wohl nicht?
Im MPD Forum hat jemand die Frage auch schon gestellt. Sieht nicht gut aus. Ich habe die Bitte um Implementierung auch von meiner Seite nochmal unterstrichen im MPD Forum.
Macht durchaus Sinn, die Info vom Server abrufen zu können. Wenn Frontend A eine Combobox mit den verfügbaren Playlist anbietet, und eine auswählt, sollte Frontend A auch über Änderungen der Selektion informiert werden können, wenn Frontend B eine andere Playlist wählt. Ist ein String, der gespeichert und im Status API aufgenommen werden müsste.

2nd Edit:
Userreading für die playlists (in Anführungszeichen)
sub mpd_playlists($) {
    my $device=shift;
    my @playlists =  ( fhem("get $device mpdCMD listplaylists") =~ m/playlist:\s(.*)\n/g );
    return '"'.join('":"', @playlists).'"';
}


userReadings
playlists {mpd_playlists('MPD1')}

Nutzung im FTUI
<div data-type="select" data-device="MPD1" data-list="playlists" data-get="current_playlist" data-set="playlist" class="w3x" ></div>

Jetzt fehlt mir nur noch das Reading "current_playlist", um das richtige Item in der Combobox auszuwählen.
Evtl. könnte man da mit einer weiteren wilden Perlfunktion etwas erreichen, die mittels playlistlength und  file versucht, den richtigen Playlistnamen zu erraten.

3rd edit:
Ich merke gerade, das Modul kann mit dem UserReading nicht umgehen, damit gibt es wirre Fehler bei den einfachen Funktionen, wie 'toggle' usw. -> Also wieder raus ...

Virsacer

Hey, ich habe gerade festgestellt, dass wenn der MPD nicht erreichbar ist, das Modul FHEM minutenlang blockiert :o

Wernieman

′Wzut

Du hattest mal angekündigt, das Du das Modul noeu entwickelt hast:
Zitat« Antwort #167 am: 29 April 2015, 14:13:47 »
Gibt es dazu Neuigkeiten?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Wzut

Nein, wegen anderen Baustellen ruht MPD.
Aber aufgeschoben ist nicht aufgehoben, ich denke das ich ab September dafür wieder mehr Zeit habe.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Wernieman

Danke für die Info (und Deine Mühe) :o)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Virsacer

Ok, ich hoffe, dass das mit dem Timeout auch noch verbessert wird :)
Denn den MPD, der nur zeitweise läuft, kann ich im Moment nicht wirklich einbinden :-\

Wzut

Zitat von: Virsacer am 11 August 2015, 16:10:42
den MPD, der nur zeitweise läuft

Blöde Frage : warum läuft dein MPD nur zeitweise und nicht immer ?
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Bapt. Reverend Magersuppe

Zitat von: Wzut am 13 August 2015, 12:54:37
Blöde Frage : warum läuft dein MPD nur zeitweise und nicht immer ?

Sowas passiert doch schnell. Ich habe hier einen kleinen Runeaudio-Kasten leiern. Der ist natürlich nicht 24h am Tag an. Manchmal schon, aber garantieren kann das keiner.
--
If I was born in 1453, Leonardo da Vinci would be jealous of me.
Reverend Paul Egon Magersuppe
Aus versicherungstechnischen Gründen sind sämtliche Beiträge von mir rein spekulativer und theoretischer Natur und sollten nicht in die Tat umgesetzt werden!
Bin hier selten DRIN. AUS GRÜNDEN!

Virsacer

Zitat von: Wzut am 13 August 2015, 12:54:37
Blöde Frage : warum läuft dein MPD nur zeitweise und nicht immer ?

Ich hab auf dem RASPI einen MPD (der theoretisch immer läuft) für Webradio...
Da ich meine MP3 Sammlung aber auf dem Desktop habe, habe ich dort auch einen MPD, nur läuft der halt nicht immer...

Wzut

Ich habe das gerade nochmal auf dem Testsystem durchgespielt , bei mir blockiert da nichts.
Ganz egal ob der MPD erreichbar ist oder nicht.
Welche Version nutzt ihr denn , die aus dem update/svn oder die letzte Beta aus meinem Posting #167 vom  29 April 2015 ?
und ganz wichtig  : wie sind die Attribute Timeout und useIdle  definiert ?   
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Virsacer

#207
Also ich nutze die Version aus dem Update - ein timeout-Attribut gibts da aber nicht!?

Also Ausgangssituation:
MPD läuft und FHEM ist mit ihm verbunden, dann wird MPD beendet.

useIdle=1

MPD Stop um 18:30:00
FHEMWEB nicht mehr erreichbar und Fensterkontakt blinkt rot
18:34:20 FHEMWEB ist für ca. 20 Sek wieder erreichbar und Fensterkontakt blinkt grün
Aber dann wiederholt sich das Spiel...
18:45:10 FHEMWEB ist zum was weiß ich wie vielten mal nicht erreichbar
18:45:20 MPD Start
18:46:00 FHEMWEB ist wieder erreichbar

Während der ganzen Zeit ein Logeintrag:
2015.08.15 18:32:07 3: Mediaplayer, connect: Connection timed out


useIdle=0

MPD Stop um 18:50:00
FHEMWEB nicht mehr erreichbar und Fensterkontakt blinkt rot
18:54:18 FHEMWEB ist für ca. 20 Sek wieder erreichbar - Gelegenheit genutzt um verbose für das Device auf 5 zu stellen (vorher nicht dran gedacht - war global auf 3)
Das Spiel wiederholt sich...
18:58:30 MPD Start
18:59:30 FHEMWEB ist wieder erreichbar

Auch nur ein Logeintrag:
2015.08.15 18:52:08 3: Mediaplayer, connect: Connection timed out

EDIT:

Internals:
   ALBUMARTIST SAGA
   CHANGED
   DEF        192.168.18.20
   DISC       1/1
   HOST       192.168.18.20
   INTERVAL   30
   NAME       Mediaplayer
   NR         145
   PORT       6600
   PRESENT    1
   STATE      pause
   TYPE       MPD
   VERSION    MPD 0.17.0
   VOLUME     -1
   WINMM      on
   CHANGETIME:
   Ipid:
     abortArg
     abortFn
     finishFn   MPD_IdleDone
     fn         MPD_IdleStart
     pid        1292
   Readings:
     2015-08-15 19:14:51   artist          SAGA
     2015-08-15 19:14:51   audio           44100:24:2
     2015-08-15 19:14:51   bitrate         320
     2015-08-15 19:14:51   consume         0
     2015-08-15 19:14:51   elapsed         11.361
     2015-08-15 18:59:30   error           connect: Connection timed out
     2015-08-15 19:14:51   file            MP3s/Wind Him Up.mp3
     2015-08-15 19:14:51   id              38
     2015-08-15 19:14:51   last-modified   2015-06-24T22:00:02Z
     2015-08-15 19:14:51   mixrampdb       -20.000000
     2015-08-15 19:14:51   mixrampdelay    -1.000000
     2015-08-15 19:12:46   mpd_event       changed: player
     2015-08-10 14:09:18   name            0
     2015-08-15 19:14:51   nextsong        39
     2015-08-15 19:14:51   nextsongid      39
     2015-08-15 19:14:51   playlist        2
     2015-08-15 19:14:51   playlistlength  42
     2015-08-15 19:14:51   pos             38
     2015-08-15 19:14:51   random          0
     2015-08-10 14:04:09   repeat          1
     2015-08-15 19:14:51   single          0
     2015-08-15 19:14:51   song            38
     2015-08-15 19:14:51   songid          38
     2015-08-15 19:12:45   state           pause
     2015-08-15 19:14:51   time            342
     2015-08-15 19:14:51   title           Wind Him Up
     2015-08-15 19:14:51   volume          -1
     2015-08-15 19:14:51   xfade           0
   Helper:
     Running_pid:
       abortArg
       abortFn
       finishFn   MPD_IdleDone
       fn         MPD_IdleStart
       pid        1292
Attributes:
   DbLogExclude .*
   devStateIcon play:rc_PLAY:pause stop:rc_STOP:play pause:rc_PAUSE:pause
   group      mpd
   icon       audio_eq
   room       Devices
   useIdle    1


EDIT2:
Wenn ich die IP wieder auf eine nicht vergebene umstelle, damit er nicht blockiert, sieht die Meldung übrigens so aus:

2015.08.15 19:27:08 3: MPD: Device Mediaplayer defined.
2015.08.15 19:27:49 3: Mediaplayer, connect: No route to host

In der Zeit blockiert er seltsamerweise nicht...

BenMarloe

@Wzut: Vielen Dank für das schöne Modul. Ich setze es gerne für Alarmfunktionen ein.

Wenn ich als einfacher Neuling etwas wünschen dürfte würde ich mir zwei Änderungen in der Oberfläche wünschen (siehe auch Anhänge):
a) set myMPD repaet sollte meines Erachtens nach gegen Set myMPD repeat ausgetauscht werden.
b) Bei Set myMPD volume wünsche ich mir ein Feld zur Eingabe. In meiner Installation sehe dort nur eine Ausgabe.

@Wzut: würdest Du dafür für uns bitte weitere (Frei-)Zeit aufbringen?
@all: Sinnvoll / notwendig? - Was meint Ihr?
Alles ist kompliziert - bis man es verstanden hat
Fhem auf Raspberry 2 B
EnOcean / Homematic / Eigenbau / ABB 23 / SolarEdge SE10k

Wzut

Zitat von: BenMarloe am 17 August 2015, 22:00:15
a. set myMPD repaet
--- snipp -----
b. In meiner Installation sehe dort nur eine Ausgabe.
a. Sauerei hat bisher noch niemand gemerkt !!! Kommt auf die ToDo Liste
b. *lach* , nein nein das bliebt wie es ist :) Tipp : Klick mal das Kasterl mit der 100 an und ziehe es mit gedrückter Maustaste nach links ...

@Virsacer , ok dann schauen mer mal was der Unterschied zwischen IP und MPD nicht erreichbar ist. Wegen Timeout, ja mein Fehler. Ich meinte natürlich Intervall, da das bei useIdle =1 als Timeout arbeitet.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher