Pixelix

Full RGB LED matrix, based on an ESP32 and WS2812B LEDs.

MIT License

Stars
294

Bot releases are hidden (Show)

Pixelix - Pixelix v7.2.4 Latest Release

Published by BlueAndi 3 months ago

Security Release

The polyfill.io domain was compromised, therefore the polyfill.js is now got from cdnjs.
Article: https://blog.cloudflare.com/polyfill-io-now-available-on-cdnjs-reduce-your-supply-chain-risk

Pixelix uses the polyfill.js to get websocket support in older browsers.

Pixelix - Pixelix v7.2.3

Published by BlueAndi 5 months ago

Bugfixes

General

  • Fixed esp32 RMT false positive report, which caused infinite logs on the console and slowed down the system.
Pixelix - Pixelix v7.2.2

Published by BlueAndi 7 months ago

Bugfixes

General

  • Arduino FFT library updated, because previous used branch was broken.
  • HomeAssistant blueprint fixed.
Pixelix - Pixelix v7.2.1

Published by BlueAndi 9 months ago

Bugfixes

General

  • Sensor data was only updated partly depended on sensor type.
  • Some sensors which provides a float value, may provide NaN. This is handled now.

TempHumidPlugin

  • The humidity was shown with an additional dot on the display, although the value is without the fractional part. This dot is removed.

Notes

  • Please have a look to the REST API v1.4.0 for new functionality.
  • To get all Pixelix features you need a development board with at least 8 MB flash and a dual core ESP32 chip.
  • On a single core ESP32-S2 it may happen that artifacts in the display appear in case of requests to the webserver. Note the LwIP stack and the TCP layer has tasks with higher priority and may access intesively the filesystem.
Pixelix - Pixelix v7.2.0

Published by BlueAndi 10 months ago

Features

General

  • Set "homeassistant" as default discovery prefix.
  • MQTT support added to Ulanzi TC001.
  • RTC suppport added to Ulanzi TC001.
  • With \xHH a character code in hex can be specified inside text to get special characters like the °.
  • Brightness, temperature, humidity and battery sensor values can now be requested via REST API or subscribed to via MQTT.
  • Display can be switched on/off now.
  • The automatic display update is disabled by default. Use the button to enable it.
  • In the serial terminal the IP address can be retrieved by "get ip".

GithubPlugin

  • Replaced by GrabViaRestPlugin.

GrabViaRestPlugin

  • GrabViaRestPlugin implemented to grab data via REST API and show it on the display. See ./doc/grabConfigs/rest for examples.

GrabViaMqttPlugin

  • GrabViaMqttPlugin implemented to subscribe for MQTT topics and show them on the display. See ./doc/grabConfigs/mqtt for examples.

IconTextPlugin

  • The absolute path for the bitmap icon and the sprite sheet can be set directly.

IconTextLampPlugin

  • The absolute path for the bitmap icon and the sprite sheet can be set directly.

OpenWeatherPlugin

  • OpenWeatherPlugin supports the "Current weather" API v2.5, One-Call API v2.5 and One-Call API v3.0.
  • Configure the weather request period in OpenWeatherPlugin to your needs.

ShellyPlugSPlugin

  • Replaced by GrabViaRestPlugin.

ThreeIconPlugin

  • The absolute path for the bitmap icon and the sprite sheet can be set directly.

Improvements

  • Websocket commands optimized in sense of memory consumption.
  • The size of the display in the Display web page will be automatically adapted.
  • File upload dialogs filter now for the appropriate file extensions.
  • Bitmap (.bmp) V5 header support added.
  • Virtual buttons controlled via websocket or REST API can execute all defined button actions.
  • The display page was extended to jump to previous/next slot.
  • The AsyncHttpClient's serialized to have only one outgoing http/https request at a time. This was necessary because a single https request needs about 47 kByte of heap memory and may cause a reset depended on the users configuration and timing.

Bugfixes

  • NTP address handling fixed, which could cause a broken time synchronization.
  • Several small bugfixes.

DDPPlugin

  • DDP protocol fixed to be used by e.g. xlights.

Notes

  • Please have a look to the REST API v1.4.0 for new functionality.
  • To get all Pixelix features you need a development board with at least 8 MB flash and a dual core ESP32 chip.
  • On a single core ESP32-S2 it may happen that artifacts in the display appear in case of requests to the webserver. Note the LwIP stack and the TCP layer has tasks with higher priority and may access intesively the filesystem.
Pixelix - Pixelix v7.1.1

Published by BlueAndi over 1 year ago

Bugfixes

  • Because lack of flash space for 4 MB development boards, the
    • AudioService with the SoundReactivePlugin was removed and therefore
    • BTCQuotePlugin, ShellyPlugSPlugin, VolumioPlugin and WifiStatusPlugin were added.
Pixelix - Pixelix v7.1.0

Published by BlueAndi over 1 year ago

Features

General

  • Support for the Ulanzi TC001 smart pixel clock added.
  • Different LDRs are now supported an be configured in the board.ini per development board.
  • If plugin has no alias, the plugin UID is used to generate a MQTT topic. If a alias is set, only the alias will be used to generate a MQTT topic.
  • If a topic is unregistered, the MQTT HA discovery info will be purged.
  • HomeAssistant entity icon support added.
  • MQTT birth and last will messages implemented.
  • Pixelix can now be switched off. It will go into a light standby mode and disables wifi.
  • Control Pixelix with 1, 2 or 3 buttons, depended on your Pixelix hardware.
  • LED matrix width, height and topology can be configured in the board.ini
  • Supply current can be configured in the board.ini
  • Min. brightness limited to 10%. Default brightness set to 20%.
  • Sensor default offsets can be pre-configured in the Sensors.cpp. This is useful in case of known devices, like the Ulanzi TC001.
  • The BTCQuotePlugin is removed from small configurations, because of less available space.
  • File browser supports now simple uploading of files.
  • Platform updated to v6.3.0.
  • ACE editor updated to v1.22.1.

Plugins

BatteryPlugin

  • New plugin implemented to show the state of charge in a graphical way. Currently only used by the Ulanzi TC001.

IconTextLampPlugin

  • A lamp which is off, is now black and therefore usually not shown.
  • A lamp which is on, is now red.

Bugfixes

General

  • Obsolete PIO keywords (check_patterns) replaced with reccomended ones.
  • SensorPlugin sensor and channel selection fixed.

Plugins

OpenWeatherPlugin

  • Sometimes a "?" with the standard icon was shown instead of the weather icon.
Pixelix - Pixelix v7.0.0

Published by BlueAndi over 1 year ago

Features

General

  • The slot configuration is now stored in the filesystem with the advantage to have up to 16 slots available now. The NVS partition size was too small, therefore it was necessary.
  • Better stability by using AsyncTCPSock library, instead of AsyncTCP.
  • The push URL supports now GET AND POST.
  • The quiet mode can be enabled in the settings. This suppresses system messages and the startup with a wifi connection is much faster.
  • Obsolete setting keys will be automatically removed to prevent slowly increasing the used size on the NVS partition.
  • The dialogs in the web interface are now all based on bootstrap dialogs.
  • The file browser has now a file tree for a better overview.
  • The file browser shows in the upper left corner of the editor the current loaded file.
  • Pixelix its base SW increased in functionaliy and size. Therefore it was not possible anymore to provide all of the available plugins for the development boards with only 4 MB flash. On the other hand more features were requested. The solution was to have different configurations:
  • MQTT service introduced.
  • Home Assistant support for MQTT discovery added for JustTextPlugin, IconTextPlugin and IconTextLampPlugin.
  • A scrollbar for the web interface menu's is automatically shown for small mobile displays.
  • Mini-terminal implemented, mainly for developing purposes in case Pixelix is connected via USB to the PC.
    • Commands:
      • ping - Response is just pong. Used for testing.
      • reset - Restarts Pixelix
      • write wifi ssid <YOUR-SSID> - Write wifi SSD.
      • write wifi passhprase <YOUR-PASSHPRASE> - Write wifi passphrase.
  • Board v2.1 schematic available. Not finished yet, anyway it already has some improvements to v2.0
  • WEMOS Lolin S2 Mini support added.
  • M5Stack Core support added.
  • Sensors can be calibrated with an offset.
  • All 3rd party libs updated.
  • And a lot of other minor things. :-)

Plugins

  • In general the REST API of the plugins were improved in sense of having a REST API and MQTT API.

DateTimePlugin

  • The date and time format can be set now different per instance. The configuration will be stored in the filesystem.
  • Every instance can be configured with its own timezone.
  • The color of date, time and day of the week can be configured.

DDPPlugin

  • Districuted Display Protocol (DDP) implemented (unbuffered), used by e.g. xlights.

OpenWeatherPlugin

  • Supports animated weather icons.
  • See icon page.

SignalDetectorPlugin

  • New plugin able to detect signals via digital microphone, triggering a URL and showing information on the display.

SoundReactivePlugin

  • Spectrum is reacting faster by using half of precision for FFT.

WormPlugin

  • New plugin with moving worms, eating some food and sometimes explode.

Bugfixes

ThreeIconPlugin

  • The repeat state was not updated after a power-up, therefore no animation was running.

Breaking Changes

  • Please have a look to the REST API v1.3.0. Unfortunately it was necessary to change some of the existing features.
Pixelix - Pixelix v6.0.0

Published by BlueAndi almost 2 years ago

Features/Improvements

General

  • Support for different font sizes added. Default is the TomThumb font with 6 pixel height. Additional the muFont is a large font with 8 pixel height. All plugins consider that font height in their layout.
  • The welcome message is shown if the plugin configuration is empty or the plugin in the 2nd slot is from type "IconTextPlugin" and contain "#welcome" as alias.
  • A backup for all plugin configurations can now be made in the webinterface before updating the filesystem. A backup can be restored as well in the webinterface. See update page.
  • Pixelix HW board 2.0 was born. :-)
  • Development board support added:
    • Lilygo® ESP32 T-Display S3
    • Adafruit ESP32 Feather V2
    • AZ-Delivery ESP-32 Dev Kit C V4
  • Homeassistant REST wrapper configuration for the JustTextPlugin added.
  • Max. number of slots decreased to 10. This was necessary because the plugin configuration is stored in the persistent flash section, which has some size limitations.
  • Less space usage in filesystem by using gzipped files and removed meta information (EXIF, etc.) in jpeg files.
  • File editor retrieves the file tree directory for directory. This is a little bit slower, but avoids triggering the task watchdog.
  • The introduced reset monitor shows periodically how many resets happended and the cause of the latest one in the log.
  • Added further spritesheet examples.
  • Pixelix will notify the online status only if there is no error during startup.
  • esp_log_write() messages no longer piped through own log system.
  • A slot can be activated now via REST, see REST v2.1
  • One slot can be set sticky which will activate the slot and stop the slot scheduling. It can be set/cleared via REST, see REST v2.1
  • Firmware and fileystem can be updated via webinterface at once (multi-select in the file browse dialog).
  • PSRam is shown in the debug info webpage.
  • The user button supports more actions:
    • On short pulse: Activates the next slot.
    • Two short pulses: Activates next fade effect.
    • Five short pulses: IP address is shown.
    • Long pressed: Increases the display brightness until maximum and then decreases until minimum. After that it will again increases it and so on.
  • Show WiFi MAC address in the captive portal web page. This is helpful in case the WiFi network blocks unknown devices and it must be configured first.
  • REST API updated: v1.2.1

Plugins

  • Plugins know now the current network connection status.
  • JustTextPlugin, IconTextPlugin and IconTextLampPlugin
    • If no text is set, the plugin will be skipped in the slot.
  • DateTimePlugin
    • A question mark is shown in case the clock information is not available. This will be shown at startup until the network connection to the time server is available.
    • The date/time format can now be configured more precisely in the settings how it shall look like.
    • DateTimePlugin date/time switching was not working properly in case its the only active plugin.

Others

  • 3rd party libraries updated.
  • I2S workaround added for selecting the channel. Problem caused with Arduino v2.0.4 (#93).
  • 16 MB flash partition workaround added to support the Lilygo® ESP32 T-Display S3. Problem caused by the esptool.py (https://github.com/espressif/esptool/issues/795).

Breaking changes

  • Filesystem changed from SPIFFS to LittleFS. An update via USB will be necessary, don't use OTA update.
Pixelix - Pixelix v5.0.3

Published by BlueAndi over 2 years ago

Bugfix version

  • Supports PlatformIO v6.1.1
  • Supports Unity v2.5.2
Pixelix - Pixelix v5.0.2

Published by BlueAndi over 2 years ago

Bugfix version

  • Alternative OpenWeatherPlugin icons added, thanks to NSD4rKn3SS.
  • Installation procedure improved.
  • Circular dependency between concrete HAL and Sensors library fixed.
  • Logging extended with DEBUG and TRACE logging. Both are disabled by default.
  • Program space reduced.
  • Unused icons removed to have more space in the filesystem.
Pixelix - Pixelix v5.0.1

Published by BlueAndi over 2 years ago

Bugfix version

  • Release workflow deployed .zip with binaries, but with full path.
  • DateTimePlugin REST API usage in web page fixed (wrong path).
  • SoundReactivePlugin web page structure fixed.
  • ThreeIconPlugin REST API handling in web page fixed and missing parts implemented.
  • Uploads to plugins are now checked whether its enough space in the filesystem available.
  • Because the main application error strategy is without C++ exceptions, the operator new shall be used with std::nothrow otherwise a reset appears.
  • Authentication removed from captive portal, because some mobile devices have problems with their connection checker apps.
  • Filesystem space improvements, especially in the web pages.
  • Some further minor stuff, see commit logs.
Pixelix - Pixelix v5.0.0

Published by BlueAndi over 2 years ago

Features

  • REST API in v1.2.0
  • Own bitmap image loader implemented in order to replace the one from NeoPixelBus.
  • The BitmapWidget got now a sprite sheet feature for animated images. It was integrated to the following plugins:
    • IconTextPlugin
    • IconTextLampPlugin
    • ThreeIconPlugin
  • The online status is reported if a corresponding "push" URL has been configured in the settings.
  • The display shows an low level error code to make the inital startup easier.
  • The file editor is now able to edit the sprite sheet parameter files.
  • Plugins:
    • SoundreactivePlugin implemented showing a bar graph, which represents the frequency bands.
    • DateTimePlugin got a REST API to be able to configure what shall be shown (date and/or time). Therefore DatePlugin and TimePlugin were removed.
    • ThreeIconPlugin implemented which is able to show three separated icons in a row. This way triggered animations can show e.g. that your garage door is opening or your lamp is on/off.
    • "The Matrix" graphical demo plugin implemented.

Improvements

  • Python scripts are now PEP8 compliant.
  • Settings are now accessible via REST API.
  • The plugin alias name can now be set in the web interface.
  • HAL for LED Matrix updated according to latest GFX changes.
  • TextWidget moved the text one pixel line lower for better look.
  • Precomiled binaries are now available for all environments (USB variant), except native environment.
  • The default brightness is now available in the settings and can be changed via webinterface.
  • Documentation contains now a minimal hardware setup.
  • Accept any 3rd party lib version with the same major and minor versions, and an equal or greater patch version.
  • 3rd party libs:
    • bodmer/TFT_eSPI update to v2.4.1
    • ArduinoJson updated to 6.19.1
    • jQuery updated to v3.6.0
    • esp32 platform updated to v3.5.0
    • arduinoFFT V1.5.6 added.

Bugfixes:

  • Several smaller bugfixes, see commit log.

Breaking changes

  • The BaseGfx provides now a default constructor. This enables the static creation of subclasses.
  • The Canvas was replaced by WidgetGroup, which only handles groups of widgets.
  • Use YAGfxBitmap instead of own pixel buffer handling.
  • Own handled framebuffers replaced with bitmap containers.

⚠️ This will effect your own written plugins! Please update them by comparing with other already updated plugins.

Pixelix - Pixelix v4.1.2

Published by BlueAndi almost 3 years ago

Bugfix version

  • If a low level error occurres in InitState, a error code will be shown on the display to guide the user. See error codes in the FAQ.
  • The low level error codes will help users e.g. who program their own Pixelix the first time and forgot to upload the filesystem.

Important notes:

  • During startup the system will check for version.json file in the root directory. If the file is not available, the error code "E4" will be shown. In this case, please upload the filesystem too. ;-)
  • If the version.json is available, the version inside must match with the firmware version, otherwise an additional warning will appear in the display with the hint, that the filesystem may not be compatible.
  • If you update from a previous version via over-the-air, update first the filesystem and afterwards the firmware!
Pixelix - Pixelix v4.1.1

Published by BlueAndi almost 3 years ago

Bugfix version

  • Digital in (INPUT) template fixed.
  • SensorPlugin website original could only handle the first sensor right. Now it can handles separate sensors correct.
  • 3rd party libs updated:
    • bodmer/TFT_eSPI compatible versions are now accepted.

Note: Some users may not have a LDR like the GL5528 connected. In this case the pin is floating and the sensor may be detected as available at startup. This is no bug! ;-) Unfortunately it is not possible to check for a open-circuit with pin 34, where the LDR is currently expected.

Pixelix - Pixelix v4.1.0

Published by BlueAndi almost 3 years ago

Minor feature release

  • https support integrated to AsyncHttpClient by using AsyncTcpSock lib.
  • The settings are now accessible via the REST API.
  • Secret settings are now handled like a password in the web interface. Note, the webserver doesn't support https, therefore all data is transfered without encryption.
  • The plugin alias names can now be changed in the web interface. No reboot is necessary afterwards.
  • Plugins:
    • GithubPlugin implemented which shows the stargazers count on the display.
  • 3rd party libs:
    • esp32 platform updated to v3.4.0
    • TFT_eSPI updated to v2.4.1
Pixelix - Pixelix v4.0.1

Published by BlueAndi almost 3 years ago

Bugfix version

  • Humidity fixed in TempHumidPlugin. Thanks ReinVelt.
  • Plugin development documentation improved.
  • 3rd party libs updated:
    • espressif32 platform update to v3.3.2
    • NeoPixelBus update to v2.6.7
    • ArduinoJson update to v6.18.5
    • StreamUtils update to v1.6.1
    • arduino-sht update to v1.2.1
Pixelix - Pixelix v4.0.0

Published by BlueAndi over 3 years ago

Features:

  • In general different kind of HALs are supported now, which can be configured in the PIO configuration.
  • TTGO T-Display ESP32 board support added.
  • AZ-Delivery ESP-32 Dev Kit C V4 support added.
  • General sensor platform implemented, where easily further sensors can be added, without changing the main application itself.
  • DHTx and SHT3x sensor support added.
  • SensorPlugin added, which shows the selected sensor channel information on the display. Note, a sensor may have several channels, like e.g. temperature and humidity.
  • GL5528 LDR added to sensor platform.
  • TempHumidPlugin added.
  • 3rd party libs updated.
  • SW build instructions improved.
  • Toolchain instructions improved.
  • Plugin development guideline added.
  • The scrolling behaviour of the TextWidget was refactored. If the current text is scrolling and new text is set, the change won't be recognized by the user as a "jump" anymore. The new text will just scroll in nice. If scrolling text contains alignment commands, they will be ignored.
  • Plugin alias names support added. What does that mean? Assign a alias name to a plugin instance and the alias can be used instead of the plugin UID. Note, currently the alias name can only be assigned in the settings. There is no user friendly web interface right now.
  • Many other changes under the hood, as well as bugfixes. See the commit history for detail.

Breaking Changes:

  • The REST API was changed a little bit, to support the open API concept. See https://app.swaggerhub.com/apis/BlueAndi/Pixelix/1.1.0. Please update your external scripts and etc.
  • The flash must be erased, before programming the new firmware! This is because the partition table changed for every PIO environment.
Pixelix - Pixelix v3.0.2

Published by BlueAndi over 3 years ago

Bugfix release

  • #51: Characters which probably causes python UnicodeDecodeError removed.
Pixelix - Pixelix v3.0.1

Published by BlueAndi over 3 years ago

Bugfix release

  • #50: 32-bit unsigned integer values were not correct handled. This caused that the scroll pause, which can be set via settings, always returned the default value.
  • Display update timing statistics implemented for debugging purposes. Can be enabled by preprocessor define CONFIG_DISPLAY_MGR_ENABLE_STATISTICS in platformio.ini. Default: disabled