Replaces Arduino IDE with PlatformIO as the build system. Entry point
moved from vesper.ino to src/main.cpp. All library dependencies are now
declared in platformio.ini and downloaded automatically via lib_deps.
Board: Kincony KC868-A6 (ESP32-S3, 4MB flash) → env:vesper-v1
Future variants Vesper+ and Vesper Pro are pre-configured but commented out.
Compatibility fixes applied for this framework version:
- Removed ETH.h dependency (Ethernet was disabled in v138)
- Watchdog init updated to IDF v4 API (esp_task_wdt_init signature)
- ETH.linkUp() check removed from OTAManager
Also adds .pio/ to .gitignore and commits the manufacturing plan docs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Refactored logging system to require a TAG as first argument on all
LOG_* macros, enabling per-subsystem log filtering and cleaner output.
Each subsystem now defines its own TAG (e.g. "BellEngine", "Player").
Also overhauled Logging.hpp/cpp with improved level control and output.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Added Websocket Support
Added Universal Message Handling for both MQTT and WS
Added Timekeeper Class, that handles Physical Clock and Scheduling
Added Bell Assignment Settings, Note to Bell mapping
A JSON message can now be received on:
'vesper/DEV_ID/control/addSchedule"
Each message, must hold a "file" and "data".
The file is the month's name in 3 letter mode (eg jan, feb, mar)
The data is an entry for each day of the month.
Each day can be an array containing multiple items.
The setting is saved on a file in:
/settings/relayTimings.json
Then during bootup, it's read and restored.
Settings can be set via MQTT command on Topic:
vesoer/*dev-id*/control/settings/relayTimers
using a json format.
{ "b1":50, b2...}
where b1 is Bell 1, b2 Bell 2, etc..
A new Melody Struct was added containing the melody's main attributes.
The MQTT Topic Subscriptions were updated to a more proper format.
Also added DEV_ID that corresponds to the device's ID or Serial Number.
Chnaged the Deserialization function to actually adjust the MelodyStruct's attributes.
Added basic play/stop functionality.