A Python + Node.js music player driven by NFC or RFID tags.
Go to file
Annika Backstrom 6ad68b777d Remove Makefile
We don't really need this. Closes #2
2017-04-10 22:25:22 -04:00
bin Add checks for RFID error codes 2017-04-09 22:45:21 -04:00
init Add systemd init file with hardcoded path 2017-04-08 12:25:23 -04:00
jukebox Disable trailing execution of throttled commands 2017-04-09 22:50:06 -04:00
media add media directory 2017-03-26 01:51:32 +00:00
static attempt client reconnection of closed websockets 2017-04-09 22:08:34 -04:00
templates Let templates handle their own dependencies 2017-04-09 11:51:17 -04:00
.gitignore Add Vagrantfile 2017-04-08 12:12:02 -04:00
config.json.sample Move stop and pause ids into config 2017-04-08 12:46:31 -04:00
config.json.vagrant Filter out @F messages from mpg321 2017-04-09 15:08:32 -04:00
LICENSE Add MIT License 2017-04-08 13:49:15 -04:00
nodemon.json Create web UI for sending tags 2017-04-09 22:08:34 -04:00
package.json Create web UI for sending tags 2017-04-09 22:08:34 -04:00
player.js Add checks for RFID error codes 2017-04-09 22:45:21 -04:00
README.md Add README.md 2017-04-08 13:11:02 -04:00
requirements.txt tag-reader: update to pi-rc522 2.1 2017-04-08 01:55:34 +00:00
Vagrantfile Add Vagrantfile 2017-04-08 12:12:02 -04:00

Rasperry Pi RFID Jukebox

Disclaimer: this is a perpetual work in progress!

This is a personal project of Annika Backstrom for using a Raspberry Pi as an RFID-controlled "jukebox". Given an RPi with attached MFRC522, UIDs from 1K MIFARE tags can be associated with media (MP3 files) and actions (currently, STOP and PAUSE).

Components

  • Jukebox app with web frontend (node.js)
  • RFID tag reader (Python)
  • MP3 player (mpg321, not included)

Setup

This section is incomplete (of course) and parts are tuned to my setup and for my own convenience:

  1. Clone project
  2. Copy config.json.sample to config.json
  3. Edit config.json for your setup
  4. npm install (node.js dependencies)
  5. make all (Python dependencies, mpg321 dependency)

TODO: Can this be streamlined? Maybe move Makefile commands into npm commands.

config.json

The following keys are available:

  • port -- web server port

  • tag_reader -- path to tag reader script. jukebox expects the tag reader to spit out a unique string for each tag (e.g. 10 character hex UID)

  • mpg321 -- path to mpg321 executable. should be run in "remote control" mode (-R), reading commands from stdin.

  • stop_id -- id of the card that stops playback

  • pause_id -- id of card that pauses playback