/RPi-Jukebox-RFID

A Raspberry Pi jukebox, playing local music, podcasts, web radio and streams triggered by RFID cards, web app or home automation. All plug and play via USB. GPIO scripts available.

Primary LanguagePHPMIT LicenseMIT

Phoniebox: the RPi-Jukebox-RFID

GitHub last commit (branch)

Python Checks and Tests Test Install Scripts on Docker CodeQL

Gitter chat

A contactless jukebox for the Raspberry Pi, playing audio files, playlists, podcasts, web streams and spotify triggered by RFID cards. All plug and play via USB, no soldering iron needed. Update: if you must, it now also features a howto for adding GPIO buttons controls.

IMPORTANT NOTICE REGARDING SPOTIFY INTEGRATION

Spotify has disabled access to libspotify on May 16, 2022. This means Phoniebox can not communicate with Spotify via libspotify (and mopidy-spotify) anymore. The problem is not our code but the cut off by Spotify.

We want Phoniebox users to be able to connect their box to their Spotify accounts and play their content. The possibilities Spotify offers are -- at first glance -- not supporting an integration with Phoniebox. Third party projects like librespot-java enter a grey zone regarding violation of Spotify's Terms of Services (ToS). For a potential Spotify re-integration, we are committed to a Spotify ToS compliant way of doing so (both in Version 2 and Version 3). This means looking into the (relatively new) Spotify Playback API, which is going to take an unknown amount of time.

This leaves us in a pickle and we are happy to hear from developer talent in the Phoniebox community on how to move forward regarding Phoniebox. We are also curious to learn about alternative services we can connect with and which you would like to see supported -- or have developed support for already: MiczFlor#1835

The Phoniebox Calendar 2022 is here!!!

Another bunch of wonderful designs! 2022 is the fourth Phoniebox calendar. If you are interested, you can see the 2019, 2020 and 2021 calendars in the docs folder. Download the printable PDF of 2022 here.

The 2022 Phoniebox Calendar


Install latest Phoniebox version

If you are looking for the latest stable version, use the install script for Raspberry Pi OS. If you dare to go where only few have gone before, become an alpha-tester, bug reporter, contributor for the exciting, totally re-written, up and coming, yet feature incomplete and unstable version 3 of the Phoniebox code base:

🔥 Version 3 is coming ...

Newest release: V3.2.0 Beta -> 7. Feb 2022

  • New GPIO backend based on GPIOZero including more sophisticated controls for inputs and outputs
  • Bluetooth Headset support with device buttons
  • Equalizer + Mono down mixer
  • Localization support for Webapp, current languages supported are English and German (help us translate!)
  • Timer support in Webapp and via RFID cards
  • Additional system information in Webapp like Battery status, CPU temperature or IP address
  • Preperation for Text-to-Speech + Read My IP as a first example
  • Bugfixes for Install Script

Over the last few months, a few Phoniebox fans started to think about a potential future of the Jukebox code. Version 2 is mature and works well but doesn't scale enough for future development. It's the mix of Shell, Python and PHP. The goal was to tidy up the codebase, focus on a single programming language for the core (Python), establish a solid plugin system and build a responsive web client. Read on here if you want to learn about more reasons.

👋 Looking for adopters, testers and contributors

If you want to test or help develop this new version called future3, let us know what you think about the new architecture, the new web application and help us find bugs (or fix them proactively).

While Version 3 is still under development, it is becoming a lot more stable! Although only some of the features from version 2.x have been ported to version 3 so far.

If you seek the adventure, your support will be more then welcome. Before contributing, check out the following references.


Important updates / news

  • Discussions forums we use Github's Discussions feature for a more forum style. Please ask general questions in Discussions, bugs and enhancements should still be in Issues.

  • Phoniebox future3 Beta released (2022-02)

  • Gitter Community we got ourselves a gitter community; chat us up at https://gitter.im/phoniebox

  • Phoniebox 2.3 released (2021-08-12)

The 2.3 release was pushed through the doors with many contributors: List of all contributors

What's new in version 2.3?

  • Improved installation guide
  • Holding buttons feature fixed #1406
  • Bluetooth buttons and headphones toggle #1262
  • fixed stop on removal for RC522 #1122
  • USB Encoder buttons support for anyone who dors not want to solder...
  • Improved robustness and better documentation for GPIO control
  • Auto convert wrong Spotify URLs to a format Mopidy understands
  • Support for PC/SC-readers
  • Removed support for Raspian Stretch
  • Lots of fixed bugs and minor improvements...

