Skip to content

Commit

Permalink
Merge pull request #2358 from MiczFlor/develop
Browse files Browse the repository at this point in the history
Release 2.7.0
  • Loading branch information
AlvinSchiller authored Apr 26, 2024
2 parents dd2cda7 + 31c2142 commit 550a258
Show file tree
Hide file tree
Showing 61 changed files with 531 additions and 721 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/pythonpackage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
strategy:
max-parallel: 4
matrix:
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11']
python-version: ['3.9', '3.10', '3.11', '3.12']

steps:
- uses: actions/checkout@v4
Expand Down
15 changes: 0 additions & 15 deletions .github/workflows/test_docker_debian.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,18 +69,3 @@ jobs:
# with:
# debian_codename: 'bullseye'
# platform: linux/arm/v6

run_buster_armv7:
name: 'buster armv7'
uses: ./.github/workflows/test_docker_debian_codename_sub.yml
with:
debian_codename: 'buster'
platform: linux/arm/v7

# # can be activate on test branches, currently failing
# run_buster_armv6:
# name: 'buster armv6'
# uses: ./.github/workflows/test_docker_debian_codename_sub.yml
# with:
# debian_codename: 'buster'
# platform: linux/arm/v6
4 changes: 2 additions & 2 deletions .github/workflows/test_docker_debian_codename_sub.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:
uses: docker/[email protected]

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.1.0
uses: docker/setup-buildx-action@v3.2.0
with:
# network=host driver-opt needed to push to local registry
driver-opts: network=host
Expand Down Expand Up @@ -155,7 +155,7 @@ jobs:
uses: docker/[email protected]

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.1.0
uses: docker/setup-buildx-action@v3.2.0

- name: Artifact Download Docker Image
uses: actions/download-artifact@v4
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ If the code change results in a test failure, we will make our best effort to co
### Guidelines
* The oldest supported Raspberry Pi OS version is currently **Buster**. Therefore all Python code should work with **Python 3.7**.
* All code has to run under the stable and legacy version of Raspberry Pi OS (please check if currently even an older version is still supported).
* For GPIO all code should work with **RPi.GPIO**. gpiozero is currently not intended to use.
### Additional Resources
Expand Down
14 changes: 2 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,6 @@

Phoniebox is 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. It also features GPIO buttons control support.

## Important Notice regarding Spotify Integration

