A generic data serialization and transmission module. Send ints, unsigned ints, floats between C, node, python, javascript, using websockets or UDP. More x-platform and communication protocols coming soon.
- Stream data easily between networked devices
- Control embedded devices easily from the browser, or from your own desktop applications
- Log data from networked embedded devices into structured datasets (csv, netCDF) incredibly easily
- Live-plot information dense content at relatively high datarates.
Below, we have a python script streaming audio from my PC to an embedded ESP32 smart speaker.
-
The python script reads the audio streaming to my output device, uses the blob python API to transmit it to the blob server.
-
The blob server forwards the packet to the ESP32 which has the blob C++ API retreiving the packets.
-
The ESP32 is then performing a real-time RMS calculation on the device, and playing the audio out of its speakers.
-
The ESP32 then uses the blob C++ API to transmit the RMS information back to the server.
-
The server is simultaneously forwarding both the computer's output audio and the ESP32's calculated RMS to a webbrowser interface, which is used to easily plot these variables in real-time.
blob_demo.mov
- C/C++ development on Linux and OSX.
- C/C++ development on ESP32. Tested specifically on ESP32-S3 devices*.
- Python development on all platforms.
- Javascript (browser) via websockets
- Javscript (node) via websockets and UDP
- There is a current limitation on a given received UDP packet size < 1472 bytes for ESP32 devices. This is due to ESP32 AsyncUDP not handling UDP fragmentation.