Autor Thema: Modul für MPD  (Gelesen 196869 mal)

Offline Loctite

  • Jr. Member
  • **
  • Beiträge: 62
Antw:Modul für MPD
« Antwort #645 am: 14 April 2021, 16:53:55 »
Habe den Standrad Raspberry Pi3 ohne zusätzliche Hardware.

pi@raspberrypi:~ $ cat /proc/asound/cards
 0 [Headphones     ]: bcm2835_headphonbcm2835 Headphones - bcm2835 Headphones
                      bcm2835 Headphones

EDIT: Hm, jetzt höre ich gar nichts mehr. Ich habe das device entfernt und mit "define myMPD MPD" neu angelegt.  :o
EDIT2: Ok, habe in der "mpd.conf" unter audio_output nun
device          "hw:0,0" stehen.
Warum auch immer musste ich das auf 1,0 ändern weil ich sonst gar nichts gehört habe.
Nun höre ich wieder was aber wieder fehlen einige Sekunden am Ende.

« Letzte Änderung: 14 April 2021, 17:05:00 von Loctite »

Online Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7967
Antw:Modul für MPD
« Antwort #646 am: 14 April 2021, 17:42:04 »
Kann nur meine letzte Frage wiederholen:
Wieviel Audio-Cards hast Du verbaut?
cat /proc/asound/cards
- 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

Offline Loctite

  • Jr. Member
  • **
  • Beiträge: 62
Antw:Modul für MPD
« Antwort #647 am: 14 April 2021, 18:50:46 »
Hab ich doch in dem codeblock gepostet  ???

0 [Headphones     ]: bcm2835_headphonbcm2835 Headphones - bcm2835 Headphones
                      bcm2835 Headphones

Das ist die Ausgabe von "cat /proc/asound/cards".

Ich glaube irgend was ist da schief gelaufen. Ich hatte eine Anleitung für die MPD Installation befolgt, die aber für eine ältere Raspbian Version war.
Damals hatte es danach funktioniert.

sudo apt install mpd mpc alsa-utils
sudo modprobe snd_bcm2835
sudo amixer cset numid=3 1

Der letzte Befehl hat gar nicht funktioniert.

Danach sudo nano /etc/mpd.confund entsprechend angepasst.
Normale Audioausgabe mit z.B. VLC Player funktioniert über Klinke.

Ich glaube ich fange noch mal von vorn an...

Online Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7967
Antw:Modul für MPD
« Antwort #648 am: 14 April 2021, 20:32:29 »
VLC PlayerGrafische Oberfläche ...
- 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

Offline Loctite

  • Jr. Member
  • **
  • Beiträge: 62
Antw:Modul für MPD
« Antwort #649 am: 18 April 2021, 09:40:34 »
Das weiß ich, sollte nur eine Info sein.
Würden hier auch Probleme bestehen, könnte es ja vielleicht ein ganz anderes Problem sein.
Egal, habe ein laufendes System mit Jessy, dabei belasse ich es erst mal.

Online davidgross

  • New Member
  • *
  • Beiträge: 9
Antw:Modul für MPD
« Antwort #650 am: 30 Mai 2021, 18:33:24 »
Hi Leut's,

einmal einen Tipp an:
Hab ich doch in dem codeblock gepostet  ???

0 [Headphones     ]: bcm2835_headphonbcm2835 Headphones - bcm2835 Headphones
                      bcm2835 Headphones

Das ist die Ausgabe von "cat /proc/asound/cards".

Ich glaube irgend was ist da schief gelaufen. Ich hatte eine Anleitung für die MPD Installation befolgt, die aber für eine ältere Raspbian Version war.
Damals hatte es danach funktioniert.

sudo apt install mpd mpc alsa-utils
sudo modprobe snd_bcm2835
sudo amixer cset numid=3 1

Der letzte Befehl hat gar nicht funktioniert.

Danach sudo nano /etc/mpd.confund entsprechend angepasst.
Normale Audioausgabe mit z.B. VLC Player funktioniert über Klinke.

Ich glaube ich fange noch mal von vorn an...
Ich bin einen anderen Weg gegangen:
sudo nano /proc/asound/modules --> gibt die Audio Karten bekannt.
 0 snd_bcm2835
 1 snd_bcm2835
 2 snd_usb_audio

Das merken! und hier eintragen:
sudo nano /etc/modprobe.d/sound.blacklist.conf
    blacklist snd_bcm2835

Am besten noch:
sudo nano /usr/share/alsa/alsa.conf
    defaults.ctl.card 0 -->1
    defaults.pcm.card 0 -->1


