iDotMatrix panels are cheap LED pixel displays (16×16, 32×32 or 64×64) that you’re supposed to control over Bluetooth Low Energy from a phone app. This project drives them from a computer instead, through a Wi-Fi bridge to make this work on machines without Bluetooth too.
The code started as a fork of the community python3-idotmatrix-library, whose authors reverse-engineered the protocol. I reworked it into a Python package built around an IDotMatrixClient with a connection manager and feature modules for text, images, GIFs, clock, countdown, stopwatch, effects, scoreboard, graffiti, eco mode and system commands. On top of that there are helpers to convert images and GIFs, a digital picture-frame mode watching a folder, and work/rest (pomodoro-style) timer with a small web interface.
The ESP32 bridge#
Next to the Python code sits Rust firmware for ESP32 boards. The board joins the Wi-Fi network, announces itself over mDNS as idotmatrix.local and exposes a small HTTP API, while updates to the panel keep going over BLE. Rendering and timer state live on the ESP32, which lets computers on the network can drive the display, and the firmware core can be tested on the host.
Licence: GPL. Source on GitHub.