mirror of https://github.com/esphome/esphome.git
78 lines
2.6 KiB
C++
78 lines
2.6 KiB
C++
#include "subscribe_state.h"
|
|
#include "esphome/core/log.h"
|
|
|
|
namespace esphome {
|
|
namespace api {
|
|
|
|
#ifdef USE_BINARY_SENSOR
|
|
bool InitialStateIterator::on_binary_sensor(binary_sensor::BinarySensor *binary_sensor) {
|
|
if (!binary_sensor->has_state())
|
|
return true;
|
|
|
|
return this->client_->send_binary_sensor_state(binary_sensor, binary_sensor->state);
|
|
}
|
|
#endif
|
|
#ifdef USE_COVER
|
|
bool InitialStateIterator::on_cover(cover::Cover *cover) { return this->client_->send_cover_state(cover); }
|
|
#endif
|
|
#ifdef USE_FAN
|
|
bool InitialStateIterator::on_fan(fan::FanState *fan) { return this->client_->send_fan_state(fan); }
|
|
#endif
|
|
#ifdef USE_LIGHT
|
|
bool InitialStateIterator::on_light(light::LightState *light) { return this->client_->send_light_state(light); }
|
|
#endif
|
|
#ifdef USE_SENSOR
|
|
bool InitialStateIterator::on_sensor(sensor::Sensor *sensor) {
|
|
if (!sensor->has_state())
|
|
return true;
|
|
|
|
return this->client_->send_sensor_state(sensor, sensor->state);
|
|
}
|
|
#endif
|
|
#ifdef USE_SWITCH
|
|
bool InitialStateIterator::on_switch(switch_::Switch *a_switch) {
|
|
return this->client_->send_switch_state(a_switch, a_switch->state);
|
|
}
|
|
#endif
|
|
#ifdef USE_TEXT_SENSOR
|
|
bool InitialStateIterator::on_text_sensor(text_sensor::TextSensor *text_sensor) {
|
|
if (!text_sensor->has_state())
|
|
return true;
|
|
|
|
return this->client_->send_text_sensor_state(text_sensor, text_sensor->state);
|
|
}
|
|
#endif
|
|
#ifdef USE_CLIMATE
|
|
bool InitialStateIterator::on_climate(climate::Climate *climate) { return this->client_->send_climate_state(climate); }
|
|
#endif
|
|
InitialStateIterator::InitialStateIterator(APIServer *server, APIConnection *client)
|
|
: ComponentIterator(server), client_(client) {}
|
|
|
|
APIMessageType SubscribeStatesRequest::message_type() const { return APIMessageType::SUBSCRIBE_STATES_REQUEST; }
|
|
|
|
bool HomeAssistantStateResponse::decode_length_delimited(uint32_t field_id, const uint8_t *value, size_t len) {
|
|
switch (field_id) {
|
|
case 1:
|
|
// string entity_id = 1;
|
|
this->entity_id_ = as_string(value, len);
|
|
return true;
|
|
case 2:
|
|
// string state = 2;
|
|
this->state_ = as_string(value, len);
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
APIMessageType HomeAssistantStateResponse::message_type() const {
|
|
return APIMessageType::HOME_ASSISTANT_STATE_RESPONSE;
|
|
}
|
|
const std::string &HomeAssistantStateResponse::get_entity_id() const { return this->entity_id_; }
|
|
const std::string &HomeAssistantStateResponse::get_state() const { return this->state_; }
|
|
APIMessageType SubscribeHomeAssistantStatesRequest::message_type() const {
|
|
return APIMessageType::SUBSCRIBE_HOME_ASSISTANT_STATES_REQUEST;
|
|
}
|
|
|
|
} // namespace api
|
|
} // namespace esphome
|