Modul für MPD

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

Vorheriges Thema - Nächstes Thema

Wzut

Zitat von: Tobias am 30 Dezember 2016, 18:08:25
sind denn die TabletUI Anpassungen von setstate schon im offiziellen Modul drin?
https://forum.fhem.de/index.php?topic=53863.0
Ich habe mir die Tage TabletUI installiert und nach der Vorlage von setstate auch eine index.html dazu gebastelt. ( siehe Anhang , nicht unbedingt schön aber ausreichend für Tests ) Inzwischen habe ich auch verstanden welche Anforderungen TabletUI bzw. die verwendeten Widgets an das MPD Modulen stellen und an welchen Stellen ich nachbessern musste. Die neue Version kommt ohne zusätzlichen Funktionen in der 99_myUtils sowie irgendwelchen notifys aus. D.h "out of the box" mit TabletUI einsetzbar.
Notwendige Änderungen im nächsten Update ( kommt noch diese Woche ) :
Die Schreibweise der Readings  Album, Artist, Date, Genre Id, Last_Mod, Name, Pos, Time, Title und Track wird sich von kompletter Kleinschreibung auf die von MPD intern verwendete Variante mit großem Anfangsbuchstaben ändern. Damit entfällt auch das Problem des doppelten time Readings (  https://forum.fhem.de/index.php/topic,18517.msg539676.html#msg539676 ) , da es dann je ein Reading Time und  time gibt.
setstate verwendet in seinem Beispiel den Mopidy Player mit Spotify-Plugin, dadurch hat er das Reading X-AlbumUri  zur Anzeige von Cover Bilder. Der MPD kennt dieses Reading nicht, mein Beispiel nutzt die von Last.fm heruntergeladenen Interpreten (artist_image) Bilder aus dem Cache.
Neue Readings :  playlistinfo und playlistname
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Tobias

hi Wzut,

das hört sich ja super an :) Dann warte ich mal gespannt auf das Update :)

Etwas anderes: Kannst du dir vorstellen wi es klemmen könte wenn ich eine Fehlermeldung beim "set Volume <irgendetwas>" bekomme?MPD_Msg ACK ERROR [52@0] {setvol} problems setting volume
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Wzut

ja ganz zu Anfang hatte ich auch das Problem (Volume war immer 0)
Grund war der mixer-device  Eintrag im Audio Device der mpd.conf. den habe ich dann ganz entfernt bzw. teste mal die verschiedenen Parameter.
So schauts bei mir heute aus :
audio_output {
        type            "alsa"
        name            "My ALSA Device"
        device          "hw:0,0"        # optional
        mixer_control   "Line"          # optional
}


Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Tobias

Hi Wzut,
das hier hat geholfen:mixer_type                      "software"

Ich hab nochwas: Im Log habe ich solche Fehlermeldungen:2017.01.03 13:47:21 2: MPD, error saving EAV.xml : No such file or directory
2017.01.03 13:47:22 2: MPD, error saving image _3.png :
2017.01.03 13:47:25 2: MPD, error saving EAV.xml : No such file or directory
2017.01.03 13:47:26 2: MPD, error saving image _3.png :
2017.01.03 13:48:01 3: MPD, idle error -> socket error
2017.01.03 13:48:10 2: MPD, error saving EAV%20%2d%20Erste%20Allgemeine%20Verunsicherung.xml : No such file or directory


Sagt dir das was?
EAV ist gerade Inhalt meiner Playliste. (Artist: EAV - Erste Allgemeine Verunsicherung)
Diese liegt im konfigurierten Playlist Verzeichnis. Die darin referenzierten mp3 Dateien selbst liegen außerhalb über Symlinks im Music Verzeichnis.
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Wzut

Du hast das attr image_size auf 3 gesetzt , damit werden nun Infos von Last.fm geholt.
Sollen diese jedesmal neu geholt werden oder local abgespeichert werden ?
Das wird mit dem attr cache festgelegt. Wie hast du cache definiert ? Default ist lfm.
Damit legt fhem beim Neustart das Verzeichnis lfm unterhalb von www an.
2017.01.03 13:47:21 2: MPD, error saving EAV.xml : No such file or directory
2017.01.03 13:47:22 2: MPD, error saving image _3.png :

