All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- CLI command to emulate stop button being pressed.
- CLI command to print active alarms.
- CLI now also sends Serial_change_character when alarm configuration changes.
- CLI command to print all status information at once (
status
). Useful as a response toSerial_change_character
to know what changed. - CLI
status
command now prints display backlight status. - Ambient LED can now be controlled by snooze button long press.
- Speaker clicking when going from
noTone
totone
orsilence
.
- Support for PWM generated sine wave audio output.
- Support for melodies.
- CLI now sends the BEL character (
0x07
) every time the state of the hardware (ambient, lamp) or settings (inhibit) changes. - Native unit tests.
- Support for the new PCB.
- LCD backlight dimming (night mode).
version
(git commit id, tag and similar) inver
CLI command.
- EEPROM data storage format. The section that contains alarms has been moved.
All preexisting alarm configuration will be lost after upgrading to this
version. WARNING braking changes in EEPROM handling.
You should be able to migrate your current alarm config using PyAlarmClock:
import PyAlarmClock ac = PyAlarmClock.SerialAlarmClock('/dev/ttyUSB0') alarms = ac.read_alarms() ac.close() # Upload new firmware now ac = PyAlarmClock.SerialAlarmClock('/dev/ttyUSB0') for index,alarm in enumerate(alarms): ac.write_alarm(index, alarm) ac.save_EEPROM() ac.close()
- Default value of
Alarm_ambient_fade_out_duration
is now 10 seconds instead of 2. - Firmware is now compiled using PlatformIO instead of Arduino IDE.
A
Makefile
has been added. - Buttons now need external pull-up resistors.
- Disabled days of the week are now indicated by a
-
instead of a space in GUI configuration of alarms. - Format of
build time
inver
CLI command.
- DEBUG EEPROM dump after boot - this is no longer useful now that we have
the
eer
CLI command
- Potential out-of-bounds write in SerialCLI.
- Uninitialized variable in PWMDimmer.
- Support for backspace key in Serial CLI
- Buzzer should beep when RTC failure is detected
- Incompatibility with new RTClib
- CLI rework. It should be much easier to parse. Commands now output YAML.
WARNING: breaking changes in CLI
- Alarm could be missed if it's first scheduled activation is within a 1 minute wide window at around 43 days of runtime
- Watchdog timer (WDT)
- Ambient starts
Alarm_ambient_dimming_duration
before the alarm triggers, so that it already has full brightness when the alarm triggers. - Countdown timer feature.
dis
command in CLI changed toen-off
for consistency WARNING: breaking API change- CLI command recognition optimized
- Alarm indexes in GUI now start from 0 instead of 1 (to be consistent with CLI).
- Up to 16 alarms
- Date and time format changed to ISO8601. WARNING: CLI commands changed.
- Default
Alarm_timeout
changed from 30 minutes to 15 minutes
- Alarm disables buzzer even if it did not enable it.
- Alarm disables buzzer and lamp twice when stopped in snooze.
- Unit tests
- Doxygen documentation (incomplete)
- "Skip" added to Alarm "Enabled" options
- Timeout for alarms - the alarm stops if it is active for too long
- User input validation for the date supplied to the
sd
command and in the RTC section of the GUI.
- Better LCD backlight control
- Buzzer collisions - multiple alarms active at the same time caused unpredictable behavior of the buzzer
- Alarm signalization option 'lamp' could not be unset due to a command processing error
- CHANGELOG.md
- Checklist for releasing
- manual.md
- GUI - 16x2 LCD display and rotary encoder
WARNING: New pinout: 2, 3, A2 - encoder; lamp is now on pin 10- Inhibit function (see manual)
- Mode for active buzzers
- CLI commands for controlling the ambient LED, fading reworked
- GUI interface for controlling the ambient LED
- CLI commands for controlling the lamp pin
- GUI button for controlling the lamp pin
- CLI commands for controlling alarm inhibit
- Repository tree (source is now in
src
directory, ...) - Checklist for tests
- Constants are now separated from user-configurable settings
- Alarm option 'Enabled' can now be Single|Repeat|Off.
This unlocks the ability to configure an alarm to automatically disable after
it rings once.
WARNING: Old enabled alarms written in EEPROM will now become 'Single' enabled. - Alarm record format in the EEPROM
WARNING: This breaks old EEPROM records and may perform a factory reset when first used, because minutes and/or hours of the old record may exceed the limits (23 h 59 min) when interpreted as the new format. - Serial CLI now requires commands (messages) to be terminated by CR, LF or CRLF
- Serial CLI error codes reworked
- Setting descriptions are now in
src/AlarmClock/Settings.h
- Long forms of some commands in Serial CLI
- Visual Studio support (I don't use it anymore, so I can't update the files)
- Snooze count being offset by 1 (2 meant 1, 0 wasn't handled properly ('last ringing' feature did not trigger))
dow0;1
not failing although it should- Arduino requesting current time from the DS3231 with very small intervals
- Comparison of results of floating point math using
==
in PWMfade - PWMfade (ambient LED dimmer) should now be more fluent
- PWMfade renamed to PWMDimmer
First working version
- Configurable alarms (default = 6, can be changed in
Settings.h
) - Command line interface (CLI) for configuration (over UART)
- Compile time option for DEBUG output (printed over UART)
- Support for dimmable LED strip controlled by alarms (called 'ambient', dimming using PWM)
- Support for On/Off output controlled by alarms (called 'lamp')
- Checklist for tests (used during development)