A node based scheduler that runs along side of FPP and schedules songs to run. It works with https://github.com/ghormann/Christmas-Vote-now to get the mosted voted song. Note that this project was never designed for use outside of my personal display so some code tweeks will be needed if you attempt to use it.
This project is automatically built and published as a Docker image to a private repo using GitHub Actions.
The project uses semantic versioning with the following rules:
- Patch version bump (x.x.+1): Default for any commit to main
- Minor version bump (x.+1.0): When commit message starts with
feat:orfeat( - Major version bump (+1.0.0): When commit message contains
BREAKING CHANGEor uses!(e.g.,feat!:,fix!:)
You can also create releases manually using the "Create Release" workflow:
- Go to the "Actions" tab in your GitHub repository
- Select "Create Release" workflow
- Click "Run workflow"
- Choose the version type (patch/minor/major) and whether it's a pre-release
- Click "Run workflow"
This will:
- Update the version in package.json
- Create a git tag
- Create a GitHub release with changelog
- Trigger the Docker build and push
The following tags are automatically created:
latest: Latest build from main branchvX.Y.Z: Specific version tagvX.Y: Major.minor versionvX: Major version only
- NOTE: This code runs as a sepereate docker container and connects to yourS FPP box. It should work for both BBB and PI versions of FPP, but has only been tested on Pi. It also requires version FPP 4.1 or greater.
- In FPP, your playlist should have a description defined. This will be the "nice name" that will be displayded on the voting website.
- Install the preqs with sudo apt install nodejs npm
- Clone this repo to somewhere on the fpp box. (I use /home/fpp/src/fppscheduler, but it really doesn't matter)
- If you plan to use the "short show" feature, you need to modify lib/mode.js to be the list of playlists to be used during a short show.
- You'll need to modify internal_songs in lib/model.js. This should be list of Playlist that will be scheculed regardless of the next voted song. (These are often bumpers or intros). An empty array can be used if the top voted song should always be played.
- run npm install to download and install all the pre-reqs.
- run node .
- lib/mymqtt.js shows the MQTT topic names. It does assume that fpp has been configured with "christmas/" as the MQTT prefix for topics
- lib/scheduler.js does have some hard coded playlist names for special features. These all start with "Internal_"
- By default, lib/playlist.js won't share playlist that start with "Test" or "Internal" with the voting website, all other play list will be avaiable for users to vote upon.