Ankündigung

Einklappen
Keine Ankündigung bisher.

MPD via MDT Glastaster steuern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    MPD via MDT Glastaster steuern

    Hallo zusammen,

    ich bräuchte einmal ein wenig Unterstützung bei folgendem vorhaben.
    Ich habe eine laufende MPD Instanz, die ich mittlerweile schon per Smartvisu steuern kann.
    Nun möchte ich gerne die Funktion Play, Stop und Volume mittels eines MDT-Glastaster steuern können.

    In der ETS habe ich folgende GA´s angelegt:

    ETS_MPD.jpg

    Meine Config sieht folgendermaßen aus:

    Code:
            [[[mpd]]]
                name = Musik
                type = str
                mpd_host = 127.0.0.1
                mpd_port = 6600
                #sv_widget = {{ multimedia.music('mpd', 'item.play', 'item.stop', '', 'item.next', '', 'item.volume', '', '', '', '', '') }}
                sv_widget = {% import "multimedia.html" as multimedia %}{{ multimedia.music(item, 'item.play', 'item.stop', '', '', '', 'item.volume', '', 'item.title', 'item.artist', '', '') }}{{ basic.button('item.einslive', 'item.einslive', '1Live', '', 1, '') }}{{ basic.button('item.wdr2', 'item.wdr2', 'Wdr2', '', 1, '') }}
                [[[[state]]]]
                    type = str
                    mpd_listen = state
                    mpd_send = value  # sends the item value. e.g. sh.dev.mpd.state('play') will send 'play'
                [[[[title]]]]
                    type = str
                    mpd_listen = title
                    enforce_updates = yes
                [[[[artist]]]]
                    type = str
                    mpd_listen = artist
                    enforce_updates = yes
                [[[[volume]]]]
                    type = num
                    knx_dpt = 5
                    knx_send = 2/5/4
                    enforce_updates = yes
                    mpd_listen = volume
                    mpd_send = volume
                [[[[play]]]]  # any call of dev.mpd.play will send 'play'
                    type = bool
                    knx_dpt = 1
                    knx_listen = 2/5/1
                    knx_send = 2/5/0
                    mpd_send = play
                    enforce_updates = yes
                [[[[stop]]]]  # any call of dev.mpd.play will send 'play'
                    type = bool
                    knx_dpt = 1
                    knx_listen = 2/5/3
                    knx_send = 2/5/2
                    mpd_send = stop
                    enforce_updates = yes
                [[[[einslive]]]]
                    name = einslive
                    type = bool
                    enforce_updates = yes
                    mpd_file = "http://www.wdr.de/wdrlive/media/einslive.m3u"
                    visu = yes
                [[[[wdr2]]]]
                    name = Wdr2
                    type = bool
                    enforce_updates = yes
                    mpd_file = "http://www.wdr.de/wdrlive/media/wdr2.m3u"
                    visu = yes

    Was mir aktuell noch unklar ist, kann ich dieses vorhaben ohne zusätzliche Logik umsetzen evtl. mit den knx_listen angaben?

    Der Taster schaltet die GA für „play“ schon auf 0 oder 1, jedoch scheint MPD davon nichts mitzubekommen.

    Für die Lautstärke habe ich den Taster als Dimmer konfiguriert.
    Aber auch hier scheint das item nichts von der Betätigung mitzubekommen.

    Stehe ein wenig auf dem Schlauch und es wäre klasse, wenn mir jemand die richtigen Ansätze nennen könnte.

    Netten Gruß
    Daniel

    #2
    Hallo Daniel,

    ich habe für jede Funktion des MPD ein entsprechendes Item angelegt. Dabei habe ich aber auf eine Zuordnung zum KNX verzichtet. Das ganze sieht bei mir so aus:
    Code:
    # Auszug aus items.conf
    [DG]
        [[Bathroom]]
            [[[Multimedia]]]
                [[[[MPD]]]]
                    type = str
                    mpd_host = 192.168.178.36
                    mpd_port = 6600
                    [[[[[Control]]]]]
                        [[[[[[State]]]]]]
                            type = str
                            visu_acl = rw
                            mpd_listen = state
                            mpd_send = value
                            enforce_updates = yes
                        [[[[[[Play]]]]]]
                            type = bool
                            visu_acl = rw
                            mpd_listen = play
                            mpd_send = play
                            enforce_updates = yes
                        [[[[[[Stop]]]]]]
                            type = bool
                            visu_acl = rw
                            mpd_listen = stop
                            mpd_send = stop
                            enforce_updates = yes
                        [[[[[[Pause]]]]]]
                            type = bool
                            visu_acl = rw
                            mpd_listen = pause
                            mpd_send = pause
                            enforce_updates = yes
                        [[[[[[Volume]]]]]]
                            type = num
                            visu_acl = rw
                            mpd_listen = volume
                            mpd_send = volume
                            enforce_updates = yes
                        [[[[[[Repeat]]]]]]
                            type = bool
                            visu_acl = rw
                            mpd_listen = repeat
                            mpd_send = repeat
                            enforce_updates = yes
                        [[[[[[Random]]]]]]
                            type = bool
                            visu_acl = rw
                            mpd_listen = random
                            mpd_send = random
                            enforce_updates = yes
                    [[[[[Info]]]]]
                        [[[[[[SongNumber]]]]]]
                            type = num
                            visu_acl = rw
                            mpd_listen = song
                            enforce_updates = yes
                        [[[[[[PlaylistLength]]]]]]
                            type = num
                            visu_acl = rw
                            mpd_listen = playlistlength
                            enforce_updates = yes
                        [[[[[[NextSongID]]]]]]
                            type = num
                            visu_acl = rw
                            mpd_listen = nextsongid
                            enforce_updates = yes
                        [[[[[[Title]]]]]]
                            type = str
                            visu_acl = rw
                            mpd_listen = title
                            enforce_updates = yes
                        [[[[[[Name]]]]]]
                            type = str
                            visu_acl = rw
                            mpd_listen = name
                            enforce_updates = yes
                        [[[[[[Album]]]]]]
                            type = str
                            visu_acl = rw
                            mpd_listen = album
                            enforce_updates = yes
                        [[[[[[Artist]]]]]]
                            type = str
                            visu_acl = rw
                            mpd_listen = artist
                            enforce_updates = yes
    Jetzt habe ich zum Beispiel im Bad einen Präsenzmelder, welcher mir beim Betreten die Musik einschalten soll. Dessen Switch-Item triggert dann mittels "eval" das entsprechende MPD-Item.
    Code:
    # Auszug aus items.conf
                                [[[[[[[[Switch]]]]]]]]
                                    type = bool
                                    visu_acl = rw
                                    knx_dpt = 1
                                    knx_cache = 1/3/0
                                    knx_send = 1/3/0
                                    eval = sh.DG.Bathroom.Multimedia.MPD.Control.Play(1) if value else sh.DG.Bathroom.Multimedia.MPD.Control.Stop(1)
                                    BathroomTrigger = 1
    Die etwas kryptisch anmutende eval Anweisung sorgt dafür, dass bei einer '1' des Präsenzmelders das entsprechende Play-Item und bei einer '0' des Präsenzmelders das entsprechende Stop-Item getriggert wird. Damit erreiche ich das Einschalten der Musik beim Betreten des Raumes und ein Ausschalten der Musik bei Abwesenheit. Und das ganze ohne Logik. Auf diese Art und Weise lässt sich das sicherlich auch mit dem Glastaster realisieren.

    Das ganze steht mir übrigens auch noch bevor. Ich möchte nämlich via MPD Glastaster II den MPD steuern (Playlisten, Lautstärke, Titelanzeige usw.).

    Gruß Jörg

    Kommentar

    Lädt...
    X