ESPHome 2026.5.0-dev
Loading...
Searching...
No Matches
automation.h
Go to the documentation of this file.
1#pragma once
2
6
7namespace esphome::lock {
8
9template<typename... Ts> class LockAction : public Action<Ts...> {
10 public:
11 explicit LockAction(Lock *a_lock) : lock_(a_lock) {}
12
13 void play(const Ts &...x) override { this->lock_->lock(); }
14
15 protected:
17};
18
19template<typename... Ts> class UnlockAction : public Action<Ts...> {
20 public:
21 explicit UnlockAction(Lock *a_lock) : lock_(a_lock) {}
22
23 void play(const Ts &...x) override { this->lock_->unlock(); }
24
25 protected:
27};
28
29template<typename... Ts> class OpenAction : public Action<Ts...> {
30 public:
31 explicit OpenAction(Lock *a_lock) : lock_(a_lock) {}
32
33 void play(const Ts &...x) override { this->lock_->open(); }
34
35 protected:
37};
38
39template<typename... Ts> class LockCondition : public Condition<Ts...> {
40 public:
41 LockCondition(Lock *parent, bool state) : parent_(parent), state_(state) {}
42 bool check(const Ts &...x) override {
44 return this->parent_->state == check_state;
45 }
46
47 protected:
49 bool state_;
50};
51
54template<LockState State> struct LockStateForwarder {
57 if (state == State)
58 this->automation->trigger();
59 }
60};
61
62static_assert(sizeof(LockStateForwarder<LockState::LOCK_STATE_LOCKED>) <= sizeof(void *));
63static_assert(std::is_trivially_copyable_v<LockStateForwarder<LockState::LOCK_STATE_LOCKED>>);
64
65} // namespace esphome::lock
void trigger(const Ts &...x) ESPHOME_ALWAYS_INLINE
Definition automation.h:642
Base class for all automation conditions.
Definition automation.h:459
LockAction(Lock *a_lock)
Definition automation.h:11
void play(const Ts &...x) override
Definition automation.h:13
LockCondition(Lock *parent, bool state)
Definition automation.h:41
bool check(const Ts &...x) override
Definition automation.h:42
Base class for all locks.
Definition lock.h:110
void lock()
Turn this lock on.
Definition lock.cpp:28
LockState state
The current reported state of the lock.
Definition lock.h:129
void unlock()
Turn this lock off.
Definition lock.cpp:29
void open()
Open (unlatch) this lock.
Definition lock.cpp:30
void play(const Ts &...x) override
Definition automation.h:33
OpenAction(Lock *a_lock)
Definition automation.h:31
void play(const Ts &...x) override
Definition automation.h:23
bool state
Definition fan.h:2
LockState
Enum for all states a lock can be in.
Definition lock.h:23
@ LOCK_STATE_UNLOCKED
Definition lock.h:26
@ LOCK_STATE_LOCKED
Definition lock.h:25
Callback forwarder that triggers an Automation<> only when a specific lock state is entered.
Definition automation.h:54
void operator()(LockState state) const
Definition automation.h:56
uint16_t x
Definition tt21100.cpp:5