enhomie.homie.params package#

Submodules#

enhomie.homie.params.aspire module#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.aspire.HomieAspireParams(*, devices: Annotated[list[str] | None, MinLen(min_length=1)] = None, groups: Annotated[list[str] | None, MinLen(min_length=1)] = None, stage: HomieStageParams | None = None, scene: Annotated[str | None, MinLen(min_length=1)] = None, store: Annotated[list[HomieStoreParams] | None, MinLen(min_length=1)] = None, occurs: Annotated[list[HomieOccurParams] | None, MinLen(min_length=1)] = None, wheres: Annotated[list[HomieWhereParams] | None, MinLen(min_length=1)] = None, pause: Annotated[int, Ge(ge=1), Le(le=86400)] = 3)[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

devices: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Devices that are in scope', metadata=[MinLen(min_length=1)])]#
groups: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Groups that are in scope', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

occurs: Annotated[list[HomieOccurParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugins for the conditions', metadata=[MinLen(min_length=1)])]#
pause: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=3, description='Delay before acting again', metadata=[Ge(ge=1), Le(le=86400)])]#
scene: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Update the group light scene', metadata=[MinLen(min_length=1)])]#
stage: Annotated[HomieStageParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Default device scene config')]#
store: Annotated[list[HomieStoreParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Update values in database', metadata=[MinLen(min_length=1)])]#
wheres: Annotated[list[HomieWhereParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugins for the conditions', metadata=[MinLen(min_length=1)])]#

enhomie.homie.params.child module#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.child.HomieChildParams(_parse: Callable[[...], Any] | None = None)[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

enhomie.homie.params.common module#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.common.HomieParamsModel[source]#

Bases: BaseModel

Process and validate the Homie configuration parameters.

model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

enhomie.homie.params.desire module#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.desire.HomieDesireParams(*, devices: Annotated[list[str] | None, MinLen(min_length=1)] = None, groups: Annotated[list[str] | None, MinLen(min_length=1)] = None, stage: HomieStageParams | None = None, scene: Annotated[str | None, MinLen(min_length=1)] = None, store: Annotated[list[HomieStoreParams] | None, MinLen(min_length=1)] = None, wheres: Annotated[list[HomieWhereParams] | None, MinLen(min_length=1)] = None, pause: Annotated[int, Ge(ge=0), Le(le=86400)] = 0, delay: bool = True, weight: Annotated[int, Ge(ge=0), Le(le=1000.0)] = 0)[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

delay: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=True, description='Enforce pause on initial')]#
devices: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Devices that are in scope', metadata=[MinLen(min_length=1)])]#
groups: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Groups that are in scope', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

pause: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=0, description='Delay before acting again', metadata=[Ge(ge=0), Le(le=86400)])]#
scene: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Update the group light scene', metadata=[MinLen(min_length=1)])]#
stage: Annotated[HomieStageParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Default device scene config')]#
store: Annotated[list[HomieStoreParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Update values in database', metadata=[MinLen(min_length=1)])]#
weight: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=0, description='Precedence when multiple', metadata=[Ge(ge=0), Le(le=1000.0)])]#
wheres: Annotated[list[HomieWhereParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugins for the conditions', metadata=[MinLen(min_length=1)])]#

enhomie.homie.params.device module#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.device.HomieDeviceParams(_parse: Callable[[...], Any] | None = None, *, origin: Annotated[str, MinLen(min_length=1)], label: Annotated[str | None, MinLen(min_length=1)] = None, unique: Annotated[str | None, MinLen(min_length=1)] = None)[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Device name in the origin', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

origin: Annotated[str, FieldInfo(annotation=NoneType, required=True, description='Origin where device exists', metadata=[MinLen(min_length=1)])]#
unique: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Unique identifier in origin', metadata=[MinLen(min_length=1)])]#

enhomie.homie.params.group module#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.group.HomieGroupParams(*, origin: Annotated[str | None, MinLen(min_length=1)] = None, label: Annotated[str | None, MinLen(min_length=1)] = None, devices: Annotated[list[str] | None, MinLen(min_length=1)] = None)[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

devices: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='List of devices in group', metadata=[MinLen(min_length=1)])]#
label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Group name in the origin', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

origin: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Origin where group exists', metadata=[MinLen(min_length=1)])]#

enhomie.homie.params.homie module#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.homie.HomieFiltersParams(*, aspires: Annotated[list[str] | None, MinLen(min_length=1)] = None, desires: Annotated[list[str] | None, MinLen(min_length=1)] = None)[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

aspires: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Patterns the names must match', metadata=[MinLen(min_length=1)])]#
desires: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Patterns the names must match', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class enhomie.homie.params.homie.HomieParams(_parse: ~typing.Callable[[...], ~typing.Any] | None = None, *, enconfig: ~encommon.config.params.ConfigParams | None = None, enlogger: ~encommon.config.params.LoggerParams | None = None, encrypts: ~encommon.crypts.params.CryptsParams | None = None, database: ~typing.Annotated[str, ~annotated_types.MinLen(min_length=1)] = 'sqlite:///:memory:', dryrun: bool = False, potent: bool = True, printer: ~enhomie.homie.params.homie.HomiePrinterParams = <factory>, service: ~enhomie.homie.params.service.HomieServiceParams = <factory>, restful: ~enhomie.restful.params.RestfulServiceParams = <factory>, persists: ~typing.Annotated[dict[str, ~enhomie.homie.params.persist.HomiePersistParams] | None, ~annotated_types.MinLen(min_length=1)] = None, filters: ~enhomie.homie.params.homie.HomieFiltersParams = <factory>, origins: ~typing.Annotated[dict[str, ~enhomie.homie.params.origin.HomieOriginParams] | None, ~annotated_types.MinLen(min_length=1)] = None, devices: ~typing.Annotated[dict[str, ~enhomie.homie.params.device.HomieDeviceParams] | None, ~annotated_types.MinLen(min_length=1)] = None, groups: ~typing.Annotated[dict[str, ~enhomie.homie.params.group.HomieGroupParams] | None, ~annotated_types.MinLen(min_length=1)] = None, scenes: ~typing.Annotated[dict[str, ~enhomie.homie.params.scene.HomieSceneParams] | None, ~annotated_types.MinLen(min_length=1)] = None, desires: ~typing.Annotated[dict[str, ~enhomie.homie.params.desire.HomieDesireParams] | None, ~annotated_types.MinLen(min_length=1)] = None, aspires: ~typing.Annotated[dict[str, ~enhomie.homie.params.aspire.HomieAspireParams] | None, ~annotated_types.MinLen(min_length=1)] = None)[source]#

Bases: Params

Process and validate the core configuration parameters.

aspires: Annotated[dict[str, HomieAspireParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie aspires', metadata=[MinLen(min_length=1)])]#
database: Annotated[str, FieldInfo(annotation=NoneType, required=False, default='sqlite:///:memory:', description='Database connection string', metadata=[MinLen(min_length=1)])]#
desires: Annotated[dict[str, HomieDesireParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie desires', metadata=[MinLen(min_length=1)])]#
devices: Annotated[dict[str, HomieDeviceParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie devices', metadata=[MinLen(min_length=1)])]#
dryrun: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Determine if changes applied')]#
filters: Annotated[HomieFiltersParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieFiltersParams, description='Determine object instantiation')]#
groups: Annotated[dict[str, HomieGroupParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie groups', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

origins: Annotated[dict[str, HomieOriginParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie origins', metadata=[MinLen(min_length=1)])]#
persists: Annotated[dict[str, HomiePersistParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for common persists', metadata=[MinLen(min_length=1)])]#
potent: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=True, description='Ignore idempotency in change')]#
printer: Annotated[HomiePrinterParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomiePrinterParams, description='Print the stream to console')]#
restful: Annotated[RestfulServiceParams, FieldInfo(annotation=NoneType, required=False, default_factory=RestfulServiceParams, description='Parameters for Homie RESTful')]#
scenes: Annotated[dict[str, HomieSceneParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie scenes', metadata=[MinLen(min_length=1)])]#
service: Annotated[HomieServiceParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieServiceParams, description='Parameters for Homie Service')]#
class enhomie.homie.params.homie.HomiePrinterParams(*, action: bool = False, update: bool = False, stream: bool = False, desire: bool = False, aspire: bool = False)[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

action: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the actions to console')]#
aspire: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the aspires to console')]#
desire: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the aspires to console')]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

stream: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the streams to console')]#
update: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the updates to console')]#

enhomie.homie.params.occur module#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.occur.HomieOccurParams(*, builtins_regexp: DriverBltnRegexpParams | None = None, philips_button: DriverPhueButtonParams | None = None, philips_contact: DriverPhueContactParams | None = None, philips_motion: DriverPhueMotionParams | None = None, philips_scene: DriverPhueSceneParams | None = None)[source]#

Bases: HomiePluginParams

Process and validate the Homie configuration parameters.

builtins_regexp: Annotated[DriverBltnRegexpParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

philips_button: Annotated[DriverPhueButtonParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
philips_contact: Annotated[DriverPhueContactParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
philips_motion: Annotated[DriverPhueMotionParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
philips_scene: Annotated[DriverPhueSceneParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#

enhomie.homie.params.origin module#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.origin.HomieOriginParams(_parse: Callable[[...], Any] | None = None, *, hubitat: HubiOriginParams | None = None, philips: PhueOriginParams | None = None, ubiquiti: UbiqOriginParams | None = None)[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

hubitat: Annotated[HubiOriginParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Connection specific parameters')]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

philips: Annotated[PhueOriginParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Connection specific parameters')]#
ubiquiti: Annotated[UbiqOriginParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Connection specific parameters')]#

enhomie.homie.params.persist module#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.persist.HomiePersistParams(*, value_unit: Annotated[str | None, MinLen(min_length=1)] = None, value_label: Annotated[str | None, MinLen(min_length=1)] = None, value_icon: Annotated[str | None, MinLen(min_length=1)] = None, about: Annotated[str | None, MinLen(min_length=1)] = None, about_label: Annotated[str | None, MinLen(min_length=1)] = None, about_icon: Annotated[str | None, MinLen(min_length=1)] = None, level: Annotated[Literal['failure', 'information', 'success', 'warning'] | None, MinLen(min_length=1)] = None, tags: Annotated[list[str] | None, MinLen(min_length=1)] = None, expire: Annotated[str | None, MinLen(min_length=1), _PydanticGeneralMetadata(pattern=re.compile('^(\\d+(s|m|h|d|w|y))*$'))] = None)[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

about: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='About the persist entry', metadata=[MinLen(min_length=1)])]#
about_icon: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Icon for persist entry', metadata=[MinLen(min_length=1)])]#
about_label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Label for persist entry', metadata=[MinLen(min_length=1)])]#
expire: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='After when the key expires', examples=['1h', '1h30m', '1d'], metadata=[MinLen(min_length=1), _PydanticGeneralMetadata(pattern=re.compile('^(\\d+(s|m|h|d|w|y))*$'))])]#
level: Annotated[Literal['failure', 'information', 'success', 'warning'] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Severity of persist entry', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

tags: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Tags for persist entry', metadata=[MinLen(min_length=1)])]#
value_icon: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Icon for persist value', metadata=[MinLen(min_length=1)])]#
value_label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Label for persist value', metadata=[MinLen(min_length=1)])]#
value_unit: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Unit for persist value', metadata=[MinLen(min_length=1)])]#

enhomie.homie.params.plugin module#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.plugin.HomiePluginParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

enhomie.homie.params.scene module#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.scene.HomieSceneParams(_parse: ~typing.Callable[[...], ~typing.Any] | None = None, *, label: ~typing.Annotated[str | None, ~annotated_types.MinLen(min_length=1)] = None, stage: ~enhomie.homie.params.stage.HomieStageParams = <factory>, devices: ~typing.Annotated[dict[str, ~enhomie.homie.params.stage.HomieStageParams] | None, ~annotated_types.MinLen(min_length=1)] = None)[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

devices: Annotated[dict[str, HomieStageParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Device specific scene config', metadata=[MinLen(min_length=1)])]#
label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Scene name in the origin', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

stage: Annotated[HomieStageParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieStageParams, description='Default device scene config')]#

enhomie.homie.params.service module#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.service.HomieServiceMembersParams(*, actions: bool = True, streams: bool = True, updates: bool = True, restful: bool = False)[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

actions: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=True, description='Determine whether created')]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

restful: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Determine whether created')]#
streams: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=True, description='Determine whether created')]#
updates: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=True, description='Determine whether created')]#
class enhomie.homie.params.service.HomieServiceParams(*, respite: HomieServiceRespiteParams = <factory>, timeout: HomieServiceTimeoutParams = <factory>, members: HomieServiceMembersParams = <factory>)[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

members: Annotated[HomieServiceMembersParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieServiceMembersParams, description='Which members are created')]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

respite: Annotated[HomieServiceRespiteParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieServiceRespiteParams, description='When operates are performed')]#
timeout: Annotated[HomieServiceTimeoutParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieServiceTimeoutParams, description='Override source or defaults')]#
class enhomie.homie.params.service.HomieServiceRespiteParams(*, desire: Annotated[int, Ge(ge=1), Le(le=900)] = 60, update: Annotated[int, Ge(ge=1), Le(le=900)] = 60, health: Annotated[int, Ge(ge=1), Le(le=15)] = 3)[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

desire: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=60, description='How often desires performed', metadata=[Ge(ge=1), Le(le=900)])]#
health: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=3, description='How often health is checked', metadata=[Ge(ge=1), Le(le=15)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

update: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=60, description='How often updates performed', metadata=[Ge(ge=1), Le(le=900)])]#
class enhomie.homie.params.service.HomieServiceTimeoutParams(*, action: Annotated[int, Ge(ge=1), Le(le=30)] = 5, update: Annotated[int, Ge(ge=1), Le(le=30)] = 3, stream: Annotated[int, Ge(ge=1), Le(le=900)] = 60)[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

action: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=5, description='Override the actions timeout', metadata=[Ge(ge=1), Le(le=30)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

stream: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=60, description='Override the stream timeout', metadata=[Ge(ge=1), Le(le=900)])]#
update: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=3, description='Override the updates timeout', metadata=[Ge(ge=1), Le(le=30)])]#

enhomie.homie.params.stage module#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.stage.HomieStageParams(*, state: Literal['poweron', 'nopower'] | None = None, color: Annotated[str | None, MinLen(min_length=6), MaxLen(max_length=6)] = None, level: Annotated[int | None, Ge(ge=0), Le(le=100)] = None)[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

color: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Setting for the light color', metadata=[MinLen(min_length=6), MaxLen(max_length=6)])]#
level: Annotated[int | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Setting for the light level', metadata=[Ge(ge=0), Le(le=100)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

state: Annotated[Literal['poweron', 'nopower'] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Setting for the light state')]#

enhomie.homie.params.store module#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.store.HomieStoreParams(*, unique: Annotated[str, MinLen(min_length=1)], value: int | float | bool | str | None, value_unit: Annotated[str | None, MinLen(min_length=1)] = None, value_label: Annotated[str | None, MinLen(min_length=1)] = None, value_icon: Annotated[str | None, MinLen(min_length=1)] = None, about: Annotated[str | None, MinLen(min_length=1)] = None, about_label: Annotated[str | None, MinLen(min_length=1)] = None, about_icon: Annotated[str | None, MinLen(min_length=1)] = None, level: Annotated[Literal['failure', 'information', 'success', 'warning'] | None, MinLen(min_length=1)] = None, tags: Annotated[list[str] | None, MinLen(min_length=1)] = None, expire: Annotated[str | None, MinLen(min_length=1), _PydanticGeneralMetadata(pattern=re.compile('^(\\d+(s|m|h|d|w|y))*$'))] = '1d')[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

about: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='About the persist entry', metadata=[MinLen(min_length=1)])]#
about_icon: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Icon for persist entry', metadata=[MinLen(min_length=1)])]#
about_label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Label for persist entry', metadata=[MinLen(min_length=1)])]#
expire: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='After when the key expires', examples=['1h', '1h30m', '1d'], metadata=[MinLen(min_length=1), _PydanticGeneralMetadata(pattern=re.compile('^(\\d+(s|m|h|d|w|y))*$'))])]#
level: Annotated[Literal['failure', 'information', 'success', 'warning'] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Severity of persist entry', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

tags: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Tags for persist entry', metadata=[MinLen(min_length=1)])]#
unique: Annotated[str, FieldInfo(annotation=NoneType, required=True, description='Unique key for the value', metadata=[MinLen(min_length=1)])]#
value: Annotated[int | float | bool | str | None, FieldInfo(annotation=NoneType, required=True, description='Value stored at unique')]#
value_icon: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Icon for persist value', metadata=[MinLen(min_length=1)])]#
value_label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Label for persist value', metadata=[MinLen(min_length=1)])]#
value_unit: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Unit for persist value', metadata=[MinLen(min_length=1)])]#

enhomie.homie.params.where module#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.where.HomieWhereParams(*, negate: bool = False, family: Annotated[str, MinLen(min_length=1)] = 'default', builtins_store: DriverBltnStoreParams | None = None, builtins_period: DriverBltnPeriodParams | None = None, philips_change: DriverPhueChangeParams | None = None, ubiquiti_client: DriverUbiqClientParams | None = None)[source]#

Bases: HomiePluginParams

Process and validate the Homie configuration parameters.

Note

When using the default family, the conditons are in an AND relationship. If another name is given for family, those will be with an OR relationship.

builtins_period: Annotated[DriverBltnPeriodParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
builtins_store: Annotated[DriverBltnStoreParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
family: Annotated[str, FieldInfo(annotation=NoneType, required=False, default='default', description='Combine conditions in group', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

negate: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Invert conditional outcome')]#
philips_change: Annotated[DriverPhueChangeParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
ubiquiti_client: Annotated[DriverUbiqClientParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#

Module contents#

Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution is permitted, for more information consult the project license file.

class enhomie.homie.params.HomieAspireParams(*, devices: Annotated[list[str] | None, MinLen(min_length=1)] = None, groups: Annotated[list[str] | None, MinLen(min_length=1)] = None, stage: HomieStageParams | None = None, scene: Annotated[str | None, MinLen(min_length=1)] = None, store: Annotated[list[HomieStoreParams] | None, MinLen(min_length=1)] = None, occurs: Annotated[list[HomieOccurParams] | None, MinLen(min_length=1)] = None, wheres: Annotated[list[HomieWhereParams] | None, MinLen(min_length=1)] = None, pause: Annotated[int, Ge(ge=1), Le(le=86400)] = 3)[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

devices: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Devices that are in scope', metadata=[MinLen(min_length=1)])]#
groups: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Groups that are in scope', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

occurs: Annotated[list[HomieOccurParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugins for the conditions', metadata=[MinLen(min_length=1)])]#
pause: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=3, description='Delay before acting again', metadata=[Ge(ge=1), Le(le=86400)])]#
scene: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Update the group light scene', metadata=[MinLen(min_length=1)])]#
stage: Annotated[HomieStageParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Default device scene config')]#
store: Annotated[list[HomieStoreParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Update values in database', metadata=[MinLen(min_length=1)])]#
wheres: Annotated[list[HomieWhereParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugins for the conditions', metadata=[MinLen(min_length=1)])]#
class enhomie.homie.params.HomieChildParams(_parse: Callable[[...], Any] | None = None)[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class enhomie.homie.params.HomieDesireParams(*, devices: Annotated[list[str] | None, MinLen(min_length=1)] = None, groups: Annotated[list[str] | None, MinLen(min_length=1)] = None, stage: HomieStageParams | None = None, scene: Annotated[str | None, MinLen(min_length=1)] = None, store: Annotated[list[HomieStoreParams] | None, MinLen(min_length=1)] = None, wheres: Annotated[list[HomieWhereParams] | None, MinLen(min_length=1)] = None, pause: Annotated[int, Ge(ge=0), Le(le=86400)] = 0, delay: bool = True, weight: Annotated[int, Ge(ge=0), Le(le=1000.0)] = 0)[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

delay: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=True, description='Enforce pause on initial')]#
devices: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Devices that are in scope', metadata=[MinLen(min_length=1)])]#
groups: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Groups that are in scope', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

pause: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=0, description='Delay before acting again', metadata=[Ge(ge=0), Le(le=86400)])]#
scene: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Update the group light scene', metadata=[MinLen(min_length=1)])]#
stage: Annotated[HomieStageParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Default device scene config')]#
store: Annotated[list[HomieStoreParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Update values in database', metadata=[MinLen(min_length=1)])]#
weight: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=0, description='Precedence when multiple', metadata=[Ge(ge=0), Le(le=1000.0)])]#
wheres: Annotated[list[HomieWhereParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugins for the conditions', metadata=[MinLen(min_length=1)])]#
class enhomie.homie.params.HomieDeviceParams(_parse: Callable[[...], Any] | None = None, *, origin: Annotated[str, MinLen(min_length=1)], label: Annotated[str | None, MinLen(min_length=1)] = None, unique: Annotated[str | None, MinLen(min_length=1)] = None)[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Device name in the origin', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

origin: Annotated[str, FieldInfo(annotation=NoneType, required=True, description='Origin where device exists', metadata=[MinLen(min_length=1)])]#
unique: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Unique identifier in origin', metadata=[MinLen(min_length=1)])]#
class enhomie.homie.params.HomieGroupParams(*, origin: Annotated[str | None, MinLen(min_length=1)] = None, label: Annotated[str | None, MinLen(min_length=1)] = None, devices: Annotated[list[str] | None, MinLen(min_length=1)] = None)[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

devices: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='List of devices in group', metadata=[MinLen(min_length=1)])]#
label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Group name in the origin', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

origin: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Origin where group exists', metadata=[MinLen(min_length=1)])]#
class enhomie.homie.params.HomieOccurParams(*, builtins_regexp: DriverBltnRegexpParams | None = None, philips_button: DriverPhueButtonParams | None = None, philips_contact: DriverPhueContactParams | None = None, philips_motion: DriverPhueMotionParams | None = None, philips_scene: DriverPhueSceneParams | None = None)[source]#

Bases: HomiePluginParams

Process and validate the Homie configuration parameters.

builtins_regexp: Annotated[DriverBltnRegexpParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

philips_button: Annotated[DriverPhueButtonParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
philips_contact: Annotated[DriverPhueContactParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
philips_motion: Annotated[DriverPhueMotionParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
philips_scene: Annotated[DriverPhueSceneParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
class enhomie.homie.params.HomieOriginParams(_parse: Callable[[...], Any] | None = None, *, hubitat: HubiOriginParams | None = None, philips: PhueOriginParams | None = None, ubiquiti: UbiqOriginParams | None = None)[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

hubitat: Annotated[HubiOriginParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Connection specific parameters')]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

philips: Annotated[PhueOriginParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Connection specific parameters')]#
ubiquiti: Annotated[UbiqOriginParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Connection specific parameters')]#
class enhomie.homie.params.HomieParams(_parse: ~typing.Callable[[...], ~typing.Any] | None = None, *, enconfig: ~encommon.config.params.ConfigParams | None = None, enlogger: ~encommon.config.params.LoggerParams | None = None, encrypts: ~encommon.crypts.params.CryptsParams | None = None, database: ~typing.Annotated[str, ~annotated_types.MinLen(min_length=1)] = 'sqlite:///:memory:', dryrun: bool = False, potent: bool = True, printer: ~enhomie.homie.params.homie.HomiePrinterParams = <factory>, service: ~enhomie.homie.params.service.HomieServiceParams = <factory>, restful: ~enhomie.restful.params.RestfulServiceParams = <factory>, persists: ~typing.Annotated[dict[str, ~enhomie.homie.params.persist.HomiePersistParams] | None, ~annotated_types.MinLen(min_length=1)] = None, filters: ~enhomie.homie.params.homie.HomieFiltersParams = <factory>, origins: ~typing.Annotated[dict[str, ~enhomie.homie.params.origin.HomieOriginParams] | None, ~annotated_types.MinLen(min_length=1)] = None, devices: ~typing.Annotated[dict[str, ~enhomie.homie.params.device.HomieDeviceParams] | None, ~annotated_types.MinLen(min_length=1)] = None, groups: ~typing.Annotated[dict[str, ~enhomie.homie.params.group.HomieGroupParams] | None, ~annotated_types.MinLen(min_length=1)] = None, scenes: ~typing.Annotated[dict[str, ~enhomie.homie.params.scene.HomieSceneParams] | None, ~annotated_types.MinLen(min_length=1)] = None, desires: ~typing.Annotated[dict[str, ~enhomie.homie.params.desire.HomieDesireParams] | None, ~annotated_types.MinLen(min_length=1)] = None, aspires: ~typing.Annotated[dict[str, ~enhomie.homie.params.aspire.HomieAspireParams] | None, ~annotated_types.MinLen(min_length=1)] = None)[source]#

Bases: Params

Process and validate the core configuration parameters.

aspires: Annotated[dict[str, HomieAspireParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie aspires', metadata=[MinLen(min_length=1)])]#
database: Annotated[str, FieldInfo(annotation=NoneType, required=False, default='sqlite:///:memory:', description='Database connection string', metadata=[MinLen(min_length=1)])]#
desires: Annotated[dict[str, HomieDesireParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie desires', metadata=[MinLen(min_length=1)])]#
devices: Annotated[dict[str, HomieDeviceParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie devices', metadata=[MinLen(min_length=1)])]#
dryrun: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Determine if changes applied')]#
filters: Annotated[HomieFiltersParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieFiltersParams, description='Determine object instantiation')]#
groups: Annotated[dict[str, HomieGroupParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie groups', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

origins: Annotated[dict[str, HomieOriginParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie origins', metadata=[MinLen(min_length=1)])]#
persists: Annotated[dict[str, HomiePersistParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for common persists', metadata=[MinLen(min_length=1)])]#
potent: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=True, description='Ignore idempotency in change')]#
printer: Annotated[HomiePrinterParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomiePrinterParams, description='Print the stream to console')]#
restful: Annotated[RestfulServiceParams, FieldInfo(annotation=NoneType, required=False, default_factory=RestfulServiceParams, description='Parameters for Homie RESTful')]#
scenes: Annotated[dict[str, HomieSceneParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie scenes', metadata=[MinLen(min_length=1)])]#
service: Annotated[HomieServiceParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieServiceParams, description='Parameters for Homie Service')]#
class enhomie.homie.params.HomieParamsModel[source]#

Bases: BaseModel

Process and validate the Homie configuration parameters.

model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class enhomie.homie.params.HomiePersistParams(*, value_unit: Annotated[str | None, MinLen(min_length=1)] = None, value_label: Annotated[str | None, MinLen(min_length=1)] = None, value_icon: Annotated[str | None, MinLen(min_length=1)] = None, about: Annotated[str | None, MinLen(min_length=1)] = None, about_label: Annotated[str | None, MinLen(min_length=1)] = None, about_icon: Annotated[str | None, MinLen(min_length=1)] = None, level: Annotated[Literal['failure', 'information', 'success', 'warning'] | None, MinLen(min_length=1)] = None, tags: Annotated[list[str] | None, MinLen(min_length=1)] = None, expire: Annotated[str | None, MinLen(min_length=1), _PydanticGeneralMetadata(pattern=re.compile('^(\\d+(s|m|h|d|w|y))*$'))] = None)[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

about: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='About the persist entry', metadata=[MinLen(min_length=1)])]#
about_icon: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Icon for persist entry', metadata=[MinLen(min_length=1)])]#
about_label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Label for persist entry', metadata=[MinLen(min_length=1)])]#
expire: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='After when the key expires', examples=['1h', '1h30m', '1d'], metadata=[MinLen(min_length=1), _PydanticGeneralMetadata(pattern=re.compile('^(\\d+(s|m|h|d|w|y))*$'))])]#
level: Annotated[Literal['failure', 'information', 'success', 'warning'] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Severity of persist entry', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

tags: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Tags for persist entry', metadata=[MinLen(min_length=1)])]#
value_icon: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Icon for persist value', metadata=[MinLen(min_length=1)])]#
value_label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Label for persist value', metadata=[MinLen(min_length=1)])]#
value_unit: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Unit for persist value', metadata=[MinLen(min_length=1)])]#
class enhomie.homie.params.HomiePluginParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class enhomie.homie.params.HomiePrinterParams(*, action: bool = False, update: bool = False, stream: bool = False, desire: bool = False, aspire: bool = False)[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

action: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the actions to console')]#
aspire: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the aspires to console')]#
desire: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the aspires to console')]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

stream: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the streams to console')]#
update: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the updates to console')]#
class enhomie.homie.params.HomieSceneParams(_parse: ~typing.Callable[[...], ~typing.Any] | None = None, *, label: ~typing.Annotated[str | None, ~annotated_types.MinLen(min_length=1)] = None, stage: ~enhomie.homie.params.stage.HomieStageParams = <factory>, devices: ~typing.Annotated[dict[str, ~enhomie.homie.params.stage.HomieStageParams] | None, ~annotated_types.MinLen(min_length=1)] = None)[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

devices: Annotated[dict[str, HomieStageParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Device specific scene config', metadata=[MinLen(min_length=1)])]#
label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Scene name in the origin', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

stage: Annotated[HomieStageParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieStageParams, description='Default device scene config')]#
class enhomie.homie.params.HomieServiceParams(*, respite: HomieServiceRespiteParams = <factory>, timeout: HomieServiceTimeoutParams = <factory>, members: HomieServiceMembersParams = <factory>)[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

members: Annotated[HomieServiceMembersParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieServiceMembersParams, description='Which members are created')]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

respite: Annotated[HomieServiceRespiteParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieServiceRespiteParams, description='When operates are performed')]#
timeout: Annotated[HomieServiceTimeoutParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieServiceTimeoutParams, description='Override source or defaults')]#
class enhomie.homie.params.HomieStoreParams(*, unique: Annotated[str, MinLen(min_length=1)], value: int | float | bool | str | None, value_unit: Annotated[str | None, MinLen(min_length=1)] = None, value_label: Annotated[str | None, MinLen(min_length=1)] = None, value_icon: Annotated[str | None, MinLen(min_length=1)] = None, about: Annotated[str | None, MinLen(min_length=1)] = None, about_label: Annotated[str | None, MinLen(min_length=1)] = None, about_icon: Annotated[str | None, MinLen(min_length=1)] = None, level: Annotated[Literal['failure', 'information', 'success', 'warning'] | None, MinLen(min_length=1)] = None, tags: Annotated[list[str] | None, MinLen(min_length=1)] = None, expire: Annotated[str | None, MinLen(min_length=1), _PydanticGeneralMetadata(pattern=re.compile('^(\\d+(s|m|h|d|w|y))*$'))] = '1d')[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

about: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='About the persist entry', metadata=[MinLen(min_length=1)])]#
about_icon: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Icon for persist entry', metadata=[MinLen(min_length=1)])]#
about_label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Label for persist entry', metadata=[MinLen(min_length=1)])]#
expire: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='After when the key expires', examples=['1h', '1h30m', '1d'], metadata=[MinLen(min_length=1), _PydanticGeneralMetadata(pattern=re.compile('^(\\d+(s|m|h|d|w|y))*$'))])]#
level: Annotated[Literal['failure', 'information', 'success', 'warning'] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Severity of persist entry', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

tags: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Tags for persist entry', metadata=[MinLen(min_length=1)])]#
unique: Annotated[str, FieldInfo(annotation=NoneType, required=True, description='Unique key for the value', metadata=[MinLen(min_length=1)])]#
value: Annotated[int | float | bool | str | None, FieldInfo(annotation=NoneType, required=True, description='Value stored at unique')]#
value_icon: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Icon for persist value', metadata=[MinLen(min_length=1)])]#
value_label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Label for persist value', metadata=[MinLen(min_length=1)])]#
value_unit: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Unit for persist value', metadata=[MinLen(min_length=1)])]#
class enhomie.homie.params.HomieWhereParams(*, negate: bool = False, family: Annotated[str, MinLen(min_length=1)] = 'default', builtins_store: DriverBltnStoreParams | None = None, builtins_period: DriverBltnPeriodParams | None = None, philips_change: DriverPhueChangeParams | None = None, ubiquiti_client: DriverUbiqClientParams | None = None)[source]#

Bases: HomiePluginParams

Process and validate the Homie configuration parameters.

Note

When using the default family, the conditons are in an AND relationship. If another name is given for family, those will be with an OR relationship.

builtins_period: Annotated[DriverBltnPeriodParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
builtins_store: Annotated[DriverBltnStoreParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
family: Annotated[str, FieldInfo(annotation=NoneType, required=False, default='default', description='Combine conditions in group', metadata=[MinLen(min_length=1)])]#
model_config = {'extra': 'forbid'}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

negate: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Invert conditional outcome')]#
philips_change: Annotated[DriverPhueChangeParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
ubiquiti_client: Annotated[DriverUbiqClientParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#