Love your work, by the way. I enjoyed your episode on the Luminous Arts Podcast. Thanks for using Pixelblaze.
Sorcerer is right, no ESPNOW for now, and sync mode is probably the simplest way to do what you want.
If you want to have full external programmatic control of pattern selection and don’t want to or can’t run a RPi with Firestorm, there’s two ways I can think of.
First, you could develop your own ESP32 program that sends the websocket commands for changing patterns. There are a few more internal API commands that might help (like “next”) - It might be easiest to observe it over the wire with a browser’s inspector or Wireshark, but Firestorm is open source, so here are the relevant lines if you prefer JS:
Another great open source resource is ZRanger’s python library for controlling Pixelblaze, pixelblaze-client.
- Set the active pattern by ID
- Activate next pattern in the current sequencer / playlist
The second way, using GPIO, would involve copy-pasting a small block of sequencer index management code into each of your patterns (because there’s unfortunately not a shared import or global code block we can set that’s always running… yet). Inside that block, you’d declare your IO input pins and trigger one or more of the Pixelblaze language API sequencer management commands added recently. See playlistSetPosition(position)
and the previous()
example there.