…and not for serving web applications.
Hi all,
First, I just I wanted a cheap way to make a redundant network for my boat, as I was tired of glitching cables, so i combined the ESP32s built-in wireless and wired for backup and that each could report on the others failures. A win, I felt.
A year later it has grown into a framework that makes it feel like I am developing where I have spent most of my work life, on real servers. (incredible how powerful these tiny MCUs are nowadays compared to when I did assembler on the C64)
And it works pretty well at last, not even that ugly anymore and provides most of the functionality at I need when I want to make my boat…I am not saying think, but at least not sink, at least.
Features:
The thing I feel I use the most is the Pub sub server, it really makes the information flow in the network simple and scalable. Combined with the conductor that times the peer’s sleeping patterns, I get by on very little power even if I have many peers.
- Communication
- redundant communication
- central in/out queues and independent queues per media
- I2C, ESP-NOW, LoRa, CAN bus (TWAI) (and a UMTS/Cellular GW)
- scoring media
- peer management
- presentation, information exchange
- problem solving
- retries over multiple medias
- fragmentation large messages
- redundant communication
- Management
- energy
- sleeping
- synchronized sleep patterns
- KConfig/Menuconfig (not only for ESP-IDF, but also for Arduino, STM32)
- monitoring / reporting / statistics
- services
- runlevels
- energy
- Input handling
- Resistor array
- Binary ladder decoder
- ADC monitor and code generator utility
- Technical
- flash support
- logging
- Misc
- UMTS/GSM gateway + MQTT + OAuth2 https (google drive and stuff)
- Publisher subscriber (Pub sub)
…and other things typically only associated with “big” computer systems. But obviously without their memory footprint and power consumption.
I am thinking about how to perhaps break it apart, but I keep find that things needs each others functionality, again like the larger framework. Also dependencies work slightly but importantly differently on PlatformIO, IDF and Arduino. Either way the #ifdefs keeps the size down, basically it is about me having this general aversion to bloat.
So I have decided to put some serious time into it (and later, sailing), and you want to give it a shot or have any feedback, please take a look here: