- allow to specify year, month and day in addition to weekdays and time
2024-05-15 Monday 00:00 <=> runs *only* on May 15th 2024
year is optional, 05-15 <=> any May 15th on any year
- last day of month, Nth week, reversed day-of-month (starting from last)
*-W1 00:00 <==> run at midnight on the first week of month
01-L2 6:00 <==> run at six, but only on the second to last day of January
05-L 12:00 <==> run at twelve, but only on the last day of May
- allow multiple time settings per schedule specified as ranges
12,13,14:00 <=> run at 12:00, 13:00 and 14:00
Friday..Sunday 12:00 <=> run at 12:00, but only only on Friday, Saturday and Sunday
- similar to weekdays default, allow asterisk (*) to avoid using exact value
*:30 <=> every hour at 30 minutes
10:* <=> every minute at 10 o'clock
- repetition value for more control over steps between runs
*:0/5 <==> every 5 minutes, starting with 0
0/2:00 <==> every 2 hours, starting with 0
- rework api and settings storage to use 1 key for time setting
type and 'enabled' state moved into one
- implement sunrise & sunset suggested in #2417
should be specified instead of HH:MM
note that there is an issue with overload resolution, since template
requires serilize() to be available *before template* and not at the
point of the caller.
serialize converted to template should fix it, though
purge timers based on target status, do not check 'armed' state
allow to schedule timer and keep it inactive until relay loop
fixing bug with pulse api not respecting before / after delays.
activate timers when switching to an opposite state.
deactive existing timers when with the same state.
print debug after completing actions, making sure accidental yield would
not change expected state while still modifying it
- configure magnitudes right after they are created.
if any sensor fails begin(), this would leave .filter uninitialized
- poll on flags instead of raw timestamps.
minor change to get rid of the init state.
- system::timer::SystemTimerFlag -> system::ReadyFlag
ref. #2543
search the bus preemptively and create sensor instances based on that
more clean-up for error handling, allow specific device to fail independently
most of the sensor was re-written
- general one-wire operations are part of the system driver now
- split class definitions for digital and temperature sensors
- system timer instead of polling, enforce ordering by forcing specific
instance to handle conversion request, while notifying every other ones
- synchronize readings and conversion requests with the sensor reading
interval, instead of relying on internal polling. now, it happens
right after begin() and pre() instead of previosly (almost) random tick() calls
- auto-detect conversion time based on device resolution / resolution setting
initialization also adds runtime settings (read on boot)
- `dallasPin` to set current one-wire pin
- `dallasParasite` to change from non-powered mode (default is still on)
- `dallasResolution` to force sensor to be operated using 9...12bit res
(0 to keep default one)