Skip to content

Latest commit

 

History

History
128 lines (81 loc) · 6.04 KB

REQUIREMENTS.md

File metadata and controls

128 lines (81 loc) · 6.04 KB

Requirements

These are helpers for exposing Apple1 AirPlay® metadata. All the helper utilities rely on shairport-sync built/configured with MQTT and metadata support.

Hardware and Network Requirements

Before we begin, first, some requirements for your home network. Requirements 2., 3., and 4. can all be hosted on the same computer, including a single Raspberry Pi®

  1. AirPlay® source2

  2. shairport-sync as AirPlay® receiver

  3. MQTT broker

  4. Renderer

    • Webserver for python-flask-socketio-server

      • Any computer that can run this Python 3-based Flask app (tested on macOS™ and Raspberry Pi OS)
    • Character LCD Display for circuitpython_char_lcd

      • A Raspberry Pi for running the CircuitPython script with a Character LCD display attached. A keypad for performing as a remote control is optional, but a nice feature.
    • HUB75 RGB LED Matrix Panel(s) for python-flaschen-taschen -- and something to drive them

MQTT and shairport-sync config

For our purposes, these instructions assume or were tested with:

  • a Raspberry Pi running Raspberry Pi OS buster
  • AirPlay receiver (shairport-sync) and MQTT broker (mosquitto) running on same Raspberry Pi as the helper utilities.

See wiki for additional pointers.

IMPORTANT: Validate your MQTT broker config. See Configure MQTT broker - wiki for one way to set up a broker.

Test something like the following, done by using two separate shell sessions:

sudo apt install mosquitto-clients
# .. mosquitto_sub ...
mosquitto_sub -v -d -h mqttbrokerhost -t test/topic1
# .. mosquitto_pub ...
mosquitto_pub    -d -h mqttbrokerhost -t test/topic1 -m "helo"

As mentioned above, shairport-sync will need to be built with MQTT and metadata support. See wiki - Build shairport-sync with MQTT support on Raspberry Pi

Quickstart

Install python dependencies and clone this repository

# Install a python3 dev setup and other libraries
sudo apt install -y python3-pip python3-venv build-essential \
    python3-setuptools python3-wheel git

# place a clone of this repo in ~/projects/
mkdir ~/projects
cd ~/projects
git clone https://github.com/idcrook/shairport-sync-mqtt-display.git
cd shairport-sync-mqtt-display

now go back to the "install" section:

Development setup

Original development setup:

  • iTunes® and Airfoil Airplay-ing to Raspberry Pi(s).
  • Raspberry Pi Model 3 B

python-flask-socketio-server

Since both python and web technologies are very cross-platform, development was done on both a Mac running macOS and a Raspberry Pi Model 3 B running Raspberry Pi OS (buster)

circuitpython_char_lcd

Adafruit's Adafruit RGB Negative 16x2 LCD+Keypad Kit for Raspberry Pi LCD Pi Plate was used.

Useful docs:

python-flaschen-taschen

Useful docs:


1: Trademarks are the respective property of their owners.

2: AirPlay® source could be

  • iTunes® or Music app in iOS™/macOS™
  • Rogue Amoeba's Airfoil app (which can even send Spotify artwork from macOS app)