A smart timer behaviour is a switch behaviour that is allowed to extend itself passed the until time defined.
More...
|
| ExtendedSwitchBehaviour (SwitchBehaviour corebehaviour, PresenceCondition extensioncondition) |
|
virtual | ~ExtendedSwitchBehaviour ()=default |
|
| ExtendedSwitchBehaviour (SerializedDataType arr) |
|
SerializedDataType | serialize () |
|
virtual uint8_t * | serialize (uint8_t *outbuff, size_t max_size) override |
|
virtual size_t | serializedSize () const override |
|
virtual Type | getType () const override |
|
virtual bool | requiresPresence () override |
|
virtual bool | requiresAbsence () override |
|
virtual PresencePredicate | currentPresencePredicate () override |
|
virtual bool | isValid (Time currenttime, PresenceStateDescription currentpresence) |
| Does the behaviour apply to the current situation? Depends on corebehaviour, extensionIsActive and extensionCondition. More...
|
|
virtual void | print () |
|
bool | extensionPeriodIsActive () |
|
virtual bool | isValid (Time currenttime, PresenceStateDescription currentpresence) |
| Does the behaviour apply to the current situation? If from() == until() the behaviour isValid all day. More...
|
|
bool | isValid (PresenceStateDescription currentpresence) |
|
virtual | ~SwitchBehaviour ()=default |
|
| SwitchBehaviour (uint8_t intensity, uint8_t profileid, DayOfWeekBitMask activedaysofweek, TimeOfDay from, TimeOfDay until, PresenceCondition presencecondition) |
|
| SwitchBehaviour (SerializedDataType arr) |
|
SerializedDataType | serialize () |
|
virtual uint8_t * | serialize (uint8_t *outbuff, size_t max_size) override |
|
virtual size_t | serializedSize () const override |
|
virtual Type | getType () const override |
|
virtual void | print () |
|
bool | gracePeriodForPresenceIsActive () |
|
virtual bool | requiresPresence () override |
|
virtual bool | requiresAbsence () override |
|
virtual PresencePredicate | currentPresencePredicate () |
|
virtual bool | isValid (Time currenttime, PresenceStateDescription currentpresence) |
| Does the behaviour apply to the current situation? If from() == until() the behaviour isValid all day. More...
|
|
bool | isValid (PresenceStateDescription currentpresence) |
|
bool | isValid (Time currenttime) |
| Does the behaviour apply to the current situation? If from() == until() the behaviour isValid all day. More...
|
|
virtual | ~Behaviour ()=default |
|
| Behaviour (Type typ, uint8_t intensity, uint8_t profileid, DayOfWeekBitMask activedaysofweek, TimeOfDay from, TimeOfDay until) |
|
| Behaviour (SerializedDataType arr) |
|
SerializedDataType | serialize () |
|
virtual uint8_t * | serialize (uint8_t *outbuff, size_t max_size) |
|
virtual size_t | serializedSize () const |
|
std::vector< uint8_t > | serialized () |
|
virtual void | print () |
|
virtual Type | getType () const |
|
bool | isValid (Time currenttime) |
| Does the behaviour apply to the current situation? If from() == until() the behaviour isValid all day. More...
|
|
virtual bool | requiresPresence () |
|
virtual bool | requiresAbsence () |
|
uint8_t | value () const |
| Returns the intended state when this behaviour is valid. More...
|
|
TimeOfDay | from () const |
| Returns from (incl.) which time on this behaviour applies. More...
|
|
TimeOfDay | until () const |
| Returns until (excl.) which time on this behaviour applies. More...
|
|
A smart timer behaviour is a switch behaviour that is allowed to extend itself passed the until time defined.
The extension is based on a PresenceCondition.
Envisioned use case:
- A dumb timer is annoying because it will turn off a light when a user is in the room. It would be much nicer if it delayed this until the user left.
bool ExtendedSwitchBehaviour::extensionIsActive = false |
|
private |
extensionIsActive will be set to true when at the end of the core behaviour valid period a call to isValid(Time,PresenceCondition) was made that returned true.
When extensionIsActive is true, the isValid(Time,PresenceCondition) function will return true when either the core behaviour isValid is satisfied, or the extensionCondition isValid is satisfied.
extensionIsActive will be reset to false [extensionCondition.timeOut] seconds after the until() value of the core behaviour, unless this timeOut is zero: in that case it will be reset to false as soon as the PresenceCondition evaluates to false.