confirm / mopidy-pummeluff

Pummeluff is a Mopidy extension which allows you to control Mopidy via RFID cards
MIT License
15 stars 15 forks source link

Mopidy Pummeluff

Pummeluff is a Mopidy <http://www.mopidy.com/>_ extension which allows you to control Mopidy via RFID tags. It is as simple as that:

Thus, the Mopidy Pummeluff extension adds the following features to Mopidy:

There are several actions included, such as replacing the tracklist with a desired URI, setting the volume to a specific level or controlling the playback state.

Hardware

Requirements

To get the whole thing working, you need at least the following hardware:

Optionally you can also add two buttons to the RPi, which can be used for power & playback control:

Pummeluff also supports a status LED, which lights up when Pummeluff (i.e. Mopidy) is running. You can go with a separate LED, just make sure it can handle 3.3V or add a resistor. There are also push buttons with integrated LED's available, for example these 5V momentary push buttons on AliExpress <https://www.aliexpress.com/item/16mm-Metal-brass-Push-Button-Switch-flat-round-illumination-ring-Latching-1NO-1NC-Car-press-button/32676526568.html>_.

.. note::

The project will probably run on other RPi models, but I've only tested it on the ``3B``. The RPi ``3B+`` should also work fine, as the GPIO pins are identical. I don't know about RPi ``1`` or ``2``, but you can give it a shot.

Connecting the RC522 module

Please connect the RC522 RFID module to the RPi as follows:

Please have a look at the Raspberry Pi SPI pinout <https://pinout.xyz/pinout/spi>_ if you want to have a graphical view of the RPi GPIO pins.

.. note::

This connections are only valid for the RPi model ``3B`` and ``3B+``. If you want to use another RPI model, make sure you're using the correct pins.

Connecting the buttons (optional)

To control the RPi, you can optionally connect several buttons as well.
Pummeluff supports the following button interactions:

Please have a look at the default Pummeluff config_ for the default button GPIO pin numbers, respectively the configuration options to change the them.

The buttons must shortcut their correspnding pins against GND (e.g. pin 6).
For example for the power button:

Connecting the status LED (optional)

If you want to have a status LED which is turned on when the RPi / Mopidy is running, you can connect an LED to these pins:

Please have a look at the default Pummeluff config_ for the default LED GPIO pin number, respectively the configuration option to change it.

Installation

Prepare Raspberry Pi

Before you can install and use Mopidy Pummeluff, you need to configure your Raspberry Pi properly.

We want to enable the SPI interface and give the mopidy user access to it. This is required for the communication to the RFID module. Enter this command:

.. code-block:: bash

sudo raspi-config

In the configuraton utility, Enable the SPI under 5 Interfacing Options – P4 SPI.

After that, add your mopidy user to the spi and gpio group:

.. code-block:: bash

sudo usermod -a -G spi,gpio mopidy

If you're planning to use a button or RFID tag to shutdown the system, you also need to create a sudo rule, so that the mopidy user can shutdown the system without a password prompt:

.. code-block:: bash

echo "mopidy ALL = NOPASSWD: /sbin/shutdown" > /etc/sudoers.d/mopidy

Install via pip

The recommended way to install Mopidy Pummeluff by using pip and thus by executing the following command:

.. code-block:: bash

sudo python3 -m pip install mopidy-pummeluff

.. hint::

If you get an error that ``spidev`` could not be found, run ``sudo python3 -m pip install spidev`` first. This is an issue related to the ``pi-rc522`` Pypi package.

Install from source

Alternatively, you can also install Mopidy Pummeluff from source, by running this command:

.. code-block:: bash

sudo su -
cd /usr/src
git clone https://github.com/confirm/mopidy-pummeluff.git
cd mopidy-pummeluff
python setup.py install

.. hint::

If you get an error that ``spidev`` could not be found, run ``pip install spidev`` first. This is an issue related to the ``pi-rc522`` Pypi package.

Configuration

Activate and configure the Mopidy HTTP <https://docs.mopidy.com/en/latest/ext/http/>_ extension and make sure you can connect to the Web UI. The minimal config looks like this:

.. code-block::

[http]
enabled = true
hostname = 0.0.0.0

Have a look at the default Pummeluff config <mopidy_pummeluff/ext.conf>_ for all configuration options.

Usage

Open the Mopidy Web UI (i.e. http://{MOPIDY_IP}:6680/). You should see a pummeluff web client which can be used to regsiter new RFID tags.

Contribution

Please follow these development guidelines <https://development-guidelines.confirm.ch/>_ when contributing to this project.