**Spotify has [disabled access to libspotify on May 16, 2022](https://developer.spotify.com/community/news/2022/04/12/libspotify-sunset/).**

This means **Spotify in Phoniebox doesn't work at the moment**. For further information see [Spotify FAQ](https://github.com/MiczFlor/RPi-Jukebox-RFID/wiki/Spotify-FAQ)

We are working to provide an integrated solution.
For Version 2 there is a possible fix to reactivate spotify with a manual installation described [here](https://github.com/MiczFlor/RPi-Jukebox-RFID/issues/1815#issuecomment-1666535983).
For Version 3 [#2164](https://github.com/MiczFlor/RPi-Jukebox-RFID/pull/2164) is laying the groundwork. Help is greatly appreciated.

## The new Phoniebox Calendar is here

Another bunch of wonderful designs!
Expand Down Expand Up @@ -80,11 +70,11 @@ Check out the following references.
* [**RFID** control](https://github.com/MiczFlor/RPi-Jukebox-RFID/wiki/MANUAL#cardcontrol) for playout and controlling your Phoniebox (e.g. set [maximum volume with RFID](https://github.com/MiczFlor/RPi-Jukebox-RFID/pull/633) cards).
* Support for various RFID readers, e.g.
* USB
* [RC422](components/rfid-reader/RC522/README.md)
* [RC522](components/rfid-reader/RC522/README.md)
* [PN532](components/rfid-reader/PN532/README.md)
* PC/SC
* also [multiple readers](https://github.com/MiczFlor/RPi-Jukebox-RFID/pull/1012#issue-434052529) simultaneously
* [**GPIO** control](components/gpio_control/README.md) for [buttons](https://github.com/MiczFlor/RPi-Jukebox-RFID/wiki/Using-GPIO-hardware-buttons), [knobs / dials](https://github.com/MiczFlor/RPi-Jukebox-RFID/wiki/Audio-RotaryKnobVolume) and much more to control your Phoniebox via GPIO.
* [**GPIO** control](components/gpio_control/README.md) for [buttons](https://github.com/MiczFlor/RPi-Jukebox-RFID/wiki/Using-GPIO-hardware-buttons) and much more to control your Phoniebox via GPIO.
* Control via smooth [**Web App**](https://github.com/MiczFlor/RPi-Jukebox-RFID/wiki/MANUAL#webapp) running on ajax from your phone, tablet or PC. You can play, upload, move files, assign new RFID cards, control playout, settings, etc.
* Support for files with embedded chapters metadata (like m4a)
* Customizable poweroff command
Expand Down
7 changes: 3 additions & 4 deletions components/audio/PirateAudioHAT/setup_pirateAudioHAT.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,10 @@ source "${JUKEBOX_HOME_DIR}"/scripts/helperscripts/inc.systemHelper.sh

question() {
local question=$1
read -p "${question} (y/n)? " choice
read -p "${question} (Y/n)? " choice
case "$choice" in
y|Y ) ;;
n|N ) exit 0;;
* ) echo "Error: invalid" ; question ${question};;
[nN][oO]|[nN]) exit 0;;
* ) ;;
esac
}

Expand Down
2 changes: 1 addition & 1 deletion components/bluetooth-sink-switch/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ If no bluetooth device is connected, the output defaults back to speakers. After

### Limitations

This feature only works for the *Classic* Edition. Why? It relies on the mpd multiple output channels feature to switch between outputs. This is no available in mopidy, which is used in the Spotify Edition.
This feature only works for the *Classic* Edition. Why? It relies on the mpd multiple output channels feature to switch between outputs. This is not available in mopidy, which is used in the Spotify Edition.

## Installation

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,10 @@ BUTTONS_USB_ENCODER_DIR="${JUKEBOX_HOME_DIR}/components/controls/buttons_usb_enc

question() {
local question=$1
read -p "${question} (y/n)? " choice
read -p "${question} (Y/n)? " choice
case "$choice" in
y|Y ) ;;
n|N ) exit 0;;
* ) echo "Error: invalid" ; question ${question};;
[nN][oO]|[nN]) exit 0;;
* ) ;;
esac
}

