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.