mirror of
https://github.com/esphome/esphome.git
synced 2026-10-14 10:12:52 +00:00
[dlms_meter] Size entity storage with slot_counter
This commit is contained in:
@@ -13,6 +13,7 @@ from esphome.const import (
|
||||
CONF_RECEIVE_TIMEOUT,
|
||||
)
|
||||
from esphome.core import CORE
|
||||
from esphome.cpp_generator import MockObj
|
||||
from esphome.types import ConfigType
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
@@ -134,6 +135,26 @@ CUSTOM_PATTERN_SCHEMA = cv.All(
|
||||
validate_custom_pattern,
|
||||
)
|
||||
|
||||
_request_sensor_slot = cg.slot_counter("DLMS_MAX_SENSORS")
|
||||
_request_text_sensor_slot = cg.slot_counter("DLMS_MAX_TEXT_SENSORS")
|
||||
_request_binary_sensor_slot = cg.slot_counter("DLMS_MAX_BINARY_SENSORS")
|
||||
|
||||
|
||||
def register_sensor(hub: MockObj, config: ConfigType, var: MockObj) -> None:
|
||||
_request_sensor_slot()
|
||||
cg.add(hub.register_sensor(config[CONF_OBIS_CODE], var))
|
||||
|
||||
|
||||
def register_text_sensor(hub: MockObj, config: ConfigType, var: MockObj) -> None:
|
||||
_request_text_sensor_slot()
|
||||
cg.add(hub.register_text_sensor(config[CONF_OBIS_CODE], var))
|
||||
|
||||
|
||||
def register_binary_sensor(hub: MockObj, config: ConfigType, var: MockObj) -> None:
|
||||
_request_binary_sensor_slot()
|
||||
cg.add(hub.register_binary_sensor(config[CONF_OBIS_CODE], var))
|
||||
|
||||
|
||||
CONFIG_SCHEMA = cv.All(
|
||||
cv.Schema(
|
||||
{
|
||||
@@ -207,21 +228,6 @@ async def to_code(config: ConfigType) -> None:
|
||||
patterns_expr,
|
||||
)
|
||||
|
||||
hub_id = config[CONF_ID].id
|
||||
|
||||
for domain, define in (
|
||||
("sensor", "DLMS_MAX_SENSORS"),
|
||||
("text_sensor", "DLMS_MAX_TEXT_SENSORS"),
|
||||
("binary_sensor", "DLMS_MAX_BINARY_SENSORS"),
|
||||
):
|
||||
count = sum(
|
||||
1
|
||||
for conf in CORE.config.get(domain, [])
|
||||
if conf.get("platform") == "dlms_meter"
|
||||
and conf[CONF_DLMS_METER_ID].id == hub_id
|
||||
)
|
||||
cg.add_define(define, count)
|
||||
|
||||
await cg.register_component(var, config)
|
||||
await uart.register_uart_device(var, config)
|
||||
|
||||
|
||||
@@ -3,7 +3,13 @@ from esphome.components import binary_sensor
|
||||
import esphome.config_validation as cv
|
||||
from esphome.types import ConfigType
|
||||
|
||||
from .. import CONF_DLMS_METER_ID, CONF_OBIS_CODE, DlmsMeterComponent, obis_code
|
||||
from .. import (
|
||||
CONF_DLMS_METER_ID,
|
||||
CONF_OBIS_CODE,
|
||||
DlmsMeterComponent,
|
||||
obis_code,
|
||||
register_binary_sensor,
|
||||
)
|
||||
|
||||
DEPENDENCIES = ["dlms_meter"]
|
||||
|
||||
@@ -18,4 +24,4 @@ CONFIG_SCHEMA = binary_sensor.binary_sensor_schema().extend(
|
||||
async def to_code(config: ConfigType) -> None:
|
||||
hub = await cg.get_variable(config[CONF_DLMS_METER_ID])
|
||||
var = await binary_sensor.new_binary_sensor(config)
|
||||
cg.add(hub.register_binary_sensor(config[CONF_OBIS_CODE], var))
|
||||
register_binary_sensor(hub, config, var)
|
||||
|
||||
@@ -3,7 +3,13 @@ from esphome.components import sensor
|
||||
import esphome.config_validation as cv
|
||||
from esphome.types import ConfigType
|
||||
|
||||
from .. import CONF_DLMS_METER_ID, CONF_OBIS_CODE, DlmsMeterComponent, obis_code
|
||||
from .. import (
|
||||
CONF_DLMS_METER_ID,
|
||||
CONF_OBIS_CODE,
|
||||
DlmsMeterComponent,
|
||||
obis_code,
|
||||
register_sensor,
|
||||
)
|
||||
|
||||
DEPENDENCIES = ["dlms_meter"]
|
||||
|
||||
@@ -56,4 +62,4 @@ CONFIG_SCHEMA = sensor.sensor_schema().extend(
|
||||
async def to_code(config: ConfigType) -> None:
|
||||
hub = await cg.get_variable(config[CONF_DLMS_METER_ID])
|
||||
var = await sensor.new_sensor(config)
|
||||
cg.add(hub.register_sensor(config[CONF_OBIS_CODE], var))
|
||||
register_sensor(hub, config, var)
|
||||
|
||||
@@ -3,7 +3,13 @@ from esphome.components import text_sensor
|
||||
import esphome.config_validation as cv
|
||||
from esphome.types import ConfigType
|
||||
|
||||
from .. import CONF_DLMS_METER_ID, CONF_OBIS_CODE, DlmsMeterComponent, obis_code
|
||||
from .. import (
|
||||
CONF_DLMS_METER_ID,
|
||||
CONF_OBIS_CODE,
|
||||
DlmsMeterComponent,
|
||||
obis_code,
|
||||
register_text_sensor,
|
||||
)
|
||||
|
||||
DEPENDENCIES = ["dlms_meter"]
|
||||
|
||||
@@ -34,4 +40,4 @@ CONFIG_SCHEMA = text_sensor.text_sensor_schema().extend(
|
||||
async def to_code(config: ConfigType) -> None:
|
||||
hub = await cg.get_variable(config[CONF_DLMS_METER_ID])
|
||||
var = await text_sensor.new_text_sensor(config)
|
||||
cg.add(hub.register_text_sensor(config[CONF_OBIS_CODE], var))
|
||||
register_text_sensor(hub, config, var)
|
||||
|
||||
Reference in New Issue
Block a user