Expand Down
76 changes: 65 additions & 11 deletions components/gpio_control/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,18 @@ Up to now the following input devices are implemented:
* **ShutdownButton**:
A specialized implementation for a shutdown button with integrated (but optional) LED support. It initializes a shutdown if the button is pressed more than `time_pressed` seconds and a (optional) LED on GPIO `led_pin` is flashing until that time is reached. For additional information, see [extended documentation below](#shutdownbutton).

* **RotaryEncoder**:
Control of a rotary encoder, for example KY040, see also in [Wiki](https://github.com/MiczFlor/RPi-Jukebox-RFID/wiki/Audio-RotaryKnobVolume).
It can be configured using `pinUp` and `PiNDown` (use GPIO numbers here), `functionCallUp`, `functionCallDown`, and `timeBase` see [extended documentation below](#rotaryencoder).

* **TwoButtonControl**:
This Device uses two Buttons and implements a third action if both buttons are pressed together. See [extended documentation below](#twobuttoncontrol).

* **RotaryEncoder**:
Control of a rotary encoder, for example KY040.
It can be configured using `Pin1` and `Pin2` (use GPIO numbers here), `functionCall1`, `functionCall2` see [extended documentation below](#rotaryencoder).

* **StatusLED**:
A LED which will light up once the Phoniebox has fully booted up and is ready to be used. For additional information, see [extended documentation below](#statusled).

Each section needs to be activated by setting `enabled: True`.

Many example files are located in `~/RPi-Jukebox-RFID/components/gpio_control/example_configs/`.

## Extended documentation

This section provides some extended documentation and guideline. Especially some exemplary configurations are introduced showing how these controls can be set up in the configuration file `~/RPi-Jukebox-RFID/settings/gpio_settings.ini`.
Expand Down Expand Up @@ -172,19 +170,75 @@ Furthermore, the following settings can be used as described for the [regular bu
A RotaryEncoder can be created using an `ini` entry like this:

```bash
[VolumeControl]
[RotaryVolumeControl]
enabled: True
Type: RotaryEncoder
Pin1: 7
Pin2: 8
timeBase: 0.02
Pin1: 22
Pin2: 23
timeBase: 0.1
functionCall1: functionCallVolU
functionCall2: functionCallVolD
```

Pin1 and FunctionCall1 correspond to rotary direction "up", while Pin2 and FunctionCall2 correspond to "down".
* **enabled**: This needs to be `True` for the rotary encoder to work.
* **Pin1**: GPIO number corresponding to rotary direction "clockwise" ('CLK')
* **Pin2**: GPIO number corresponding to rotary direction "counter clockwise" ('DT')
* **functionCall1**: function called for every rotation step corresponding to rotary direction "clockwise". See below for passed arguments. See [function documentation below](#functions).
* **functionCall2**: function called for every rotation step corresponding to rotary direction "counter clockwise". See below for passed arguments. See [function documentation below](#functions).
* **timeBase**: Factor used for calculating the rotation value base on rotation speed, defaults to `0.1`. Use `0` for deactivating rotation speed influence.
Example:
* a single rotation step leads to the value 1 passed to the function.
* steady rotation of two to or more steps, leads to the value 1 for the first call and the value 2 for all further calls.
* speeding up rotation of two to or more steps, leads to the value 1 for the first call, the value 2 for the second, the value 3 for the third and so on.
* **functionCall1Args**: Arguments for `functionCall1`, defaults to `None`. If defined takes precedence over rotation value. Arguments are ignored, if `functionCall1` does not take any.
* **functionCall2Args**: Arguments for `functionCall2`, defaults to `None`. If defined takes precedence over rotation value. Arguments are ignored, if `functionCall1` does not take any.

To also use the push button of the encoder just a button definition:
```bash
[Mute]
enabled: True
Type: Button
Pin: 27
functionCall: functionCallVol0
```

Note that the old configuration entries PinUp/PinDown and functionCallUp/functionCallDown are deprecated and might stop working in future.


```bash
[RotarySeekingControl]
enabled: True
Type: RotaryEncoder
Pin1: 22
Pin2: 23
timeBase: 0.1
functionCall1: functionCallPlayerSeekFwd
functionCall1Args: 5
functionCall2: functionCallPlayerSeekBack
functionCall2Args: 5
```

In this example, the encoder will be used to seek for- and backwards by 5 seconds on every rotation step. The rotation value will **NOT** be used in this case as the function args are defined!


#### Circuit diagram
```text
.---------------. .---------------.
| | | |
| CLK |----------------------| GPIO 22 |
| | | |
| DT |----------------------| GPIO 23 |
| | | |
| SW |----------------------| GPIO 27 |
| | | |
| + |----------------------| 3.3V |
| | | |
| GND |----------------------| GND |
| | | |
'---------------' '---------------'
KY-040 Raspberry
```

### StatusLED

A StatusLED can be created using an `ini` entry like this:
Expand Down

This file was deleted.

18 changes: 15 additions & 3 deletions components/gpio_control/example_configs/gpio_settings.ini
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,28 @@ antibouncehack: False

[VolumeControl]
enabled: False
Type: TwoButtonControl ;or RotaryEncoder
Type: TwoButtonControl
Pin1: 5
Pin2: 6
pull_up_down: pull_up
hold_time: 0.3
hold_mode: Repeat
timeBase: 0.1 ;only for RotaryEncoder
functionCall1: functionCallVolU
functionCall2: functionCallVolD
functionCallTwoButtons: functionCallVol0 ;only for TwoButtonControl
functionCallTwoButtons: functionCallVol0
;functionCall1Args: 1
;functionCall2Args: 1
;functionCallTwoButtonsArgs: x

[RotaryVolumeControl]
enabled: False
Type: RotaryEncoder
Pin1: 22
Pin2: 23
timeBase: 0.1
functionCall1: functionCallVolU
functionCall2: functionCallVolD

[PrevNextControl]
enabled: False
Type: TwoButtonControl
Expand Down Expand Up @@ -143,3 +151,7 @@ pull_up_down: pull_up
functionCall: functionCallTriggerPlayFolder
functionCallArgs: someRelativeFolderName

[StatusLED]
enabled: False
Type: StatusLED
Pin: 14

This file was deleted.

This file was deleted.

Loading

0 comments on commit 550a258

Please sign in to comment.