No such file or directory = Die XML Datei von Last.fm konnte nicht im cache Dir gespeichert werden. Entweder weil das Verzeichnis gar nicht vorhanden ist oder aber dem fhem User die nötigen Schreibrechte fehlen.
Abhilfe attr cache auf lfm setzen, nachschauen ob er fhem User lfm unter www erzeugen konnte. Wenn nein von Hand anlegen. Oder attr cache im laufenden Betrieb löschen, dann arbeitet der Doenload von Last.fm ohne zwischenspeichern.
error saving image _3.png = Diese Meldung sollte so schon gar nicht auftauchen, denn da fehlt der Intereptenname EAV, richtig wäre demnach EAV_3.png. Ist aber eine Folge der ersten Meldung und kann ich bei mir testen.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Tobias

#380
Stimmt, ich habe "lfm" als cache deklariert, aber das VErzeichnis wird nicht angelegt, fhem hat volle rechte. Ich lösche das Attr mal. LEider ist image_size ohne Beschreibung in der commandref, daher wusste ich nicht was -1,0,1,2,3 macht....

Nochwas bzgl deiner Anpassungen.
Ich lehne mich mit meinem MediaList Modul an das gleicvhnamige Medialist Widget von setstate an und übergebe in das Zieldevice (hier den MPD) das Reading "playlist_json" mit dem passenden Inhalt zb. [{"Album":"The Grätest Hitz","Time":255,"Cover":"https://192.168.10.30/music/Party/EAV_Series/EAV_-_Graetest_Hitz/eav_-_the_graumltest_hitzcover.jpg","File":"/media/music/Party/EAV_Series/EAV_-_Graetest_Hitz/01_-_Kuess_die_Hand_schoene_Frau.mp3","Artist":"EAV - Erste Allgemeine Verunsicherung","Title":"Küss die Hand schöne Frau"},{"Album":"The Grätest Hitz","Time":220,"Cover":"https://192.168.10.30/music/Party/EAV_Series/EAV_-_Graetest_Hitz/eav_-_the_graumltest_hitzcover.jpg","File":"/media/music/Party/EAV_Series/EAV_-_Graetest_Hitz/02_-_Ba-Ba_Bankueberfall.mp3","Artist":"EAV - Erste Allgemeine Verunsicherung","Title":"Ba-Ba Banküberfall"},{"Album":"The Grätest Hitz","Time":247,"Cover":"https://192.168.10.30/music/Party/EAV_Series/EAV_-_Graetest_Hitz/eav_-_the_graumltest_hitzcover.jpg","File":"/media/music/Party/EAV_Series/EAV_-_Graetest_Hitz/03_-_Samurai.mp3","Artist":"EAV - Erste Allgemeine Verunsicherung","Title":"Samurai"},{"Album":"The Grätest Hitz","Time":280,"Cover":"https://192.168.10.30/music/Party/EAV_Series/EAV_-_Graetest_Hitz/eav_-_the_graumltest_hitzcover.jpg","File":"/media/music/Party/EAV_Series/EAV_-_Graetest_Hitz/04_-_An_der_Copacabana.mp3","Artist":"EAV - Erste Allgemeine Verunsicherung","Title":"An der Copacabana"},{"Album":"The Grätest Hitz","Time":217,"Cover":"https://192.168.10.30/music/Party/EAV_Series/EAV_-_Graetest_Hitz/eav_-_the_graumltest_hitzcover.jpg","File":"/media/music/Party/EAV_Series/EAV_-_Graetest_Hitz/05_-_Maerchenprinz.mp3","Artist":"EAV - Erste Allgemeine Verunsicherung","Title":"Märchenprinz"},{"Album":"The Grätest Hitz","Time":228,"Cover":"https://192.168.10.30/music/Party/EAV_Series/EAV_-_Graetest_Hitz/eav_-_the_graumltest_hitzcover.jpg","File":"/media/music/Party/EAV_Series/EAV_-_Graetest_Hitz/06_-_Afrika_-_ist_der_Massa_gut_bei_Kassa.mp3","Artist":"EAV - Erste Allgemeine Verunsicherung","Title":"Afrika - ist der Massa gut bei Kassa"},{"Album":"The Grätest Hitz","Time":249,"Cover":"https://192.168.10.30/music/Party/EAV_Series/EAV_-_Graetest_Hitz/eav_-_the_graumltest_hitzcover.jpg","File":"/media/music/Party/EAV_Series/EAV_-_Graetest_Hitz/07_-_300_PS_(Auto...)_-_Live.mp3","Artist":"EAV - Erste Allgemeine Verunsicherung","Title":"300 PS (Auto...) - Live"},{"Album":"The Grätest Hitz","Time":264,"Cover":"https://192.168.10.30/music/Party/EAV_Series/EAV_-_Graetest_Hitz/eav_-_the_graumltest_hitzcover.jpg","File":"/media/music/Party/EAV_Series/EAV_-_Graetest_Hitz/08_-_Fata_Morgana.mp3","Artist":"EAV - Erste Allgemeine Verunsicherung","Title":"Fata Morgana"},{"Album":"The Grätest Hitz","Time":243,"Cover":"https://192.168.10.30/music/Party/EAV_Series/EAV_-_Graetest_Hitz/eav_-_the_graumltest_hitzcover.jpg","File":"/media/music/Party/EAV_Series/EAV_-_Graetest_Hitz/09_-_Ding_-_Dong.mp3","Artist":"EAV - Erste Allgemeine Verunsicherung","Title":"Ding - Dong"},{"Album":"The Grätest Hitz","Time":223,"Cover":"https://192.168.10.30/music/Party/EAV_Series/EAV_-_Graetest_Hitz/eav_-_the_graumltest_hitzcover.jpg","File":"/media/music/Party/EAV_Series/EAV_-_Graetest_Hitz/10_-_Go_Karli_Go.mp3","Artist":"EAV - Erste Allgemeine Verunsicherung","Title":"Go Karli Go"},{"Album":"The Grätest Hitz","Time":213,"Cover":"https://192.168.10.30/music/Party/EAV_Series/EAV_-_Graetest_Hitz/eav_-_the_graumltest_hitzcover.jpg","File":"/media/music/Party/EAV_Series/EAV_-_Graetest_Hitz/11_-_Heisse_Naechte_(in_Palermo).mp3","Artist":"EAV - Erste Allgemeine Verunsicherung","Title":"Heisse Nächte (in Palermo)"},{"Album":"The Grätest Hitz","Time":249,"Cover":"https://192.168.10.30/music/Party/EAV_Series/EAV_-_Graetest_Hitz/eav_-_the_graumltest_hitzcover.jpg","File":"/media/music/Party/EAV_Series/EAV_-_Graetest_Hitz/12_-_Burli.mp3","Artist":"EAV - Erste Allgemeine Verunsicherung","Title":"Burli"},{"Album":"The Grätest Hitz","Time":234,"Cover":"https://192.168.10.30/music/Party/EAV_Series/EAV_-_Graetest_Hitz/eav_-_the_graumltest_hitzcover.jpg","File":"/media/music/Party/EAV_Series/EAV_-_Graetest_Hitz/13_-_Jambo.mp3","Artist":"EAV - Erste Allgemeine Verunsicherung","Title":"Jambo"},{"Album":"The Grätest Hitz","Time":239,"Cover":"https://192.168.10.30/music/Party/EAV_Series/EAV_-_Graetest_Hitz/eav_-_the_graumltest_hitzcover.jpg","File":"/media/music/Party/EAV_Series/EAV_-_Graetest_Hitz/14_-_Flugzeug_(Liebste_mein).mp3","Artist":"EAV - Erste Allgemeine Verunsicherung","Title":"Flugzeug (Liebste mein)"},{"Album":"The Grätest Hitz","Time":232,"Cover":"https://192.168.10.30/music/Party/EAV_Series/EAV_-_Graetest_Hitz/eav_-_the_graumltest_hitzcover.jpg","File":"/media/music/Party/EAV_Series/EAV_-_Graetest_Hitz/15_-_Einmal_moechte_ich_gern_boese_sein.mp3","Artist":"EAV - Erste Allgemeine Verunsicherung","Title":"Einmal möchte ich gern böse sein"},{"Album":"The Grätest Hitz","Time":222,"Cover":"https://192.168.10.30/music/Party/EAV_Series/EAV_-_Graetest_Hitz/eav_-_the_graumltest_hitzcover.jpg","File":"/media/music/Party/EAV_Series/EAV_-_Graetest_Hitz/16_-_Morgen_....mp3","Artist":"EAV - Erste Allgemeine Verunsicherung","Title":"Morgen ..."}]

