Modul für MPD

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

Vorheriges Thema - Nächstes Thema

Loctite

#645
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.


Wernieman

Kann nur meine letzte Frage wiederholen:
Zitat von: Wernieman am 11 April 2021, 16:10:01
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

Loctite

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.conf
und entsprechend angepasst.
Normale Audioausgabe mit z.B. VLC Player funktioniert über Klinke.

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

Wernieman

VLC Player
Grafische 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

Loctite

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.

davidgross

Hi Leut's,

einmal einen Tipp an:
Zitat von: Loctite 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.conf
und 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!

presskopf

Zitat von: Wzut am 16 Oktober 2018, 09:49:12
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...?

davidgross

#652
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

Medel

Hallo,

ich habe versucht ein MPD device anzulegen. Das Anlegen klappt mit
define myMPD MPD 192.168.1.31 6600.
Mopidy-MPD ist auch über diese Schnittstelle erreichbar. Der momentan spielende Sender und Titel wird angezeigt. Leider friert Fhem nach dem anlegen ein.
Ich habe das device auch schon in der fehm.cfg angelegt und auch das einlesen diverser Listen deaktiviert
define myMPD MPD 192.168.1.31 6600
attr myMPD loadMusic 0
attr myMPD loadPlaylists 0
attr myMPD verbose 5

dann bleibt Fhem beim starten hängen ohne Eintrag im logfile oder syslog
hat jemand eine idee woran das liegt?

Wzut

Zitat von: Medel am 05 Februar 2022, 19:10:57
Mopidy-MPD ist auch über diese Schnittstelle erreichbar

Tipp : mal die command.ref des Moduls lesen und das Attribut player setzen !

Zitatplayer mpd|mopidy|forked-daapd (default mpd) => welcher Player wird gesteuert
ACHTUNG : Mopidy unterstützt nicht alle Kommandos des echten MPD ! (siehe Mopidy Dokumentation)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Medel

Danke das war die Lösung, hatte die Doku referenz mehrfach durchgelesen und dabei aber immer Player übersehen

borney

Hallo, ich nutze das mpd-Modul schon länger auf einem raspi2w, den ich bei Bedarf mit dem Verstärker einschalte. Leider startet der Sender in der Radio Playlist nicht automatisch beim Einschalten. Wie kann ich nach dem Einschalten direkt Radio hören?

Wernieman

#657
Mir fallen auf die schnelle 4 von vielen Möglichkeiten ein:

per FHEM: Notify auf Presents und 30sec später mpd anschalten ..
auf den Rechner: per cron nach start per script den play befehl setzen
auf dem Rechner im systemd-start: per pre-exec (o.Ä.) den play Befehl setzen
per FHEM: nach dem Einschaltbefehl des PIs (doch per FHEM?) Xsec später den mpd play Befehl senden. X selber ermitteln aus der Bootzeit + Reserve (Finde ich von alle 4 aber persönlich als Blödeste Möglichkeit)

Noch Fragen?  ;)

Edit
von 2 auf 4 Möglichkeiten Erweitert
- 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

borney

Hallo Wernieman,

danke für deine Vorschläge! Da ich auf dem Raspi, der an der Hifi-Anlage angeschlossen ist, direkt die Play Funktion schalten will, ist wohl die cron Lösung geeignet. Leider weiss ich zu wenig über Linux. Kannst du mir ein Beispiel nennen?


Wernieman

Du schaltest doch per FHEM den PI an, oder?
Wie startest Du dann auf dem Pi den MPD?
- 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