mirror of
https://github.com/esphome/esphome.git
synced 2026-07-10 08:55:36 +00:00
Merge branch 'api_avoid_copies' into integration
This commit is contained in:
@@ -1718,12 +1718,12 @@ void APIConnection::on_home_assistant_state_response(const HomeAssistantStateRes
|
||||
// Create null-terminated state for callback (parse_number needs null-termination)
|
||||
// HA state max length is 255, so 256 byte buffer covers all cases
|
||||
char state_buf[256];
|
||||
size_t copy_len = msg.state_len;
|
||||
size_t copy_len = msg.state.size();
|
||||
if (copy_len >= sizeof(state_buf)) {
|
||||
copy_len = sizeof(state_buf) - 1; // Truncate to leave space for null terminator
|
||||
}
|
||||
if (copy_len > 0) {
|
||||
memcpy(state_buf, msg.state, copy_len);
|
||||
memcpy(state_buf, msg.state.data(), copy_len);
|
||||
}
|
||||
state_buf[copy_len] = '\0';
|
||||
it.callback(StringRef(state_buf, copy_len));
|
||||
|
||||
@@ -11,6 +11,7 @@ from esphome.const import (
|
||||
CONF_SPEED,
|
||||
DEVICE_CLASS_SPEED,
|
||||
STATE_CLASS_MEASUREMENT,
|
||||
STATE_CLASS_MEASUREMENT_ANGLE,
|
||||
UNIT_DEGREES,
|
||||
UNIT_KILOMETER_PER_HOUR,
|
||||
UNIT_METER,
|
||||
@@ -21,6 +22,7 @@ CONF_HDOP = "hdop"
|
||||
|
||||
ICON_ALTIMETER = "mdi:altimeter"
|
||||
ICON_COMPASS = "mdi:compass"
|
||||
ICON_CIRCLE_DOUBLE = "mdi:circle-double"
|
||||
ICON_LATITUDE = "mdi:latitude"
|
||||
ICON_LONGITUDE = "mdi:longitude"
|
||||
ICON_SATELLITE = "mdi:satellite-variant"
|
||||
@@ -50,7 +52,7 @@ CONFIG_SCHEMA = cv.All(
|
||||
unit_of_measurement=UNIT_DEGREES,
|
||||
icon=ICON_LONGITUDE,
|
||||
accuracy_decimals=6,
|
||||
state_class=STATE_CLASS_MEASUREMENT,
|
||||
state_class=STATE_CLASS_MEASUREMENT_ANGLE,
|
||||
),
|
||||
cv.Optional(CONF_SPEED): sensor.sensor_schema(
|
||||
unit_of_measurement=UNIT_KILOMETER_PER_HOUR,
|
||||
@@ -63,7 +65,7 @@ CONFIG_SCHEMA = cv.All(
|
||||
unit_of_measurement=UNIT_DEGREES,
|
||||
icon=ICON_COMPASS,
|
||||
accuracy_decimals=2,
|
||||
state_class=STATE_CLASS_MEASUREMENT,
|
||||
state_class=STATE_CLASS_MEASUREMENT_ANGLE,
|
||||
),
|
||||
cv.Optional(CONF_ALTITUDE): sensor.sensor_schema(
|
||||
unit_of_measurement=UNIT_METER,
|
||||
@@ -72,11 +74,14 @@ CONFIG_SCHEMA = cv.All(
|
||||
state_class=STATE_CLASS_MEASUREMENT,
|
||||
),
|
||||
cv.Optional(CONF_SATELLITES): sensor.sensor_schema(
|
||||
# no unit_of_measurement
|
||||
icon=ICON_SATELLITE,
|
||||
accuracy_decimals=0,
|
||||
state_class=STATE_CLASS_MEASUREMENT,
|
||||
),
|
||||
cv.Optional(CONF_HDOP): sensor.sensor_schema(
|
||||
# no unit_of_measurement
|
||||
icon=ICON_CIRCLE_DOUBLE,
|
||||
accuracy_decimals=3,
|
||||
state_class=STATE_CLASS_MEASUREMENT,
|
||||
),
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace uponor_smatrix {
|
||||
static const char *const TAG = "uponor_smatrix";
|
||||
|
||||
// Maximum bytes to log in verbose hex output
|
||||
static constexpr size_t UPONOR_MAX_LOG_BYTES = 32;
|
||||
static constexpr size_t UPONOR_MAX_LOG_BYTES = 36;
|
||||
|
||||
void UponorSmatrixComponent::setup() {
|
||||
#ifdef USE_TIME
|
||||
|
||||
Reference in New Issue
Block a user