Hier liegt schon ein ermitteltes Cover pro mp3 vor. Es wäre also von Vorteil, wenn du zum gerade abgespielten Track dieses Cover weiterbenutzt. Also nicht versuchst selbst zu ermitteln sondern dann einfach zu übernehmen

Edit: Für mein Sonos habe ich diese MyUtils Function gebaut:
####################################
# wird aufgerufen, wenn sich der Track beim Sonos ändert
# PLAYING, STOPPED, PAUSED_PLAYBACK
####################################
sub Utils_Sonos_OnTrackChanged ($$) {
  my ($device, $event) = @_;
  my $cover;

  #AlbumArtURL setzen -> Reading currentAlbumArtURL
  my $TrackProvider = ReadingsVal($device, "currentTrackProvider", "");
 
  if($TrackProvider eq "Radio") {
    $cover = ReadingsVal($device, "currentAlbumArtURI", "");
    $cover =~ s/\.\//\/fhem\//;
  } else {
    my $track        = ReadingsVal($device, "currentTrack", "");
    my $CurrentCover = ReadingsVal($device, "currentAlbumArtURL", "");
    my $playlist     = ReadingsVal($device, "playlist_json", "");
    my @data         = @{decode_json($playlist)};
    $cover           = $data[$track -1]->{Cover};

    if ($cover =~ m/cd-empty.png/ && $CurrentCover !~ m/empty.jpg/) {
      $cover         = ReadingsVal($device, "currentAlbumArtURI", "");
      $cover =~ s/\.\//\/fhem\//;
    }
  }

  readingsSingleUpdate($defs{$device}, "CurrentCover", $cover, 1);

  return undef;
}

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Wzut

#381
Zitat von: Tobias am 03 Januar 2017, 14:21:32
LEider ist image_size ohne Beschreibung in der commandref, daher wusste ich nicht was -1,0,1,2,3 macht....
Daher hatte ich gebeten https://forum.fhem.de/index.php/topic,18517.msg408923.html#msg408923 zu beachten bis die command.ref endlich nachgezogen ist.
Thema Cover und deinem MediaList Modul : lass uns das bitte in deinem Thread durchgehen, ich denke da werden wir beide noch Änderungen vornehmen müssen. 

Edit : Stichwort command.ref - im deutschen Abschnitt steht schon wesentlich mehr als im englischen.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Tobias

#382
Hi, Wzut

ich in aktuell  noch am weiter testen da ich in TabletUI neben meiner Sonos-Musiksteuerung über dieselbe Oberfläche auch den MPD steuern will
Dabei sind mir mit der aktuellen version noch folgende Sachen aufgefallen:
- Die aktuelle Trackposition wird noch nicht kontinuierlich fortgeschrieben aber ich denke da bist du gerade dran
- ich habe im playlistverzeichnis mehrere *.m3u Dateien, in der playlists werden pro m3u Datei 2 Einträge gelistet, einmal mit extension, einmal ohne. Zum Abspielen funktioniert aber nur die ohne Extensions Eintrag
- Man benötigt wenn möglich ein Reading wonach man unterscheiden kann ob gerade ein Radiostream oder eine lokale Datei abgespielt wird. Im Sonos gibt es dazu "currentTrackProvider", der beinhaltet entweder "Radio" oder "Bibliothek". Dann kan man in TabletUI drauf reagieren. Zb. macht bei einem Radiostream die Buttons "Spulen, Repeat, oder Shuffle" keinen Sinn.
- es gibt kein "mute" ?
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Wzut

