ESPHome  2024.11.0
Public Member Functions
esphome::api::CustomAPIDevice Class Reference

#include <custom_api_device.h>

Public Member Functions

bool is_connected () const
 Return if a client (such as Home Assistant) is connected to the native API. More...
 
template<typename T , typename... Ts>
void register_service (void(T::*callback)(Ts...), const std::string &name, const std::array< std::string, sizeof...(Ts)> &arg_names)
 Register a custom native API service that will show up in Home Assistant. More...
 
template<typename T >
void register_service (void(T::*callback)(), const std::string &name)
 Register a custom native API service that will show up in Home Assistant. More...
 
template<typename T >
void subscribe_homeassistant_state (void(T::*callback)(std::string), const std::string &entity_id, const std::string &attribute="")
 Subscribe to the state (or attribute state) of an entity from Home Assistant. More...
 
template<typename T >
void subscribe_homeassistant_state (void(T::*callback)(std::string, std::string), const std::string &entity_id, const std::string &attribute="")
 Subscribe to the state (or attribute state) of an entity from Home Assistant. More...
 
void call_homeassistant_service (const std::string &service_name)
 Call a Home Assistant service from ESPHome. More...
 
void call_homeassistant_service (const std::string &service_name, const std::map< std::string, std::string > &data)
 Call a Home Assistant service from ESPHome. More...
 
void fire_homeassistant_event (const std::string &event_name)
 Fire an ESPHome event in Home Assistant. More...
 
void fire_homeassistant_event (const std::string &service_name, const std::map< std::string, std::string > &data)
 Fire an ESPHome event in Home Assistant. More...
 

Detailed Description

Definition at line 23 of file custom_api_device.h.

Member Function Documentation

◆ call_homeassistant_service() [1/2]

void esphome::api::CustomAPIDevice::call_homeassistant_service ( const std::string &  service_name)
inline

Call a Home Assistant service from ESPHome.

Usage:

call_homeassistant_service("homeassistant.restart");
Parameters
service_nameThe service to call.

Definition at line 141 of file custom_api_device.h.

◆ call_homeassistant_service() [2/2]

void esphome::api::CustomAPIDevice::call_homeassistant_service ( const std::string &  service_name,
const std::map< std::string, std::string > &  data 
)
inline

Call a Home Assistant service from ESPHome.

Usage:

call_homeassistant_service("light.turn_on", {
{"entity_id", "light.my_light"},
{"brightness", "127"},
});
Parameters
service_nameThe service to call.
dataThe data for the service call, mapping from string to string.

Definition at line 161 of file custom_api_device.h.

◆ fire_homeassistant_event() [1/2]

void esphome::api::CustomAPIDevice::fire_homeassistant_event ( const std::string &  event_name)
inline

Fire an ESPHome event in Home Assistant.

Usage:

fire_homeassistant_event("esphome.something_happened");
Parameters
event_nameThe event to fire.

Definition at line 183 of file custom_api_device.h.

◆ fire_homeassistant_event() [2/2]

void esphome::api::CustomAPIDevice::fire_homeassistant_event ( const std::string &  service_name,
const std::map< std::string, std::string > &  data 
)
inline

Fire an ESPHome event in Home Assistant.

Usage:

fire_homeassistant_event("esphome.something_happened", {
{"my_value", "500"},
});
Parameters
event_nameThe event to fire.
dataThe data for the event, mapping from string to string.

Definition at line 203 of file custom_api_device.h.

◆ is_connected()

bool esphome::api::CustomAPIDevice::is_connected ( ) const
inline

Return if a client (such as Home Assistant) is connected to the native API.

Definition at line 26 of file custom_api_device.h.

◆ register_service() [1/2]

template<typename T , typename... Ts>
void esphome::api::CustomAPIDevice::register_service ( void(T::*)(Ts...)  callback,
const std::string &  name,
const std::array< std::string, sizeof...(Ts)> &  arg_names 
)
inline

Register a custom native API service that will show up in Home Assistant.

Usage:

void setup() override {
register_service(&CustomNativeAPI::on_start_washer_cycle, "start_washer_cycle",
{"cycle_length"});
}
void on_start_washer_cycle(int cycle_length) {
// Start washer cycle.
}
Template Parameters
TThe class type creating the service, automatically deduced from the function pointer.
TsThe argument types for the service, automatically deduced from the function arguments.
Parameters
callbackThe member function to call when the service is triggered.
nameThe name of the service to register.
arg_namesThe name of the arguments for the service, must match the arguments of the function.

Definition at line 50 of file custom_api_device.h.

◆ register_service() [2/2]

template<typename T >
void esphome::api::CustomAPIDevice::register_service ( void(T::*)()  callback,
const std::string &  name 
)
inline

Register a custom native API service that will show up in Home Assistant.

Usage:

void setup() override {
register_service(&CustomNativeAPI::on_hello_world, "hello_world");
}
void on_hello_world() {
// Hello World service called.
}
Template Parameters
TThe class type creating the service, automatically deduced from the function pointer.
Parameters
callbackThe member function to call when the service is triggered.
nameThe name of the arguments for the service, must match the arguments of the function.

Definition at line 74 of file custom_api_device.h.

◆ subscribe_homeassistant_state() [1/2]

template<typename T >
void esphome::api::CustomAPIDevice::subscribe_homeassistant_state ( void(T::*)(std::string)  callback,
const std::string &  entity_id,
const std::string &  attribute = "" 
)
inline

Subscribe to the state (or attribute state) of an entity from Home Assistant.

Usage:

```cpp void setup() override { subscribe_homeassistant_state(&CustomNativeAPI::on_state_changed, "climate.kitchen", "current_temperature"); }

void on_state_changed(std::string state) { // State of sensor.weather_forecast is state } ```

Template Parameters
TThe class type creating the service, automatically deduced from the function pointer.
Parameters
callbackThe member function to call when the entity state changes.
entity_idThe entity_id to track.
attributeThe entity state attribute to track.

Definition at line 99 of file custom_api_device.h.

◆ subscribe_homeassistant_state() [2/2]

template<typename T >
void esphome::api::CustomAPIDevice::subscribe_homeassistant_state ( void(T::*)(std::string, std::string)  callback,
const std::string &  entity_id,
const std::string &  attribute = "" 
)
inline

Subscribe to the state (or attribute state) of an entity from Home Assistant.

Usage:

```cpp void setup() override { subscribe_homeassistant_state(&CustomNativeAPI::on_state_changed, "sensor.weather_forecast"); }

void on_state_changed(std::string entity_id, std::string state) { // State of entity_id is state } ```

Template Parameters
TThe class type creating the service, automatically deduced from the function pointer.
Parameters
callbackThe member function to call when the entity state changes.
entity_idThe entity_id to track.
attributeThe entity state attribute to track.

Definition at line 125 of file custom_api_device.h.


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