ESPHome 2026.2.1
Loading...
Searching...
No Matches
esphome::valve::Valve Class Referenceabstract

Base class for all valve devices. More...

#include <valve.h>

Inheritance diagram for esphome::valve::Valve:
esphome::EntityBase esphome::EntityBase_DeviceClass esphome::demo::DemoValve esphome::template_::TemplateValve

Public Member Functions

 Valve ()
 
ValveCall make_call ()
 Construct a new valve call used to control the valve.
 
void add_on_state_callback (std::function< void()> &&f)
 
void publish_state (bool save=true)
 Publish the current state of the valve.
 
virtual ValveTraits get_traits ()=0
 
bool is_fully_open () const
 Helper method to check if the valve is fully open. Equivalent to comparing .position against 1.0.
 
bool is_fully_closed () const
 Helper method to check if the valve is fully closed. Equivalent to comparing .position against 0.0.
 
- Public Member Functions inherited from esphome::EntityBase
const StringRefget_name () const
 
void set_name (const char *name)
 
void set_name (const char *name, uint32_t object_id_hash)
 Set name with pre-computed object_id hash (avoids runtime hash calculation) Use hash=0 for dynamic names that need runtime calculation.
 
bool has_own_name () const
 
ESPDEPRECATED("object_id mangles names and all object_id methods are planned for removal " "(see https://github.com/esphome/backlog/issues/76). " "Now is the time to stop using object_id. If still needed, use get_object_id_to() " "which will remain available longer. get_object_id() will be removed in 2026.7.0", "2025.12.0") std uint32_t get_object_id_hash ()
 
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
 
void set_disabled_by_default (bool disabled_by_default)
 
EntityCategory get_entity_category () const
 
void set_entity_category (EntityCategory entity_category)
 
ESPDEPRECATED("Use get_icon_ref() instead for better performance (avoids string copy). Will be removed in ESPHome 2026.5.0", "2025.11.0") std void set_icon (const char *icon)
 
StringRef get_icon_ref () const
 
uint32_t get_device_id () const
 
void set_device (Device *device)
 
Deviceget_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.
 
- Public Member Functions inherited from esphome::EntityBase_DeviceClass
ESPDEPRECATED("Use get_device_class_ref() instead for better performance (avoids string copy). Will be removed in " "ESPHome 2026.5.0", "2025.11.0") std void set_device_class (const char *device_class)
 Get the device class, using the manual override if set.
 
StringRef get_device_class_ref () const
 Get the device class as StringRef.
 

Data Fields

ValveOperation current_operation {VALVE_OPERATION_IDLE}
 The current operation of the valve (idle, opening, closing).
 
float position
 The position of the valve from 0.0 (fully closed) to 1.0 (fully open).
 

Protected Member Functions

virtual void control (const ValveCall &call)=0
 
optional< ValveRestoreStaterestore_state_ ()
 
- Protected Member Functions inherited from esphome::EntityBase
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 ValveCall
 
LazyCallbackManager< void()> state_callback_ {}
 
ESPPreferenceObject rtc_
 
- Protected Attributes inherited from esphome::EntityBase
StringRef name_
 
const char * icon_c_str_ {nullptr}
 
uint32_t object_id_hash_ {}
 
Devicedevice_ {}
 
struct esphome::EntityBase::EntityFlags flags_
 
- Protected Attributes inherited from esphome::EntityBase_DeviceClass
const char * device_class_ {nullptr}
 Device class override.
 

Detailed Description

Base class for all valve devices.

Valves currently have three properties:

  • position - The current position of the valve from 0.0 (fully closed) to 1.0 (fully open). For valves with only binary OPEN/CLOSED position this will always be either 0.0 or 1.0
  • current_operation - The operation the valve is currently performing, this can be one of IDLE, OPENING and CLOSING.

For users: All valve operations must be performed over the .make_call() interface. To command a valve, use .make_call() to create a call object, set all properties you wish to set, and activate the command with .perform(). For reading out the current values of the valve, use the public .position, etc. properties (these are read-only for users)

For integrations: Integrations must implement two methods: control() and get_traits(). Control will be called with the arguments supplied by the user and should be used to control all values of the valve. Also implement get_traits() to return what operations the valve supports.

Definition at line 104 of file valve.h.

Constructor & Destructor Documentation

◆ Valve()

esphome::valve::Valve::Valve ( )
explicit

Definition at line 33 of file valve.cpp.

Member Function Documentation

◆ add_on_state_callback()

void esphome::valve::Valve::add_on_state_callback ( std::function< void()> && f)

Definition at line 128 of file valve.cpp.

◆ control()

virtual void esphome::valve::Valve::control ( const ValveCall & call)
protectedpure virtual

◆ get_traits()

virtual ValveTraits esphome::valve::Valve::get_traits ( )
pure virtual

◆ is_fully_closed()

bool esphome::valve::Valve::is_fully_closed ( ) const

Helper method to check if the valve is fully closed. Equivalent to comparing .position against 0.0.

Definition at line 168 of file valve.cpp.

◆ is_fully_open()

bool esphome::valve::Valve::is_fully_open ( ) const

Helper method to check if the valve is fully open. Equivalent to comparing .position against 1.0.

Definition at line 167 of file valve.cpp.

◆ make_call()

ValveCall esphome::valve::Valve::make_call ( )

Construct a new valve call used to control the valve.

Definition at line 126 of file valve.cpp.

◆ publish_state()

void esphome::valve::Valve::publish_state ( bool save = true)

Publish the current state of the valve.

First set the .position, etc. values and then call this method to publish the state of the valve.

Parameters
saveWhether to save the updated values in RTC area.

Definition at line 129 of file valve.cpp.

◆ restore_state_()

optional< ValveRestoreState > esphome::valve::Valve::restore_state_ ( )
protected

Definition at line 159 of file valve.cpp.

Field Documentation

◆ current_operation

ValveOperation esphome::valve::Valve::current_operation {VALVE_OPERATION_IDLE}

The current operation of the valve (idle, opening, closing).

Definition at line 109 of file valve.h.

◆ position

float esphome::valve::Valve::position

The position of the valve from 0.0 (fully closed) to 1.0 (fully open).

For binary valves this is always equals to 0.0 or 1.0 (see also VALVE_OPEN and VALVE_CLOSED constants).

Definition at line 115 of file valve.h.

◆ rtc_

ESPPreferenceObject esphome::valve::Valve::rtc_
protected

Definition at line 147 of file valve.h.

◆ state_callback_

LazyCallbackManager<void()> esphome::valve::Valve::state_callback_ {}
protected

Definition at line 145 of file valve.h.

◆ ValveCall

friend esphome::valve::Valve::ValveCall
protected

Definition at line 139 of file valve.h.


The documentation for this class was generated from the following files: