|
ESPHome 2026.9.0
|
Base class for all locks. More...
#include <lock.h>
Public Member Functions | |
| Lock () | |
| LockCall | make_call () |
| Make a lock device control call, this is used to control the lock device, see the LockCall description for more info. | |
| void | publish_state (LockState state) |
| Publish a state to the front-end from the back-end. | |
| void | lock () |
| Turn this lock on. | |
| void | unlock () |
| Turn this lock off. | |
| void | open () |
| Open (unlatch) this lock. | |
| template<typename F > | |
| void | add_on_state_callback (F &&callback) |
| Set callback for state changes. | |
Public Member Functions inherited from esphome::EntityBase | |
| const StringRef & | get_name () const |
| bool | has_own_name () const |
| uint32_t | get_object_id_hash () const |
| StringRef | get_object_id_to (std::span< char, OBJECT_ID_MAX_LEN > buf) const |
| Get object_id with zero heap allocation For static case: returns StringRef to internal storage (buffer unused) For dynamic case: formats into buffer and returns StringRef to buffer. | |
| size_t | write_object_id_to (char *buf, size_t buf_size) const |
| Write object_id directly to buffer, returns length written (excluding null) Useful for building compound strings without intermediate buffer. | |
| bool | is_internal () const |
| void | set_internal (bool internal) |
| bool | is_disabled_by_default () const |
| EntityCategory | get_entity_category () const |
| const char * | get_device_class_to (std::span< char, MAX_DEVICE_CLASS_LENGTH > buffer) const |
| StringRef | get_unit_of_measurement_ref () const |
| const char * | get_icon_to (std::span< char, MAX_ICON_LENGTH > buffer) const |
| uint32_t | get_device_id () const |
| Device * | get_device () const |
| bool | has_state () const |
| void | set_has_state (bool state) |
| ESPDEPRECATED ("Use make_entity_preference<T>() instead, or preferences won't be migrated. " "See https://github.com/esphome/backlog/issues/85. Will be removed in 2027.1.0.", "2026.7.0") uint32_t get_preference_hash() | |
| Get a unique hash for storing preferences/settings for this entity. | |
| template<typename T > | |
| ESPPreferenceObject | make_entity_preference (uint32_t version=0) |
| Create a preference object for storing this entity's state/settings. | |
Data Fields | |
| LockState | state {LOCK_STATE_NONE} |
| The current reported state of the lock. | |
| LockTraits | traits |
Protected Member Functions | |
| void | set_state_ (LockState state) |
| Helper for lock/unlock convenience methods. | |
| virtual void | open_latch () |
| Perform the open latch action with hardware. | |
| virtual void | control (const LockCall &call)=0 |
| Control the lock device, this is a virtual method that each lock integration must implement. | |
Protected Member Functions inherited from esphome::EntityBase | |
| friend | void::setup () |
| friend | void::original_setup () |
| void | configure_entity_ (const char *name, uint32_t object_id_hash, uint32_t entity_fields) |
| Combined entity setup from codegen: set name, object_id hash, entity string indices, and flags. | |
| void | set_device_ (Device *device) |
| ESPPreferenceObject | make_entity_preference_ (size_t size, uint32_t version) |
| Non-template helper for make_entity_preference() to avoid code bloat. | |
| void | calc_object_id_ () |
Protected Attributes | |
| friend | LockCall |
| LazyCallbackManager< void(LockState)> | state_callback_ {} |
| Deduplicator< LockState > | publish_dedup_ |
| ESPPreferenceObject | rtc_ |
Protected Attributes inherited from esphome::EntityBase | |
| StringRef | name_ |
| uint32_t | object_id_hash_ {} |
| Device * | device_ {} |
| struct esphome::EntityBase::EntityFlags | flags_ |
| uint8_t | device_class_idx_ {} |
| uint8_t | uom_idx_ {} |
| uint8_t | icon_idx_ {} |
Base class for all locks.
A lock is basically a switch with a combination of a binary sensor (for reporting lock values) and a write_state method that writes a state to the hardware. Locks can also have an "open" method to unlatch.
For integrations: Integrations must implement the method control(). Control will be called with the arguments supplied by the user and should be used to control all values of the lock.
|
inline |
|
protectedpure virtual |
Control the lock device, this is a virtual method that each lock integration must implement.
See more info in LockCall. The integration should check all of its values in this method and set them accordingly. At the end of the call, the integration must call publish_state() to notify the frontend of a changed state.
| call | The LockCall instance encoding all attribute changes. |
Implemented in esphome::copy::CopyLock, esphome::demo::DemoLock, esphome::output::OutputLock, and esphome::template_::TemplateLock.
| void esphome::lock::Lock::lock | ( | ) |
| LockCall esphome::lock::Lock::make_call | ( | ) |
| void esphome::lock::Lock::open | ( | ) |
|
inlineprotectedvirtual |
Perform the open latch action with hardware.
This method is optional to implement when creating a new lock.
In the implementation of this method, it is recommended you also call publish_state with "unlock" to acknowledge that the state was written to the hardware.
Reimplemented in esphome::template_::TemplateLock.
| void esphome::lock::Lock::publish_state | ( | LockState | state | ) |
|
protected |
| void esphome::lock::Lock::unlock | ( | ) |
|
protected |
|
protected |
| LockState esphome::lock::Lock::state {LOCK_STATE_NONE} |
|
protected |
| LockTraits esphome::lock::Lock::traits |