mirror of
https://github.com/esphome/esphome.git
synced 2024-11-26 17:05:21 +01:00
Warn if not registered properly
This commit is contained in:
parent
a323679771
commit
999c1a5357
9 changed files with 30 additions and 6 deletions
|
@ -254,6 +254,7 @@ def setup_binary_sensor_core_(var, config):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var, timings)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var, timings)
|
||||||
if CONF_INVALID_COOLDOWN in conf:
|
if CONF_INVALID_COOLDOWN in conf:
|
||||||
cg.add(trigger.set_invalid_cooldown(conf[CONF_INVALID_COOLDOWN]))
|
cg.add(trigger.set_invalid_cooldown(conf[CONF_INVALID_COOLDOWN]))
|
||||||
|
yield cg.register_component(trigger, conf)
|
||||||
yield automation.build_automation(trigger, [], conf)
|
yield automation.build_automation(trigger, [], conf)
|
||||||
|
|
||||||
for conf in config.get(CONF_ON_STATE, []):
|
for conf in config.get(CONF_ON_STATE, []):
|
||||||
|
|
|
@ -63,6 +63,7 @@ def register_fan(var, config):
|
||||||
if not CORE.has_id(config[CONF_ID]):
|
if not CORE.has_id(config[CONF_ID]):
|
||||||
var = cg.Pvariable(config[CONF_ID], var)
|
var = cg.Pvariable(config[CONF_ID], var)
|
||||||
cg.add(cg.App.register_fan(var))
|
cg.add(cg.App.register_fan(var))
|
||||||
|
yield cg.register_component(var, config)
|
||||||
yield setup_fan_core_(var, config)
|
yield setup_fan_core_(var, config)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ from esphome.const import CONF_ASSUMED_STATE, CONF_CLOSE_ACTION, CONF_CURRENT_OP
|
||||||
CONF_STATE, CONF_STOP_ACTION
|
CONF_STATE, CONF_STOP_ACTION
|
||||||
from .. import template_ns
|
from .. import template_ns
|
||||||
|
|
||||||
TemplateCover = template_ns.class_('TemplateCover', cover.Cover)
|
TemplateCover = template_ns.class_('TemplateCover', cover.Cover, cg.Component)
|
||||||
|
|
||||||
TemplateCoverRestoreMode = template_ns.enum('TemplateCoverRestoreMode')
|
TemplateCoverRestoreMode = template_ns.enum('TemplateCoverRestoreMode')
|
||||||
RESTORE_MODES = {
|
RESTORE_MODES = {
|
||||||
|
|
|
@ -285,6 +285,7 @@ def setup_time_core_(time_var, config):
|
||||||
days_of_week = conf.get(CONF_DAYS_OF_WEEK, [x for x in range(1, 8)])
|
days_of_week = conf.get(CONF_DAYS_OF_WEEK, [x for x in range(1, 8)])
|
||||||
cg.add(trigger.add_days_of_week(days_of_week))
|
cg.add(trigger.add_days_of_week(days_of_week))
|
||||||
|
|
||||||
|
yield cg.register_component(trigger, conf)
|
||||||
yield automation.build_automation(trigger, [], conf)
|
yield automation.build_automation(trigger, [], conf)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ from .. import uart_ns
|
||||||
|
|
||||||
DEPENDENCIES = ['uart']
|
DEPENDENCIES = ['uart']
|
||||||
|
|
||||||
UARTSwitch = uart_ns.class_('UARTSwitch', switch.Switch, uart.UARTDevice)
|
UARTSwitch = uart_ns.class_('UARTSwitch', switch.Switch, uart.UARTDevice, cg.Component)
|
||||||
|
|
||||||
|
|
||||||
def validate_data(value):
|
def validate_data(value):
|
||||||
|
|
|
@ -322,6 +322,7 @@ def iter_ids(config, path=None):
|
||||||
|
|
||||||
def do_id_pass(result): # type: (Config) -> None
|
def do_id_pass(result): # type: (Config) -> None
|
||||||
from esphome.cpp_generator import MockObjClass
|
from esphome.cpp_generator import MockObjClass
|
||||||
|
from esphome.cpp_types import Component
|
||||||
|
|
||||||
declare_ids = [] # type: List[Tuple[core.ID, ConfigPath]]
|
declare_ids = [] # type: List[Tuple[core.ID, ConfigPath]]
|
||||||
searching_ids = [] # type: List[Tuple[core.ID, ConfigPath]]
|
searching_ids = [] # type: List[Tuple[core.ID, ConfigPath]]
|
||||||
|
@ -340,6 +341,8 @@ def do_id_pass(result): # type: (Config) -> None
|
||||||
# Resolve default ids after manual IDs
|
# Resolve default ids after manual IDs
|
||||||
for id, _ in declare_ids:
|
for id, _ in declare_ids:
|
||||||
id.resolve([v[0].id for v in declare_ids])
|
id.resolve([v[0].id for v in declare_ids])
|
||||||
|
if isinstance(id.type, MockObjClass) and id.type.inherits_from(Component):
|
||||||
|
CORE.component_ids.add(id.id)
|
||||||
|
|
||||||
# Check searched IDs
|
# Check searched IDs
|
||||||
for id, path in searching_ids:
|
for id, path in searching_ids:
|
||||||
|
|
|
@ -505,6 +505,8 @@ class EsphomeCore(object):
|
||||||
self.active_coroutines = {} # type: Dict[int, Any]
|
self.active_coroutines = {} # type: Dict[int, Any]
|
||||||
# A set of strings of names of loaded integrations, used to find namespace ID conflicts
|
# A set of strings of names of loaded integrations, used to find namespace ID conflicts
|
||||||
self.loaded_integrations = set()
|
self.loaded_integrations = set()
|
||||||
|
# A set of component IDs to track what Component subclasses are declared
|
||||||
|
self.component_ids = set()
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
self.dashboard = False
|
self.dashboard = False
|
||||||
|
@ -525,6 +527,7 @@ class EsphomeCore(object):
|
||||||
self.defines = set()
|
self.defines = set()
|
||||||
self.active_coroutines = {}
|
self.active_coroutines = {}
|
||||||
self.loaded_integrations = set()
|
self.loaded_integrations = set()
|
||||||
|
self.component_ids = set()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def address(self): # type: () -> str
|
def address(self): # type: () -> str
|
||||||
|
@ -626,6 +629,12 @@ class EsphomeCore(object):
|
||||||
_LOGGER.warning(u"Please file a bug report with your configuration.")
|
_LOGGER.warning(u"Please file a bug report with your configuration.")
|
||||||
if self.active_coroutines:
|
if self.active_coroutines:
|
||||||
raise EsphomeError()
|
raise EsphomeError()
|
||||||
|
if self.component_ids:
|
||||||
|
comps = u', '.join(u"'{}'".format(x) for x in self.component_ids)
|
||||||
|
_LOGGER.warning(u"Components %s were never registered. Please create a bug report",
|
||||||
|
comps)
|
||||||
|
_LOGGER.warning(u"with your configuration.")
|
||||||
|
raise EsphomeError()
|
||||||
self.active_coroutines.clear()
|
self.active_coroutines.clear()
|
||||||
|
|
||||||
def add(self, expression):
|
def add(self, expression):
|
||||||
|
|
|
@ -18,9 +18,11 @@ from esphome.pins import ESP8266_FLASH_SIZES, ESP8266_LD_SCRIPTS
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
BUILD_FLASH_MODES = ['qio', 'qout', 'dio', 'dout']
|
BUILD_FLASH_MODES = ['qio', 'qout', 'dio', 'dout']
|
||||||
StartupTrigger = cg.esphome_ns.StartupTrigger
|
StartupTrigger = cg.esphome_ns.class_('StartupTrigger', cg.Component, automation.Trigger.template())
|
||||||
ShutdownTrigger = cg.esphome_ns.ShutdownTrigger
|
ShutdownTrigger = cg.esphome_ns.class_('ShutdownTrigger', cg.Component,
|
||||||
LoopTrigger = cg.esphome_ns.LoopTrigger
|
automation.Trigger.template())
|
||||||
|
LoopTrigger = cg.esphome_ns.class_('LoopTrigger', cg.Component,
|
||||||
|
automation.Trigger.template())
|
||||||
|
|
||||||
VERSION_REGEX = re.compile(r'^[0-9]+\.[0-9]+\.[0-9]+(?:[ab]\d+)?$')
|
VERSION_REGEX = re.compile(r'^[0-9]+\.[0-9]+\.[0-9]+(?:[ab]\d+)?$')
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
from esphome.const import CONF_INVERTED, CONF_MODE, CONF_NUMBER, CONF_SETUP_PRIORITY, \
|
from esphome.const import CONF_INVERTED, CONF_MODE, CONF_NUMBER, CONF_SETUP_PRIORITY, \
|
||||||
CONF_UPDATE_INTERVAL, CONF_TYPE_ID
|
CONF_UPDATE_INTERVAL, CONF_TYPE_ID
|
||||||
from esphome.core import coroutine, ID
|
from esphome.core import coroutine, ID, CORE
|
||||||
from esphome.cpp_generator import RawExpression, add, get_variable
|
from esphome.cpp_generator import RawExpression, add, get_variable
|
||||||
from esphome.cpp_types import App, GPIOPin
|
from esphome.cpp_types import App, GPIOPin
|
||||||
|
from esphome.py_compat import text_type
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
@coroutine
|
||||||
|
@ -34,6 +35,12 @@ def register_component(var, config):
|
||||||
:param var: The variable representing the component.
|
:param var: The variable representing the component.
|
||||||
:param config: The configuration for the component.
|
:param config: The configuration for the component.
|
||||||
"""
|
"""
|
||||||
|
id_ = text_type(var.base)
|
||||||
|
if id_ not in CORE.component_ids:
|
||||||
|
raise ValueError(u"Component ID {} was not declared to inherit from Component, "
|
||||||
|
u"or was registered twice. Please create a bug report with your "
|
||||||
|
u"configuration.".format(id_))
|
||||||
|
CORE.component_ids.remove(id_)
|
||||||
if CONF_SETUP_PRIORITY in config:
|
if CONF_SETUP_PRIORITY in config:
|
||||||
add(var.set_setup_priority(config[CONF_SETUP_PRIORITY]))
|
add(var.set_setup_priority(config[CONF_SETUP_PRIORITY]))
|
||||||
if CONF_UPDATE_INTERVAL in config:
|
if CONF_UPDATE_INTERVAL in config:
|
||||||
|
|
Loading…
Reference in a new issue