What's still hot?

  • 🔥 Fixed location of gpio_settings.ini for GPIO control
  • Added support for files with embedded chapters metada (like m4a) enhancement
  • Added customizable poweroff command bash enhancement
  • Finally fixed resume function...
  • Lots of fixed bugs and minor improvements...
    • Status LED, Rotary Button, Volume Up/Down, custom music directory for +Spotify, Startup sound volume
  • The constantly improved one-line install script handles both Classic and +Spotify when setting up your Phoniebox
    • integrated improved GPIO control
    • integrated selection of RFID readers and uses multiple readers simultaneously
    • features non-interactive installs based on a config file
  • WiFi management
    • RFID cards to toggle Wifi (or switch it on/off)
    • Read out the Wifi IP address (if you are connecting to a new network and don't know where to point your browser)
      • Hotspot Phoniebox: ad-hoc hotspot if no known network found (IP: 10.0.0.5 SSID: phoniebox Password: PlayItLoud)
  • Touchscreen LCD display Player (file: index-lcd.phpin web app)
  • Integrate your Phoniebox in your Smart Home.
  • Smoother Web App running on ajax.
  • New search form for local files
  • Control the debug logs in the web app (individual scripts switched on/off, empty log file).
  • Set maximum volume with RFID cards.
  • Control via wifi web app from your phone, tablet or PC. You can play, upload, move files, assign new RFID cards, control playout, settings, etc.
  • RFID control for playout and controlling your Phoniebox.
  • Playout Resume switch for audio books, allowing you to jump straight back to where you were (unless you fell asleep...).
  • Playout Shuffle switch to mix up your playlists.
  • Download from YouTube directly to your Phoniebox.
  • Support for Spotify and Google Play Music integration.
  • Podcasts! More for myself than anybody else, I guess, I added the podcast feature for Phoniebox (2018-05-09)
  • Buttons and knobs / dials to control your Phoniebox via GPIO.

Quick install

One line install script for Raspbian buster available.

  • MUST READ for users of Phoniebox +Spotify Edition
  • This install script combines the two versions Classic and + Spotify.
  • Phoniebox Classic supports local audio, web radio, podcasts, YouTube (download and convert), GPIO and/or RFID

Documentation can be found in the GitHub wiki for Phoniebox. Please try to add content in the wiki regarding special hardware, software tweaks and the like.

The 2020 Phoniebox Calendar is out!

Celebrating all the great designs of 2019, I put together a calendar for 2020, see picture above. If you want to be featured on next years calendar, please make sure to add your Phoniebox pics to the design thread here on github.

The PDF is about 6MB and will print well on A2 paper size, but it should also look good on larger poster sizes. Thanks to all the contributors, designers and makers. Have a good start into 2020 and keep up the good work! The 2020 Phoniebox Calendar


If you like your Phoniebox, consider to buy me a coffee or donate via PayPal to micz.flor@web.de using the friends option.


Prototype of the RFID jukebox

See the Phoniebox code in action, watch this video and read the blog post from iphone-ticker.de

We love Tech published a video screencast on how to build your Phoniebox (in German), you can find all the steps and see the final product here:


Installation und Hardware

Web App and Audio / Spotify

The finished Phoniebox in action

A new video screencast about

What makes this Phoniebox easy to install and use:

  • Runs on all Raspberry Pi models (1, 2 and 3) and Raspberry Zero. (jump to the install instructions)
  • Just plug and play using USB, no soldering iron needed.
  • Once the Phoniebox is up and running, add music from any computer on your home network.
  • Register new RFID cards easily without having to connect to the RPi.
  • Play single or multiple files, podcasts or web streams.
  • Volume control is also done with RFID cards or key fobs.
  • Connect to your Phoniebox via your wifi network or run the Phoniebox like an access point and connect directly without a router.
  • Bonus: control the Phoniebox from your phone or computer via a web app.

The web app allows you to change the volume level, list and play audio files and folders, stop the player and shut down the RPi gracefully.

The web app runs on any device and is mobile optimised. It provides:

  • An audio player to pause, resume, shuffle, loop, stop and skip to previous and next track.
  • Sub folder support: manage your collection in sub folders. Phoniebox has two play buttons: only this folder and eeeeverything in this folder.
  • Manage files and folders via the web app.
  • Register new RFID cards, manage Phoniebox settings, display system info and edit the wifi connection.
  • Covers displayed in the web app (files called cover.jpg).

Phoniebox Gallery

Caption Caption Caption Caption Caption Caption

See more innovation, upcycling and creativity in the Phoniebox Gallery or visit and share the project's homepage at phoniebox.de. There is also an english Phoniebox page.

Sustainability

You might be surprised how easy and affordable you can get a RaspberryPi or an "appropriate" housing for your Phoniebox second hand. Think about the planet before you buy a new one. Creating a Phoniebox may be sustainable for the following reasons:

  • You buy things second hand or do upcycling on unused objects and reduce newly produced products
  • You built your Phoniebox yourself, so maintaining and repairing is not a problem (Additionally a great community helps you)
  • Since the Phoniebox uses Linux as a base system it's very unlikely that you run out of system and security updates - so it can run and run and run...
  • RFID cards or tags can be reused - no need to buy new plastic elements for changing the music or story linked to a card
  • Build it together with your kids to show them that building things on their own is possible and in cooperation with others makes life easier and fun at the same time

Installation

Adding push buttons to control volume, skipping tracks, pause, play: read the GPIO buttons installation guide.

Components

Special hardware is now organised in the folder components. If you have new hardware attached to your Phoniebox, please add to this library! It currently contains soundcards, displays, GPIO controls, RFID reader, smarthome integration.

Manual

In the Manual you will learn:

Contributing improvements

Read the CONTRIBUTING.md file for more infos on how to contribute code.

Reporting bugs

To make maintenance easier for everyone, please run the following script and post the results when reporting a bug. (Note: the results contain some personal information like IP or SSID. You might want to erase some of it before sharing with the bug report.)

/home/pi/RPi-Jukebox-RFID/scripts/helperscripts/Analytics_AfterInstallScript.sh 

Just copy this line and paste it into your terminal on the pi.

If you find something that doesn't work. And you tried and tried again, but it still doesn't work, please report your issue in the "issues" section. Make sure to include information about the system and hardware you are using, like:

Raspberry ZERO, OS Jessie, Card reader lists as (insert here) when running scripts/RegisterDevice.py, installed Phoniebox version 0.9.3 (or: using latest master branch).

Troubleshooting

There is a growing section of troubleshooting including:

  • I want to improve the onboard audio quality
  • I am moving, how do I get the Phoniebox into my new WiFi network?
  • The RFID Reader doesn't seem to work.
  • Changing the volume does not work, but the playout works.
  • Script daemon_rfid_reader.py only works via SSH not by RFID cards.
  • Script daemon is closing down unexpectedly.
  • Everything seems to work, but I hear nothing when swiping a card.
  • I would like to use two cards / IDs to do the same thing.

Acknowledgments

There are many, many, many inspiring suggestions and solutions on the web to bring together the idea of a jukebox with RFID cards. I want to mention a few of these that have inspired me.

I also want to link to two proprietary and commercial projects, because they were an inspiration in the early days of the Phoniebox. Since the first release, the Phoniebox code has shown the power of open source development. Today, Phoniebox might be the most versatile project of its kind.


If you like your Phoniebox, consider to buy me a coffee


Shopping list

Here is a list of equipment needed. You can find a lot second hand online (save money and the planet). The links below lead to amazon, not at all because I want to support them, but because their PartnerNet program helps to support the Phoniebox maintenance (a little bit...). Note: depending on individual projects, the hardware requirements vary.

Raspberry Pi

RFID Reader and cards / fobs

  • RFID Card Reader (USB): Neuftech USB RFID Reader ID using 125 kHz - make sure to buy compatible cards, RFID stickers or key fobs working with the same frequency as the reader. Important notice: the hardware of the reader that I had linked here for a long times seems to have changed and suddenly created problems with the Phoniebox installation. The reader listed now has worked and was recommended by two Phoniebox makers (2018 Oct 4). I can not guarantee that this will not change and invite you to give RFID Reader feedback in this thread.

  • RFID Kit RC522: [RC522 Reader, Chip, Card for Raspberry Pi 13.56MHz] (https://amzn.to/2C7YZCZ)

    • RFID sticker / tags: MIFARE RFID NFC Tags untested by me personally, but reported to work with work with RC522 and PN532 card readers.

Speakers / amps

Arcade Buttons

Special hardware

These are links to additional items, which will add an individual flavour to your Phoniebox setup. Consult the issue threads to see if your idea has been realised already.