Go to file
Fabian Schlenz 8568436fc1
Some checks reported errors
continuous-integration/drone/push Build encountered an error
Ignore .vscode
2019-10-12 23:28:19 +02:00
data Animation now uses .pia files from SPIFFS instead of hardcoded C stuff. 2019-06-18 18:10:58 +02:00
docs/effects Updated effect gifs. 2019-09-25 06:07:17 +02:00
include Effect sinematrix now comes in additional variants with some more color palettes. 2019-10-12 23:27:49 +02:00
lib Arduino IDE -> PlatformIO 2019-05-27 21:17:05 +02:00
src Effect sinematrix now comes in additional variants with some more color palettes. 2019-10-12 23:27:49 +02:00
test Arduino IDE -> PlatformIO 2019-05-27 21:17:05 +02:00
.drone.yml Removed support for ESP32. Existing code will stay in place, but new stuff won't be controlled for ESP32 compatibility. 2019-06-18 21:32:33 +02:00
.gitignore Ignore .vscode 2019-10-12 23:28:19 +02:00
.travis.yml Arduino IDE -> PlatformIO 2019-05-27 21:17:05 +02:00
platformio.ini Merge branch 'master' of https://git.schle.nz/fabian/pitrix; added new effect tv_static. 2019-10-10 06:50:09 +02:00
README.md Reorganized effect selection stuff: No longer a big case clause comparing CRC32. Instead an array of structs. Much nicer. Also, other code can now see which effects there are. 2019-10-02 06:16:07 +02:00

pitrix

What is pitrix?

pitrix is a software to run on an ESP8266 microncontroller connected to a LED matrix. It will display the time and a few other nice effects and stuff.

pitrix fetches the current time via NTP, is controllable via MQTT and can be flashed over-the-air, so you don't need to disassemble your nice-looking LED matrix everytime you want to update the software.

Effects

Name Description Image
bell An example for a blinking sprite. Can be used for home automation, for example.
big_clock A big clock. Seconds are moving around the edge.
big_dynamic Big squares appearing in sequential colors.
clock The small clock at the bottom. Usually used by other effects to integrate a clock.
cycle Meta effect: Cycles through some of the other effects. -
confetti Random pixels lighting up in sequential colors and fading out again.
dvd The bouncing-around dvd logo we all know and love. High chance of hitting cordners because of the low resolution of the LED panel.
fire Fireplace-like effect. Needs more tweaking.
firework Firework-like effect. Needs more work.
gol Conway's Game of Life.
matrix That green effect from The Matrix.
multi_dynamic Space is divided in 2x2 squares which are changing their color random-sequentially.
pixel_clock A clock using single pixels to display the current time.
rainbow_matrix Like matrix, but not just green but displaying a rainbow across the columns.
random_matrix Like matrix, but with random colors and random directions.
sinematrix3 Colorful pastel images, slowly moving about.
single_dynamic 2x2 squares random-sequentially changing their color one after another.
snake Snake. Without self-collision detection or AI.
twirl A colorful twirl.

How to use

Checkout the code, rename include/config.sample.h to include/config.h and edit it to match your preferences / environment.

Then compile and flash it, preferably using PlatformIO.

Control it

Currently, control is possible via MQTT and / or HTTP REST API. To use MQTT, you have to define MQTT_ENABLE and configure your MQTT sever's credentials. MQTT_TOPICis set ininclude/config.hand defaults topitrix`.

To use the HTTP REST API, you have to define HTTP_SERVER_ENABLE and set a port number to listen on (80 is set by default).

Possible commands / topics are:

  • MQTT_TOPIC/mode / POST /mode lets you select an effect to show. See src/effects.cpp for a list. Default effect is cycle, which will cycle through some of the available effects. Another effect is off, which will just display black, effectively turning the display off. (pitrix stays running, so you can turn it on again by simply selecting another mode.)
  • MQTT_TOPIC/brightness / POST /brightness sets the brightness of the display. Valid values are between 1 (darkest possible setting) and 255 (maximum brightness).
  • MQTT_TOPIC/reboot / POST /reboot reboots pitrix. Send any value.

You can set retained values to have pitrix read them at startup, effectively setting a default effect or brightness. (Do NOT set a retained value for MQTT_TOPIC/reboot unless you want pitrix to reboot all the time.)

Monitor it

The current status ("ONLINE" or "OFFLINE") of pitrix will be set at MQTT_TOPIC/status.

If you enabled MQTT_REPORT_METRICS, metrics are sent via MQTT every 15 seconds:

  • MQTT_TOPIC/free_heap contains the free heap memory in Bytes.
  • MQTT_TOPIC/uptime contains the uptime of pitrix in seconds.
  • MQTT_TOPIC/fps contains the currently reached frames per second.

If you enabled HTTP server, you can always make GET requests to /free_heap, /uptime or /fps to get those values.

If you enabled DEBUG, log messages will be sent to MQTT_TOPIC/log.

Aknowledgements

Libraries

Library Author Link
PubSubClient knolleary https://pubsubclient.knolleary.net/
FastLED (with small modifications) Daniel Garcia & Mark Kriegsman https://fastled.io
NTPClient (with modifications) https://github.com/arduino-libraries/NTPClient
ESP8266WebServer https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer
ESPAsyncTCP me-no-dev https://github.com/me-no-dev/ESPAsyncTCP

Inspirations and stuff