mirror of
https://github.com/esphome/esphome.git
synced 2024-11-26 17:05:21 +01:00
Add EntityBase properties to ESP32 Camera (#2600)
This commit is contained in:
parent
f7b3f52731
commit
be3cb9ef00
7 changed files with 18 additions and 7 deletions
|
@ -701,6 +701,7 @@ message ListEntitiesCameraResponse {
|
||||||
string name = 3;
|
string name = 3;
|
||||||
string unique_id = 4;
|
string unique_id = 4;
|
||||||
bool disabled_by_default = 5;
|
bool disabled_by_default = 5;
|
||||||
|
string icon = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
message CameraImageResponse {
|
message CameraImageResponse {
|
||||||
|
|
|
@ -680,6 +680,7 @@ bool APIConnection::send_camera_info(esp32_camera::ESP32Camera *camera) {
|
||||||
msg.name = camera->get_name();
|
msg.name = camera->get_name();
|
||||||
msg.unique_id = get_default_unique_id("camera", camera);
|
msg.unique_id = get_default_unique_id("camera", camera);
|
||||||
msg.disabled_by_default = camera->is_disabled_by_default();
|
msg.disabled_by_default = camera->is_disabled_by_default();
|
||||||
|
msg.icon = camera->get_icon();
|
||||||
return this->send_list_entities_camera_response(msg);
|
return this->send_list_entities_camera_response(msg);
|
||||||
}
|
}
|
||||||
void APIConnection::camera_image(const CameraImageRequest &msg) {
|
void APIConnection::camera_image(const CameraImageRequest &msg) {
|
||||||
|
|
|
@ -2910,6 +2910,10 @@ bool ListEntitiesCameraResponse::decode_length(uint32_t field_id, ProtoLengthDel
|
||||||
this->unique_id = value.as_string();
|
this->unique_id = value.as_string();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
case 6: {
|
||||||
|
this->icon = value.as_string();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -2930,6 +2934,7 @@ void ListEntitiesCameraResponse::encode(ProtoWriteBuffer buffer) const {
|
||||||
buffer.encode_string(3, this->name);
|
buffer.encode_string(3, this->name);
|
||||||
buffer.encode_string(4, this->unique_id);
|
buffer.encode_string(4, this->unique_id);
|
||||||
buffer.encode_bool(5, this->disabled_by_default);
|
buffer.encode_bool(5, this->disabled_by_default);
|
||||||
|
buffer.encode_string(6, this->icon);
|
||||||
}
|
}
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
void ListEntitiesCameraResponse::dump_to(std::string &out) const {
|
void ListEntitiesCameraResponse::dump_to(std::string &out) const {
|
||||||
|
@ -2955,6 +2960,10 @@ void ListEntitiesCameraResponse::dump_to(std::string &out) const {
|
||||||
out.append(" disabled_by_default: ");
|
out.append(" disabled_by_default: ");
|
||||||
out.append(YESNO(this->disabled_by_default));
|
out.append(YESNO(this->disabled_by_default));
|
||||||
out.append("\n");
|
out.append("\n");
|
||||||
|
|
||||||
|
out.append(" icon: ");
|
||||||
|
out.append("'").append(this->icon).append("'");
|
||||||
|
out.append("\n");
|
||||||
out.append("}");
|
out.append("}");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -803,6 +803,7 @@ class ListEntitiesCameraResponse : public ProtoMessage {
|
||||||
std::string name{};
|
std::string name{};
|
||||||
std::string unique_id{};
|
std::string unique_id{};
|
||||||
bool disabled_by_default{false};
|
bool disabled_by_default{false};
|
||||||
|
std::string icon{};
|
||||||
void encode(ProtoWriteBuffer buffer) const override;
|
void encode(ProtoWriteBuffer buffer) const override;
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
void dump_to(std::string &out) const override;
|
void dump_to(std::string &out) const override;
|
||||||
|
|
|
@ -2,10 +2,8 @@ import esphome.codegen as cg
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome import pins
|
from esphome import pins
|
||||||
from esphome.const import (
|
from esphome.const import (
|
||||||
CONF_DISABLED_BY_DEFAULT,
|
|
||||||
CONF_FREQUENCY,
|
CONF_FREQUENCY,
|
||||||
CONF_ID,
|
CONF_ID,
|
||||||
CONF_NAME,
|
|
||||||
CONF_PIN,
|
CONF_PIN,
|
||||||
CONF_SCL,
|
CONF_SCL,
|
||||||
CONF_SDA,
|
CONF_SDA,
|
||||||
|
@ -17,6 +15,7 @@ from esphome.const import (
|
||||||
)
|
)
|
||||||
from esphome.core import CORE
|
from esphome.core import CORE
|
||||||
from esphome.components.esp32 import add_idf_sdkconfig_option
|
from esphome.components.esp32 import add_idf_sdkconfig_option
|
||||||
|
from esphome.cpp_helpers import setup_entity
|
||||||
|
|
||||||
DEPENDENCIES = ["esp32", "api"]
|
DEPENDENCIES = ["esp32", "api"]
|
||||||
|
|
||||||
|
@ -63,11 +62,9 @@ CONF_TEST_PATTERN = "test_pattern"
|
||||||
|
|
||||||
camera_range_param = cv.int_range(min=-2, max=2)
|
camera_range_param = cv.int_range(min=-2, max=2)
|
||||||
|
|
||||||
CONFIG_SCHEMA = cv.Schema(
|
CONFIG_SCHEMA = cv.ENTITY_BASE_SCHEMA.extend(
|
||||||
{
|
{
|
||||||
cv.GenerateID(): cv.declare_id(ESP32Camera),
|
cv.GenerateID(): cv.declare_id(ESP32Camera),
|
||||||
cv.Required(CONF_NAME): cv.string,
|
|
||||||
cv.Optional(CONF_DISABLED_BY_DEFAULT, default=False): cv.boolean,
|
|
||||||
cv.Required(CONF_DATA_PINS): cv.All(
|
cv.Required(CONF_DATA_PINS): cv.All(
|
||||||
[pins.internal_gpio_input_pin_number], cv.Length(min=8, max=8)
|
[pins.internal_gpio_input_pin_number], cv.Length(min=8, max=8)
|
||||||
),
|
),
|
||||||
|
@ -127,8 +124,8 @@ SETTERS = {
|
||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
async def to_code(config):
|
||||||
var = cg.new_Pvariable(config[CONF_ID], config[CONF_NAME])
|
var = cg.new_Pvariable(config[CONF_ID])
|
||||||
cg.add(var.set_disabled_by_default(config[CONF_DISABLED_BY_DEFAULT]))
|
await setup_entity(var, config)
|
||||||
await cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
|
|
||||||
for key, setter in SETTERS.items():
|
for key, setter in SETTERS.items():
|
||||||
|
|
|
@ -185,6 +185,7 @@ ESP32Camera::ESP32Camera(const std::string &name) : EntityBase(name) {
|
||||||
|
|
||||||
global_esp32_camera = this;
|
global_esp32_camera = this;
|
||||||
}
|
}
|
||||||
|
ESP32Camera::ESP32Camera() : ESP32Camera("") {}
|
||||||
void ESP32Camera::set_data_pins(std::array<uint8_t, 8> pins) {
|
void ESP32Camera::set_data_pins(std::array<uint8_t, 8> pins) {
|
||||||
this->config_.pin_d0 = pins[0];
|
this->config_.pin_d0 = pins[0];
|
||||||
this->config_.pin_d1 = pins[1];
|
this->config_.pin_d1 = pins[1];
|
||||||
|
|
|
@ -54,6 +54,7 @@ enum ESP32CameraFrameSize {
|
||||||
class ESP32Camera : public Component, public EntityBase {
|
class ESP32Camera : public Component, public EntityBase {
|
||||||
public:
|
public:
|
||||||
ESP32Camera(const std::string &name);
|
ESP32Camera(const std::string &name);
|
||||||
|
ESP32Camera();
|
||||||
void set_data_pins(std::array<uint8_t, 8> pins);
|
void set_data_pins(std::array<uint8_t, 8> pins);
|
||||||
void set_vsync_pin(uint8_t pin);
|
void set_vsync_pin(uint8_t pin);
|
||||||
void set_href_pin(uint8_t pin);
|
void set_href_pin(uint8_t pin);
|
||||||
|
|
Loading…
Reference in a new issue