Features:

- WiFi Manager Support (captive portal with hotspot)
- MQTT Support both for Subscribing and Publishing
- WebSocket Support both for Sending and Receiving data
- JSON support to handle messaging (both MQTT and WS)
- SD Card Handling and File Ops
- Melody Class with functions to Play/Pause/Stop etc.
- Main BellEngine that runs autonomously
- Custom Relay Timings (saved on-board)
- Onboard RTC support
- Timekeeper class, with functions to track time and call schedules (deprecated. will be removed)
- OTA Update Functionality with Versioning
- Global logger with Mode Selection (None, Error, Warning, Info, Debug)
- NTP Time Sync
- UDP Listener for Auto Device Discovery
- Ability to report (when asked) the list of Melodies on the SD
- Ability to report the list of melodies on both MQTT and WebSocket
- Counters and Statistics:
- Counter for each bell (counts total times the bell ringed)
- Counter per bell, beats/minute for reliability and thermal protection. Warranty Void scenario.

ToDo Features:

- Add Tower Clock Control Support
- Add reset to Factory Defaults button
- Add manual Sync-Time (for No-Connectivity Setups)

- Add Bluetooth support
- Add WiFi Direct AP Support
- Add PCB Temperature Sensor Support
- Move PCB DEV ID out of the Firmware and hardcode it on Device (spiffs or something)

- Counters and Statistics:
- Counter per playback, to figure out which melody is the most played.
This can be implemented on the App itself. Doesn't need to be on the Device.

- Add the ability to assign bells to a "Master Melody" effectively  creating multiple combinations of the same Archetype

- Add CLEAR/FORMAT SD Card function.

ToDo Fixes:

- When STOP Command is sent, don't print debug for Play Settings.
- Start counting the Loop Pause, when the last loop ENDS. Not when the Loop Time ended.