So, jetzt zu meinem Problem:
ich habe vor ein paar Tagen das MPD modul bei mir in Betrieb genommen. Eigentlich läuft es super. Nur wenn man gaaanz große Playlisten von mehren hundert Titeln lädt, hängt sich FHEM nahezu komplett auf. Da hilft dann nur noch ein Neustart von FHEM über die Konsole.
Ich habe bereits mit den Parametern wait und timeout gespielt und mal im Code ein wenig rumgestochert. Komme aber nicht so richtig weiter.

sonnige Tage!

Offline presskopf

  • Full Member
  • ***
  • Beiträge: 109
Antw:Modul für MPD
« Antwort #651 am: 01 Januar 2022, 21:07:50 »
Das MPD Modul listet nur die vorhanden Playlisten, nicht deren Inhalt !
Es ist auch nicht Aufgabe des Moduls Playlisten zu verwalten, dafür gibt es bereits unzählige und bessere Werkzeuge.
Bei deinem Beispiel der Radiostationen kann man daher zwei Wege gehen (ich nutze beide) :
a. alles am Stück (wie in deinem Beispiel) dann kann man mit previous & next in der aktuellen Liste hoch und runter gehen
oder
b. Für jeden Radiostation eine eigene Liste und diese Liste gezielt anwählen.


Huiuiui, ist diese Antwort ist zwar schon eine ganze Weile her, aber ich greif's trotzdem nochmal auf und hoffe es ist genehm.

Genau das habe ich nämlich auch gesucht. Es betrifft eigentlich nur Radiostreams.
Ich habe mir Playlisten nach Genre erstellt: Klassik, Metal, Schlager.  8)

Diese Playlisten findet der MPD auch prima mit get <boxenluder> playlists
Das Navigieren in den Playlists geht nur mit previous und next. Und genau das finde ich unbefriedigend, weil die Streams im MPD-Dropdown der Titel nicht auftauchen
Vielleicht stehe ich nur auf dem Schlauch, aber wie könnte man denn dieses oder ein anderes Dropdown füllen; denke mittelfristig an FTUI3?
Oder bleibt's mangel Alternative bei Deinem (Wzut) Voschlag...?

Online davidgross

  • New Member
  • *
  • Beiträge: 9
Antw:Modul für MPD
« Antwort #652 am: 01 Januar 2022, 22:29:04 »
Hi,

ich habe MPD über mehrere Wege eingebunden einmal als Über die remotecontrol und eine doif-Auswahlliste welches dann den Stream, oder die Playlist an MPD sendet.
Die Fernbedienung war zuerst da, daher sendet das Doif and die Fernbedienung. Hiermit braucht man kaum noch die MPD-Oberfläche.
Zudem ist am Raspi auch noch ein IR-Empfänger. Das Ganze kann ich also auch über eine IR-Ferbendienung ansprechen.
Für ein Tablett auf dem Tablet-UI äuft habe ich auch eine Oberfläche mit Select Button.
defmod AV_MPD_ntf notify AV_MPD_rc {\
  fhem("setreading AV_MPD_ntf event ".$EVENT);;\
  my $command;; my $feedback = 0;;my $val;;\
  \
  if (substr($EVENT,0,length("load") ) eq "load"){\
    $command = $EVENT;;\
    $feedback = `mpc stop`;;\
    $feedback = `mpc clear`;;\
    $feedback = `mpc $command`;;\
    $feedback = `mpc shuffle`;; \
    $feedback = `mpc play`;; \
    $feedback = `mpc crossfade 10`;;\
    $feedback = `mpc consume on`;; \
    $command = "mpc ".$command;;\
  }\
  elsif (substr($EVENT,0,length("add") ) eq "add"){\
    $command = substr($EVENT,length("add")+1, length($EVENT));;\
    $feedback = `mpc clear`;;\
    $val = "add https://" .$command ;; $feedback = `mpc $val`;;\
    $val = "add http://" .$command ;; $feedback = `mpc $val`;;\
$feedback = `mpc consume off`;;\
    $feedback = `mpc play`;; \
    $command = "mpc ".$val;;\
  }\
  else{\
    $command = "mpc ".$EVENT;;\
    $feedback = `$command &`;;\
  } \
  fhem("setreading AV_MPD_ntf command $command");;\
  fhem("setreading AV_MPD_ntf feedback ".$feedback);;\
  fhem("set mpd_data_at execNow");;\
}\

attr AV_MPD_ntf group MPD-Player
attr AV_MPD_ntf room Fernbedienung

