Ankündigung

Einklappen
Keine Ankündigung bisher.

mpd perl script + Fragen

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

    [WireGate-Plugin] mpd perl script + Fragen

    Hallo,

    möchte hier mein script vorstellen, dass mir den mpd per KNX Adresse resettet, aktiviert, standardlautstärke einstellt und bei bedarf auch ausschaltet.

    Es ist noch nicht fertig!!

    Ich hätte die Lautstärke gerne als "dimmer" am Taster. Hat dazu evtl jemand einen Tipp?

    Weiter hätte ich gerne meine Ansage darüber realisiert, aber seit meinem unfreiwilligen "Downgrade" auf Lenny stable geht das Script nicht mehr wenn ich folgende Zeile Einfüge:

    Code:
    my $debug = `mpg123 -a $device /tmp/blablabla.mp3`;
    sobald die zeile oder auch in die andere Zeile integriert wird, geht gar nix mehr. Er arbeitet alle Befehle davor ab (mpc volume; und amixer auf standard Volume) aber dann bleibt das Script "hängen".

    Dazu wäre ein kleiner Tipp auch super

    Hier mein Script zum Radio einschalten:

    Code:
    my $volumestep2 = "100%";    # Volume for amixer
    my $volumestepmpc = "20"; # Volumestep for mpc
    my $Kanal = "Front";    # Channel of 7.1 soundcard
    my $device = "pakueche";    # The Name of the alsa Sounddevice (asound.conf)
    my $knx_addr_player2 = '13/1/0';# mpd Player on/off GA
    my $volume_anfang = "40";     # This Volume will be set on start
    my $Port = "6601";        # Port of the mpd Instanz
    my $IP = "192.168.178.33";    # The IP where the mpd Instanz is running
    
    my $Fernseher = '3/0/0';    # Fernseher
    my $cardnum = "1";        # Hardware Number of the Sound card
    my $Speaker = "Speaker,1";    # Name of the output ( My soundcard is defined as following: Speaker,1 Front; Speaker,1 Rear
    my $playlist = "Antenne";    # Name of the saved Playlist
    my $mpdname = "mpd2";        # the name of the mpd instance
    ##########################################################
    
    #################################################################
    # do not change anything below, all config stays above
    #################################################################
    
    # subscribe plugin and call it only when necessary
    $plugin_subscribe{$knx_addr_player2}{$plugname} = 1;
    $plugin_subscribe{$Fernseher}{$plugname} = 1;
    $plugin_info{$plugname.'_cycle'} = 0;
    
    # Radio on/off
    if ($msg{'dst'} eq ($knx_addr_player2))
    {
    if ($msg{'apci'} eq 'A_GroupValue_Write') # change volume
    {
    if ($msg{'value'} == 1) {
        my $debug = `pulseaudio --system` ;
        sleep(2);
        my $debug = `/etc/init.d/$mpdname restart && MPD_PORT=$Port MPD_HOST=$IP mpc clear && MPD_PORT=$Port MPD_HOST=$IP mpc load $playlist && MPD_PORT=$Port MPD_HOST=$IP mpc volume $volume_anfang && amixer -c $cardnum set $Speaker $Kanal $volumestep2 && MPD_HOST=$IP MPD_PORT=$Port mpc play`;
        return "Player 2 läuft";
    }
    
    if ($msg{'value'} == 0) {
        my $debug = `MPD_HOST=$IP MPD_PORT=$Port mpc stop`;
        return "Player 2 aus";
    }
    }
    }
    
    
    
    # Aus wenn Fernseher an
    if ($msg{'dst'} eq ($Fernseher) && ($msg{'apci'} eq 'A_GroupValue_Write') && ($msg{'value'} == 1))    {
         my $debug = `MPD_HOST=$IP MPD_PORT=$Port mpc stop`;
         knx_write( $knx_addr_player2, 0 );
        return "Player 2 aus Fernseher";
        }
    Das ist dass Script um die Lautstärke zu regeln:

    Code:
    # do all configs here:
    my $knx_addr = '13/1/7'; # knx_address for volume up/down
    my $knx_addr_vol = '13/1/8';
    my $volumestep = 5;    # The stepsize for volume
    my $alsa_chanel = 'Software2';  # other possibility: Master
    my $sound_device = "mpdvol2";    # The Name of the alsa Sounddevice (asound.conf)
    my $knx_addr_player2 = '13/1/0';# mpd Player on/off GA
    my $volume_anfang = 70;     # This Volume will be set on start
    my $Port = "6601";        # Port of the mpd Instanz
    my $IP = "192.168.178.33";    # The IP where the mpd Instanz is running
    my $info_wz = '3/1/2';        # Info Switch wz
    ##########################################################
    
    #################################################################
    # do not change anything below, all config stays above
    #################################################################
    
    # subscribe plugin and call it only when necessary
    $plugin_subscribe{$knx_addr}{$plugname} = 1;
    $plugin_info{$plugname.'_cycle'} = 0;
    
    # Volume
    if ($msg{'dst'} eq ($knx_addr))
    {    
    
    if ($msg{'apci'} eq 'A_GroupValue_Write') # change volume
    
    {
    if ($msg{'value'} == 1) {
        my $debug = `MPD_PORT=$Port MPD_HOST=$IP mpc volume +$volumestep`;
        return;
    }
    
    if ($msg{'value'} == 0) {
        my $debug = `MPD_PORT=$Port MPD_HOST=$IP mpc volume -$volumestep`;
        return;
    }
    }
    }
    Gruß

    #2
    - Dimmer: einfach den Taster zyklisch senden lassen und Plugin jedesmal aufrufen lassen.
    - Blockierende Aufrufe wie mpg123 sind in Plugins so schlicht nicht möglich..
    Chris hatte da mal ein Plugin mit Pipe gepostet, sollte sich einfach finden lassen..

    Makki
    EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
    -> Bitte KEINE PNs!

    Kommentar


      #3
      Zitat von makki Beitrag anzeigen
      - Dimmer: einfach den Taster zyklisch senden lassen und Plugin jedesmal aufrufen lassen.
      oha, sollte das so einfach funktionieren? Ich habe mal mit Dimmer-Objekten für Lautstärke herumgespielt, aber das natürlich nicht hinbekommen. Vielleicht lag es daran, dass ich irgendwie ein Start- und Stopp-Telegramm verarbeiten wollte

      Kommentar


        #4
        Hallo,

        ich wollte das gerade auch mal probieren, aber.....

        Wenn ich lauter "dimmen" will bekomme ich einen 4bit wert "$01" auf den Bus leiser ist "$09". Theoretisch DPT3? (Das sind die Telegrammwiederholungen des Tasters)
        Wie verarbeite ich den im Perl Script, ich hab von msg'repeated' über msg'value' und msg'data' alle kombinationen ausprobiert ( == und eq; als wert 0 und 1 oder $01 und $09) leider hat das script auf nichts reagiert.

        Hier mein Volume Testscript. Hier mit "Jalousie" Parametisierung des Tasters. (lang ist an/aus; kurz ist volume step)

        Code:
        my $knx_addr = '13/1/11'; # knx_address for volume up/down
        my $volumestep = 5;    # The stepsize for volume
        my $knx_addr_player2 = '13/1/9';# mpd Player on/off GA
        my $volume_anfang = 70;     # This Volume will be set on start
        my $Port = "6600";        # Port of the mpd Instanz
        my $IP = "192.168.178.33";    # The IP where the mpd Instanz is running
        my $info_wz = '3/1/1';        # Info Switch wz
        
        
        $plugin_subscribe{$knx_addr}{$plugname} = 1;
        $plugin_info{$plugname.'_cycle'} = 0;
        
        # Volume
        if ($msg{'dst'} eq ($knx_addr))
        {    
        
        if ($msg{'apci'} eq 'A_GroupValue_Write') # change volume
        
        {
        if ($msg{'value'} == 1) {
            my $debug = `MPD_PORT=$Port MPD_HOST=$IP mpc volume -$volumestep`;
            return;
        }
        
        if ($msg{'value'} == 0) {
            my $debug = `MPD_PORT=$Port MPD_HOST=$IP mpc volume +$volumestep`;
            return;
        }
        }
        }
        Kannst du mir einen Tipp geben, wie ich die Werte definieren muss?

        Gruß

        Kommentar


          #5
          Nachdem die GA in der config vermutlich nicht eingetragen ist, steht in $msg{'value'} nichts und in $msg{'data'} der rohe Hexwert.

          Also entweder
          if (int($msg{'data'}) == 1) {
          ..

          oder als String mit Data vergleichen:
          if ($msg{'data'} eq "01") {
          ..


          @Chris: das kann man eigentlich so oder ähnlich bei allen mir bekannten Tastern irgendwie einstellen..

          Makki
          EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
          -> Bitte KEINE PNs!

          Kommentar


            #6
            Zitat von makki Beitrag anzeigen
            @Chris: das kann man eigentlich so oder ähnlich bei allen mir bekannten Tastern irgendwie einstellen..
            Tja, wenn man daran denkt schon. Ich war aber irgendwie auf die Verarbeitung im WG-Plugin fixiert und habe an das Umparametrisieren der Taster gar nicht gedacht

            Kommentar


              #7
              Hi,

              also das Problem war recht einfach.
              Mein Taster schickt beim hochdimmen ein == 9 auf den Bus
              und beim runter dimmen ein == 1...
              Oh man

              Danke

              Gruß

              Kommentar


                #8
                Hi,
                könntest du evtl das lauffähige Script bereitstellen?
                Möchte gerne das selbe realisieren.

                Gruß

                Kommentar


                  #9
                  Hallo,
                  Das liegt im Repo bzw unter Codeschnipsel.

                  Gruß

                  Kommentar

                  Lädt...
                  X