Ich fang mal mit dem Antworten von hinten an :
Stichwort Radiostreams : Bin ich Fan von, mein aktiver MPD spielt zur 100% nur Radiostreams und die URLs dazu sind in einer Playliste. Richtig, manche Buttons machen keinen Sinn, aber Vor und Zurück z.B. schon, da ich mich so in der Playliste vor und zurück bewege.
Was man sich aber unbedingt klar machen sollte ist das bei Radiostreams nur ein Bruchteil der Readings vom MPD mit Leben gefüllt wird im Vergleich zu echten mp3 Dateien mit mp3Tags - besondern wichtig wenn wir über Themen reden wie passende Bilder zu den abgespielten Dateien anzeigen ! Bilder der Interpreten kann man z.B. leicht anzeigen wenn man den Interpret ermittelt hat - mp3Tag "Artist", ist bei Streams nicht vorhanden, daher mein Kunstgriff mit dem Attribut titleSplit. Eine ganz andere Nummer wird dann das anzeigen von Cover Bildern. Ohne den richtigen mp3Tag "Album" sehe ich da z.Z. keine Chance. 
Ich unterscheide Radiostreams von Dateien mit Hilfe des Readings "Name", das ist bei Radios mit deren Name gefüllt und bei meinen mp3s bisher immer leer.

Playlisten mit/ohne Extension, habe ich nicht verstanden. Bitte mal ein Beispiel posten.
bzw. ist das überhaupt ein Problem des Moduls oder deines Players ?

Das Reading "Track" wird vom MPD zusammen mit "Artist", "Title" usw. zur Verfügung gestellt und aktualisiert bei Songwechsel. Was sollte hier nicht richtig sein ?
   
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Tobias

#384
kurze schnelle Anwort zumr letzten Frage, habe eben gesehen das es nicht "track" ist (das funktioniert sauber) sondern das Reading "elapsed". Das wird zb nur aktualisiert wenn ich zb. volume ändere. Das muss/sollte aber zb. in ienem zu definierenden INtervall sich ändern. Und ich denke das bist du schon dran. Das ist ja eine Anpassung von setstate gewesen.

bzgl der m3u und Playlisten dopplungen, siehe bild. Der playlist Ordner sieht zb so aus:
790914 -rw-r--r-- 1 fhem dialout   24 Jan  3 16:52 Radio Fritz.m3u
790915 -rw-r--r-- 1 fhem dialout   29 Jan  3 16:52 Radio Salzburg.m3u
790916 -rw-r--r-- 1 fhem dialout  133 Jan  3 16:52 Radio SAW 90er.m3u
790917 -rw-r--r-- 1 fhem dialout  138 Jan  3 16:52 Radio SAW.m3u
790936 -rw-r--r-- 1 fhem dialout  138 Jan  3 16:52 Radio SAW Neuheiten.m3u
790937 -rw-r--r-- 1 fhem dialout  162 Jan  3 16:52 Sputnik.m3u


bzgl dem "currentTrackProvider": wäre es dann nicht ein Leichtes für dich dieses Reading bereitzustellen? Macht es in TabletUI um einiges einfacher

Edit: Ich habe es jetzt auch hinbekommen mehrere Instanzen vom MPD zu erstennen und in FHEM einzubinden. Jetzt kann ich unterschiedlichen Räumen auch unterschiedliche Musik unabhängig und zeitgleich voneinander laufen :)
Hier gab es den wichtigen Hinweis: https://wiki.archlinux.org/index.php/Music_Player_Daemon#Multi-mpd_setup
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Wzut

Wenn du die Version benutzt die ich gestern Abend hochgeladen habe :
attr <name> waits ist dein Freund :) Es steuert einen internen Timer zur Überwachung und im Zustand play auch das aktualisieren von elapsed. ( steht z.Z. bei mir auf 10 )

Deine doppelten Playlisten kann ich nicht nachstellen.
Setz doch bitte mal in der Webconsole "set <name> mpdCMD lsinfo" ab (oder direkt via telnet lsinfo) und schau dir den Output am Ende an, stehen da deine Listen auch doppelt ?
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Tobias