defmod AV_MPD_rc remotecontrol
attr AV_MPD_rc alias MPD.Fernbed
attr AV_MPD_rc group MPD-Player
attr AV_MPD_rc rc_iconpath icons/remotecontrol
attr AV_MPD_rc rc_iconprefix black_btn_
attr AV_MPD_rc room Fernbedienung,Übersicht
attr AV_MPD_rc row00 prev:SKIP_REVERSE, pause:PAUSE, stop:STOP, play:PLAY, next:SKIP_FORWARD
attr AV_MPD_rc row01 load Ballad:Relax,load Party:Party,load Best:DasBeste,load Klassik:Klassik,add stream.ffn.de/ffn-rockt/mp3-192:PLAY,
attr AV_MPD_rc row02 load 70-80er:70er80er,load aktuelles:aktuelles,load Deutsch:Deutsch
attr AV_MPD_rc row03 load Top 100:Top100,load Rock:Rock,load Mix:Mix


defmod MPD_Radio_doif DOIF ( [$SELF:station] )\
  ({\
    fhem "setreading $SELF diag $EVENT";;\
my $val = ReadingsVal("$SELF", "station", 0);;\
    if($val eq "njoy")  {fhem "setreading AV_MPD_rc state add icecast.ndr.de/ndr/njoy/live/mp3/128/stream.mp3" ;;}\
    if($val eq "ndrinfo")  {fhem "setreading AV_MPD_rc state add icecast.ndr.de/ndr/ndrinfo/niedersachsen/mp3/128/stream.mp3" ;;}\
    if($val eq "ffn-gold")  {fhem "setreading AV_MPD_rc state add ffn-de-hz-fal-stream06-cluster01.radiohost.de/ffn-gold_mp3-192" ;;}\
    if($val eq "deluxemusic")  {fhem "setreading AV_MPD_rc state add audiostreams.deluxemusic.tv/disco/mp3-192" ;;}\
\


  })\

attr MPD_Radio_doif alias MPD.Web-Radios
attr MPD_Radio_doif do always
attr MPD_Radio_doif group MPD-Player
attr MPD_Radio_doif icon it_radio
attr MPD_Radio_doif loglevel 6
attr MPD_Radio_doif readingList station
attr MPD_Radio_doif room Fernbedienung,Übersicht
attr MPD_Radio_doif setList station:RadioEins,Love-Radio,njoy,ndrinfo,ndrblue,ndr2,ffn-gold,ffn-rockt,ffn-80er,ffn-90er,ffn-hits,peppermintfm,energybremen,radiobob,mdr-sputnik-black,mdr-sputnik-rock,mdr,dancefm,deluxemusic,kuschellounge,oswchillout
attr MPD_Radio_doif sortby 999999
attr MPD_Radio_doif verbose 0
attr MPD_Radio_doif webCmd station

Ach ja und zum abfragen von MPD nehme ich nicht mehr das Modul sondern ein eigenes at:
defmod mpd_data_at at +*00:01:00 {\
fhem("deletereading mpd_data_at  diag_.*");;\
my $raw = `mpc`;; my @valrows;; my @vals;; my $value;;\
fhem("setreading mpd_data_at diag_raw $raw");;\
@valrows = split("\n", $raw);;\
\
my $rowcount = scalar(@valrows);;\
fhem("setreading mpd_data_at diag_rowcount ".$rowcount);;\
\
#row0\
if ($rowcount > 2){\
  fhem("setreading mpd_data_at title ".$valrows[0]);;\
}\
\
#row1\
if ($rowcount > 2){\
  @vals = split (' ', $valrows[1]);;\
  $value = substr($vals[0], 1, length ($vals[0]) -2 );; fhem("setreading mpd_data_at status ".$value);;\
  fhem("setreading mpd_data_at number ".$vals[1]);;\
  fhem("setreading mpd_data_at time ".$vals[2]);;\
  $value = substr($vals[3], 1, length ($vals[3]) -2 );;fhem("setreading mpd_data_at timepercent ".$value);;\
}\
\
#row2 or row1\
  if ($rowcount eq 1){ @vals = split ('  ', $valrows[0]);;}\
  if ($rowcount > 2 ){ @vals = split ('  ', $valrows[2]);;}\
  my @value;;\
  @value = split (':', $vals[0]);; fhem("setreading mpd_data_at volume  ".$value[1]);;\
  @value = split (':', $vals[1]);; fhem("setreading mpd_data_at repeat  ".$value[1]);;\
  @value = split (':', $vals[2]);; fhem("setreading mpd_data_at random  ".$value[1]);;\
  @value = split (':', $vals[3]);; fhem("setreading mpd_data_at single  ".$value[1]);;\
  @value = split (':', $vals[4]);; fhem("setreading mpd_data_at consume ".$value[1]);;\
}
attr mpd_data_at event-on-change-reading .*
attr mpd_data_at group MPD-Player
attr mpd_data_at room Fernbedienung
attr mpd_data_at verbose 0
« Letzte Änderung: 01 Januar 2022, 22:33:47 von davidgross »