-
Notifications
You must be signed in to change notification settings - Fork 4
Modes
Clocks: Binary clock | Binary epoch | Breakout clock | Game of Life | Large clock | Ping-pong | Small clock | Snake
Games: Breakout clock | Game of life | Ping-pong| Snake
IKEA Frekvens: Arrow | Blinds | Equalizer | Jagged Waveform | Ring | Smooth waveform
IKEA Obegränsad: Circle | Lines | Noise | Rain | Scan | Stars
Interactive: Animation | Countdown | Draw | Flies | Stream | Ticker
Smart-home: Home Assistant Weather | Home Thermometer
Weather: Google Weather | Home Assistant Weather | Open Meteo | Open Weather | World Weather Online | Wttr.in | Yr
Miscellaneous: Blink | Bright | Firework | Glitter | Leaf fall | Metaballs | Pixel sequence | Waveform
Create simple animations and show it off on the display.
Use the Web app to get started.
Tip
The Microphone extension can be used to play/pause the animations.
Configure in .env:
MODE_ANIMATION='true'See also Draw.
Inspired by the original IKEA Frekvens mode.
Tip
The Microphone extension can be used to play/pause the arrow, just like on a stock IKEA Frekvens device.
Configure in .env:
MODE_ARROW='true'Binary clock, counts seconds since midnight.
Configure in .env:
MODE_BINARYCLOCK='true'See also Binary epoch.
Binary clock, counts seconds since 1970.
Configure in .env:
MODE_BINARYEPOCH='true'See also Binary clock.
Inspired by the original IKEA Frekvens mode.
Tip
The Microphone extension can be used to play/pause the blinds.
Configure in .env:
MODE_BLINDS='true'Use it as an alarm.
Configure in .env:
MODE_BLINK='true'See also Bright.
Inspired by the classic breakout game.
Configure in .env:
MODE_BREAKOUT='true'Use it as a lamp, if desired.
Configure in .env:
MODE_BRIGHT='true'See also Blink.
Inspired by the original IKEA Obegränsad mode.
Tip
The Microphone extension can be used to play/pause the circle.
Configure in .env:
MODE_CIRCLE='true'See also Ring.
Start a countdown timer.
The display will blink when the timer reaches zero.
Use the Web app to start a new countdown, it can also be automated via Home Assistant.
API payload examples:
{
"time": 600
}{
"timestamp": "2025-12-02T18:39:00"
}Note
The expected timestamp format is an ISO 8601 string without timezone suffix.
Configure in .env:
MODE_COUNTDOWN='true'See also Blink.
Create artwork and show it off on the display.
Use the Web app to get started.
Configure in .env:
MODE_DRAW='true'Inspired by the original IKEA Frekvens mode.
Tip
The Microphone extension can be used to play/pause the equalizer, just like on a stock IKEA Frekvens device.
Configure in .env:
MODE_EQUALIZER='true'Happy new year.
Configure in .env:
MODE_FIREWORK='true'Multiplayer fly-simulator.
Configure in .env:
MODE_FLIES='true'Inspired by Conway’s Game of Life. Comes with an optional clock.
Configure in .env:
MODE_GAMEOFLIFE='true'Inspired by snow on old analog TVs.
Configure in .env:
MODE_GLITTER='true'Weather service.
Updated every 15 minutes.
Requires a API-key, set using the GOOGLEWEATHER_KEY variable.
Configure in secrets.h:
#define GOOGLEWEATHER_KEY "secret"Configure in .env:
MODE_GOOGLEWEATHER='true'Note
Location coordinates, LATITUDE and LONGITUDE are required.
Smart-home integration
Requires an Long-lived access token, set using the HOMEASSISTANT_KEY variable. Other variables are optional.
Configure in secrets.h:
#define HOMEASSISTANT_KEY "secret"#define HOMEASSISTANT_PROTOCOL "http:"
#define HOMEASSISTANT_HOST "homeassistant.local"
#define HOMEASSISTANT_PORT 8123
#define HOMEASSISTANT_ENTITY "weather.forecast_home"Configure in .env:
MODE_HOMEASSISTANT='true'See also Home Assistant extension.
Smart-home integration.
Display the current indoor and outdoor temperatures.
Integrated into Home Assistant.
API payload example:
{
"indoor": 21,
"outdoor": 9
}Configure in .env:
MODE_HOMETHERMOMETER='true'Inspired by the original IKEA Frekvens mode.
Tip
The Microphone extension can be used to play/pause the waveforms, just like on a stock IKEA Frekvens device.
Configure in .env:
MODE_JAGGEDWAVEFORM='true'See also Smooth waveform and Waveform.
Clock with optional seconds indicator.
Configure in .env:
MODE_LARGECLOCK='true'See also Small clock.
Autumn-inspired.
Configure in .env:
MODE_LEAFFALL='true'Inspired by the original IKEA Obegränsad mode.
Tip
The Microphone extension can be used to play/pause the lines, just like on a stock IKEA Frekvens device.
Configure in .env:
MODE_LINES='true'See also Scan.
Inspired by organic, blob-like shapes.
Tip
The Microphone extension can be used to play/pause the movement of the shapes.
Configure in .env:
MODE_METABALLS='true'Inspired by the original IKEA Obegränsad mode.
Configure in .env:
MODE_NOISE='true'Weather service.
Updated every 15+ minutes, depending on location.
Commercial usage requires an API-key, set using the OPENMETEO_KEY variable.
Configure in secrets.h:
#define OPENMETEO_KEY "secret"Configure in .env:
MODE_OPENMETEO='true'Note
Location coordinates, LATITUDE and LONGITUDE are required.
Weather service.
Updated every 10 minutes.
Requires a API-key, set using the OPENWEATHER_KEY variable.
Configure in secrets.h:
#define OPENWEATHER_KEY "secret"Configure in .env:
MODE_OPENWEATHER='true'Note
Location coordinates, LATITUDE and LONGITUDE are required.
Inspired by the classic ping-pong game. Comes with an optional clock.
Configure in .env:
MODE_PINGPONG='true'For tech-geeks, iterates through the pixels one by one in the exact same order as the pixels are addressed on the SPI-bus.
Tip
The Microphone extension can be used to play/pause the sequence.
Configure in .env:
MODE_PIXELSEQUENCE='true'Inspired by the original IKEA Obegränsad mode.
Configure in .env:
MODE_RAIN='true'Inspired by the original IKEA Frekvens mode.
Tip
The Microphone extension can be used to play/pause the ring, just like on a stock IKEA Frekvens device.
Configure in .env:
MODE_RING='true'See also Circle.
Inspired by the original IKEA Obegränsad mode.
Tip
The Microphone extension can be used to play/pause the scan.
Configure in .env:
MODE_SCAN='true'See also Lines.
Clock with optional seconds indicator.
Configure in .env:
MODE_SMALLCLOCK='true'See also Large clock.
Inspired by the original IKEA Frekvens mode.
Tip
The Microphone extension can be used to play/pause the waveforms, just like on a stock IKEA Frekvens device.
Configure in .env:
MODE_SMOOTHWAVEFORM='true'See also Jagged waveform and Waveform.
Inspired by the classic snake-game. Comes with an optional clock.
Configure in .env:
MODE_SNAKE='true'Inspired by the original IKEA Obegränsad mode.
Configure in .env:
MODE_STARS='true'Provides real-time pixel and lighting data over Wi-Fi, allowing the display to be driven live from external software and controllers.
Multiple widely used streaming protocols are supported:
- Art-Net – Real-time lighting control data over UDP/IP.
- Distributed Display Protocol (DDP) – Efficient pixel-oriented data streaming.
- E1.31 (sACN) – Network-based DMX512 data streaming.
Receivers:
example.local:4048example.local:5568example.local:6454
Tip
The Stream csv Python script streams custom content such as animations and drawings.
Configure in .env:
MODE_STREAM='true'Rolling text.
Use the Web app to set a message, or automate it via Home Assistant.
API payload example:
{
"font": "Mini",
"message": "Hello world!"
}Configure in .env:
MODE_TICKER='true'See also Message.
Inspired by the two original IKEA Frekvens modes.
Tip
The Microphone extension can be used to play/pause the waves, just like on a stock IKEA Frekvens device.
Configure in .env:
MODE_WAVEFORM='true'See also Jagged waveform and Smooth waveform.
Weather service.
Updated every 10-15 minutes.
Order of precedence:
-
LATITUDEandLONGITUDE. LOCATION
Requires a API-key, set using the WORLDWEATHERONLINE_KEY variable.
Configure in secrets.h:
#define WORLDWEATHERONLINE_KEY "secret"Configure in .env:
MODE_WORLDWEATHERONLINE='true'Note
Location coordinates, LATITUDE and LONGITUDE, or a location name LOCATION is required.
Weather service.
Updated hourly.
Order of precedence:
-
LATITUDEandLONGITUDE. LOCATION- Auto-detect
Configure in .env:
MODE_WTTRIN='true'Weather service.
Denmark, Finland, Norway and Sweeden uses Nowcast, which is updated every 5 minutes. The rest of the world uses Location Forecast.
Configure in .env:
MODE_YR='true'Note
Location coordinates, LATITUDE and LONGITUDE are required.