#386
ICh habe diese Version: 73_MPD.pm                             12949 2017-01-03 20:40:48Z Wzut
Ich habe das Attr "waits" auf 5 gesetzt (Update alle 5 sekunden??)
Aber das Reading "elapsed" wird nicht aktualisiert....

bzgl "lsinfo" sieht es so aus, scheint im MPD zu liegen??
playlist: MPD_DG.m3u
playlist: Sputnik.m3u
playlist: Radio SAW.m3u
playlist: Radio SAW Neuheiten.m3u
playlist: Bayern 3.m3u
playlist: Radio Salzburg.m3u
playlist: FFH Weihnachtsradio.m3u
playlist: Eins live.m3u
playlist: MPD.m3u
playlist: FFH Top 40.m3u
playlist: Radio SAW 90er.m3u
playlist: FFH 80er.m3u
playlist: FFH Eurodance.m3u
playlist: Hitradio FFH.m3u
playlist: Radio Fritz.m3u
playlist: Sputnik
Last-Modified: 2017-01-03T15:52:55Z
playlist: Radio SAW
Last-Modified: 2017-01-03T15:52:55Z
playlist: MPD_DG
Last-Modified: 2017-01-04T13:19:01Z
playlist: Radio SAW Neuheiten
Last-Modified: 2017-01-03T15:52:55Z
playlist: Bayern 3
Last-Modified: 2017-01-03T15:52:55Z
playlist: Radio Salzburg
Last-Modified: 2017-01-03T15:52:55Z
playlist: FFH Weihnachtsradio
Last-Modified: 2017-01-03T15:52:55Z
playlist: Eins live
Last-Modified: 2017-01-03T15:52:55Z
playlist: MPD
Last-Modified: 2017-01-04T11:25:07Z
playlist: FFH Top 40
Last-Modified: 2017-01-03T15:52:55Z
playlist: Radio SAW 90er
Last-Modified: 2017-01-03T15:52:55Z
playlist: FFH 80er
Last-Modified: 2017-01-03T15:52:55Z
playlist: FFH Eurodance
Last-Modified: 2017-01-03T15:52:55Z
playlist: Hitradio FFH
Last-Modified: 2017-01-03T15:52:55Z
playlist: Radio Fritz
Last-Modified: 2017-01-03T15:52:55Z


ich hab noch einen Wunsch: "seekcur" mit einzubauen wär super... https://musicpd.org/doc/protocol/playback_commands.html
Habe auch gerade gesehen das es ein "mute" garnicht im MPD gibt. Ev. kannst du es in deinem Modul implementieren? (Volume merken, dann auf 0 setzen, unmute: umgekehrt)
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Wzut

Keine Ahnung warum elapsed bei dir keine Events erzeugt, must mal deinen event-* Attribute checken.

if (($hash->{READINGS}{"presence"}{VAL} eq "present") && ($hash->{STATE} eq "play"))
    {
     # Wichtig um das Readings elapsed aktuell zu halten (TabletUI)
     mpd_cmd($hash, "status");

seekcur schreibe ich auf die ToDo da es ein echtes MPD Commando ist.

mute - ja aber unmute .... brrr Vorschlag :
set MPD mute 0 bzw. set MPD mute 1
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Markus Bloch

Zitat von: Wzut am 04 Januar 2017, 16:31:39
set MPD mute 0 bzw. set MPD mute 1

Schau mal hier: https://wiki.fhem.de/wiki/DevelopmentGuidelinesAV#Kommandos

Wäre cool, wenn du diese Syntax ebenfalls verwenden könntest für den Mute-Befehl. (on/off/toggle).

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Tobias

das mit unmute, das war nur ein beispiel.
mute [on|off|toggle] passt schon

Man sollte nicht $hash->{STATE} benutzen. Das kann auch überschrieben werden. Besser das Reading "state" benutzen
IOch benutze dafür immer in meinen Modulen ReadingsVal (analog AttrVal) anstatt direkt auf dem %hash herumzuhühnern...
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter