Package: pixoo-ng
Pixoo_NGA library to easily communicate with the Divoom Pixoo 64 (and hopefully soon more screens that support Wi-Fi) based on the work ofSomethingWithComputers. All credit should go to them.A simple working example application using this "rendering" framework can be found
here:https://github.com/SomethingWithComputers/pixoo-bananoTested on a Pixoo 64, with Python 3.10 on MacOS Monterey and on Windows 11.The all new SimulatorSimulator might be a bit of a big word, but if you want to test your own drawing stuff,
there is a simple "simulator" included that can render the buffer to a GUI so it's easier to debug without having to connect
to the device.It's in a very early stage, but it supports all methods that start withdraw_and can be "pushed" to the GUI, just
the way you'd use it normally.NOTE:When enabling and using the simulator, the actual connection to the device will be completely ignored. So
don't expect to see anything on your device when simulating.The simulator can be activated as such:pixoo=Pixoo('192.168.1.137',simulated=True,simulation_config=SimulatorConfig(4))The SimulatorConfigcurrentlyonly takes one argument, which is thescaleto display the images at. Should be 1 or a
multiple of 2 if you want nice looking results. It seems like 4 and 8 are working great, in my experience. Withscaleset to 4 it'll look like this on MacOS:InstallationYou can install the pixoo_ng package as developer locally with next command running from cloned folder:python-mpipinstall-e.Or simply install the required dependencies via PIP. Navigate to the directory where you installed this library. Then
execute:pip3install-rrequirements.txtInstall the requirements.txt via pip installOn some newer versions of MacOS, if you want to use the simulator you might have to manually install thetkinterlibrary. E.g., use brew:brewinstallpython-tkOr install directly from PyPi:pip3installpixoo_ngsGetting startedCreate an interface with your device as such (of course use your own local IP-address):If you don't know your device IP and you have just one Pixoo device in your network, you can skip the address
argument and Pixoo will automatically identify the device in your network and use that address for the connection.pixoo=Pixoo()If you know your Pixoo device IP or you have more than one device in your network, you can enter teh device local address.pixoo=Pixoo('192.168.1.137')For now, the easiest way to learn how to use this library is to check theexamples.py, and the example directory for a
neat project. I'll be adding examples to this page over time as well, once the project matures a bit more.NOTE:Be sure to callpush()after performing all your draw actions, to push the internal buffer to the screen. *
Try to not call this method more than once per second if you don't want the device to stop responding!*UsageStability increaseUse therefresh_connection_automaticallyboolean variable in the constructor ofPixooto force a reset of the
internal
counter on the device. This should
make the application much more stable at the expensive of a slight delay in updating every 32 frames.
I haven't tested it myself just yet, but theoretically this would solve
the"After updating the screen +/- 300 times the display stops responding"bug.Special thanksPICO-8's fantastic low-res fontSpecial thanks goes to the fantasticPICO-8and its creator. I've written a
small script to convert the font to simple pixel matrixes, which are used as "glyphs" within thedraw_textmethods.Supported characters so far are:0123456789
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
!'()+,-<=>?[]^_:;./{|}~$@%GICKO alternative fontSpecial thanks goes togickowtfwho added the GICKO alternative font and also
contributed flexible spacing to display wider and narrower letters so that they do not necessarily have to be three
pixels wide.Known bugsPrevious buffer/image is still partially visibleUnfortunately, the Divoom Pixoo 64 doesn't seem quite ready for prime time-yet. There are some known buffer issues
that can cause issues, basically meaning that parts of the previous image are still displayed even though a newer image
has been pushed to the display. I'm sure this will be fixed in the future though, the dev team seems to be working hard!After updating the screen +/- 300 times the display stops respondingThis seems to be an internal bug with the current firmware. I'll update the code once a better way to push a buffer to
the screen becomes available.TextScrollDirection.RIGHT seems to invert the string.. and some other issues. Seems like for now, text can only really be scrolling left with most fonts. This will likely (
hopefully?) be fixed by the dev team in the future.