enhomie.homie.params package#

Submodules#

enhomie.homie.params.aspire module#

class enhomie.homie.params.aspire.HomieAspireParams[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

devices

list[str] | None

No

None

min_length=1

groups

list[str] | None

No

None

min_length=1

occurs

list[HomieOccurParams] | None

No

None

min_length=1

pause

int

No

3

ge=1, le=86400

scene

str | None

No

None

min_length=1

stage

HomieStageParams | None

No

None

store

list[HomieStoreParams] | None

No

None

min_length=1

wheres

list[HomieWhereParams] | None

No

None

min_length=1

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

enhomie.homie.params.child module#

class enhomie.homie.params.child.HomieChildParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

enhomie.homie.params.common module#

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

Bases: BaseModel

Process and validate the Homie configuration parameters.

enhomie.homie.params.desire module#

class enhomie.homie.params.desire.HomieDesireParams[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

delay

bool

No

True

devices

list[str] | None

No

None

min_length=1

groups

list[str] | None

No

None

min_length=1

pause

int

No

0

ge=0, le=86400

scene

str | None

No

None

min_length=1

stage

HomieStageParams | None

No

None

store

list[HomieStoreParams] | None

No

None

min_length=1

weight

int

No

0

ge=0, le=1000.0

wheres

list[HomieWhereParams] | None

No

None

min_length=1

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)])]#
stage: Annotated[HomieStageParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Default device scene config')]#
scene: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Update the group light scene', metadata=[MinLen(min_length=1)])]#
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)])]#
pause: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=0, description='Delay before acting again', metadata=[Ge(ge=0), Le(le=86400)])]#
delay: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=True, description='Enforce pause on initial')]#
weight: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=0, description='Precedence when multiple', metadata=[Ge(ge=0), Le(le=1000.0)])]#

enhomie.homie.params.device module#

class enhomie.homie.params.device.HomieDeviceParams[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

label

str | None

No

None

min_length=1

origin

str

Yes

min_length=1

unique

str | None

No

None

min_length=1

origin: Annotated[str, FieldInfo(annotation=NoneType, required=True, description='Origin where device exists', metadata=[MinLen(min_length=1)])]#
label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Device name in the origin', 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#

class enhomie.homie.params.group.HomieGroupParams[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

devices

list[str] | None

No

None

min_length=1

label

str | None

No

None

min_length=1

origin

str | None

No

None

min_length=1

origin: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Origin where group exists', 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)])]#
devices: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='List of devices in group', metadata=[MinLen(min_length=1)])]#

enhomie.homie.params.homie module#

class enhomie.homie.params.homie.HomiePrinterParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

action

bool

No

False

aspire

bool

No

False

desire

bool

No

False

stream

bool

No

False

update

bool

No

False

action: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the actions to console')]#
update: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the updates to console')]#
stream: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the streams to console')]#
desire: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the aspires to console')]#
aspire: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the aspires to console')]#
class enhomie.homie.params.homie.HomieFiltersParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

aspires

list[str] | None

No

None

min_length=1

desires

list[str] | None

No

None

min_length=1

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)])]#
class enhomie.homie.params.homie.HomieParams[source]#

Bases: Params

Process and validate the core configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

aspires

dict[str, HomieAspireParams] | None

No

None

min_length=1

console

bool

No

False

database

str

No

'sqlite:///:memory:'

min_length=1

debug

bool

No

False

desires

dict[str, HomieDesireParams] | None

No

None

min_length=1

devices

dict[str, HomieDeviceParams] | None

No

None

min_length=1

dryrun

bool

No

False

enconfig

ConfigParams | None

No

None

encrypts

CryptsParams | None

No

None

enlogger

LoggerParams | None

No

None

filters

HomieFiltersParams

No

factory

forced

bool

No

True

groups

dict[str, HomieGroupParams] | None

No

None

min_length=1

origins

dict[str, HomieOriginParams] | None

No

None

min_length=1

persists

dict[str, HomiePersistParams] | None

No

None

min_length=1

printer

HomiePrinterParams

No

factory

restful

RestfulServiceParams

No

factory

scenes

dict[str, HomieSceneParams] | None

No

None

min_length=1

service

HomieServiceParams

No

factory

database: Annotated[str, FieldInfo(annotation=NoneType, required=False, default='sqlite:///:memory:', description='Database connection string', metadata=[MinLen(min_length=1)])]#
console: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Output console information; parameter is parsed by and used in low-level config')]#
debug: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Enable logging level debug; parameter is parsed by and used in low-level config')]#
dryrun: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Whether to allow changes')]#
forced: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=True, description='Ignore present idempotency')]#
printer: Annotated[HomiePrinterParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomiePrinterParams, description='Print the stream to console')]#
service: Annotated[HomieServiceParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieServiceParams, description='Parameters for Homie Service')]#
restful: Annotated[RestfulServiceParams, FieldInfo(annotation=NoneType, required=False, default_factory=RestfulServiceParams, description='Parameters for Homie RESTful')]#
persists: Annotated[dict[str, HomiePersistParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for common persists', metadata=[MinLen(min_length=1)])]#
filters: Annotated[HomieFiltersParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieFiltersParams, description='Determine object instantiation')]#
origins: Annotated[dict[str, HomieOriginParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie origins', 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)])]#
groups: Annotated[dict[str, HomieGroupParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie groups', metadata=[MinLen(min_length=1)])]#
scenes: Annotated[dict[str, HomieSceneParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie scenes', 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)])]#
aspires: Annotated[dict[str, HomieAspireParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie aspires', metadata=[MinLen(min_length=1)])]#

enhomie.homie.params.occur module#

class enhomie.homie.params.occur.HomieOccurParams[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')]#
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#

class enhomie.homie.params.origin.HomieOriginParams[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

hubitat

HubiOriginParams | None

No

None

philips

PhueOriginParams | None

No

None

ubiquiti

UbiqOriginParams | None

No

None

hubitat: Annotated[HubiOriginParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Connection specific parameters')]#
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#

class enhomie.homie.params.persist.HomiePersistParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

about

str | None

No

None

min_length=1

about_icon

str | None

No

None

min_length=1

about_label

str | None

No

None

min_length=1

expire

str | None

No

None

min_length=1, pattern=``re.compile(‘^(\d+(s|m|h|d|w|y))*$’)``

level

Literal[‘failure’, ‘information’, ‘success’, ‘warning’] | None

No

None

min_length=1

tags

list[str] | None

No

None

min_length=1

value_icon

str | None

No

None

min_length=1

value_label

str | None

No

None

min_length=1

value_unit

str | None

No

None

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)])]#
value_label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Label for persist value', 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)])]#
about: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='About the 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)])]#
about_icon: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Icon for persist entry', metadata=[MinLen(min_length=1)])]#
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)])]#
tags: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Tags 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))*$'))])]#

enhomie.homie.params.plugin module#

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

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

enhomie.homie.params.scene module#

class enhomie.homie.params.scene.HomieSceneParams[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

devices

dict[str, HomieStageParams] | None

No

None

min_length=1

label

str | None

No

None

min_length=1

stage

HomieStageParams

No

factory

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

enhomie.homie.params.service module#

class enhomie.homie.params.service.HomieServiceTimeoutParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

action

int

No

5

ge=1, le=30

stream

int

No

60

ge=1, le=900

update

int

No

3

ge=1, le=30

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

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

desire

int

No

60

ge=1, le=900

health

int

No

3

ge=1, le=15

update

int

No

60

ge=1, le=900

desire: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=60, description='How often desires performed', metadata=[Ge(ge=1), Le(le=900)])]#
update: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=60, description='How often updates 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)])]#
class enhomie.homie.params.service.HomieServiceMembersParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

actions

bool

No

True

restful

bool

No

False

streams

bool

No

True

updates

bool

No

True

actions: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=True, 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')]#
restful: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Determine whether created')]#
class enhomie.homie.params.service.HomieServiceParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

members

HomieServiceMembersParams

No

factory

respite

HomieServiceRespiteParams

No

factory

timeout

HomieServiceTimeoutParams

No

factory

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')]#
members: Annotated[HomieServiceMembersParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieServiceMembersParams, description='Which members are created')]#

enhomie.homie.params.stage module#

class enhomie.homie.params.stage.HomieStageParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

color

str | None

No

None

min_length=6, max_length=6

level

int | None

No

None

ge=0, le=100

state

Literal[‘poweron’, ‘nopower’] | None

No

None

state: Annotated[Literal['poweron', 'nopower'] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Setting for the light state')]#
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)])]#

enhomie.homie.params.store module#

class enhomie.homie.params.store.HomieStoreParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

about

str | None

No

None

min_length=1

about_icon

str | None

No

None

min_length=1

about_label

str | None

No

None

min_length=1

expire

str | None

No

'1d'

min_length=1, pattern=``re.compile(‘^(\d+(s|m|h|d|w|y))*$’)``

level

Literal[‘failure’, ‘information’, ‘success’, ‘warning’] | None

No

None

min_length=1

tags

list[str] | None

No

None

min_length=1

unique

str

Yes

min_length=1

value

int | float | bool | str | None

Yes

value_icon

str | None

No

None

min_length=1

value_label

str | None

No

None

min_length=1

value_unit

str | None

No

None

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_unit: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Unit 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_icon: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Icon for persist value', metadata=[MinLen(min_length=1)])]#
about: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='About the 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)])]#
about_icon: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Icon for persist entry', metadata=[MinLen(min_length=1)])]#
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)])]#
tags: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Tags 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))*$'))])]#

enhomie.homie.params.where module#

class enhomie.homie.params.where.HomieWhereParams[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.

Fields#

Field

Type

Required

Default

Constraints

builtins_period

DriverBltnPeriodParams | None

No

None

builtins_store

DriverBltnStoreParams | None

No

None

family

str

No

'default'

min_length=1

negate

bool

No

False

philips_change

DriverPhueChangeParams | None

No

None

ubiquiti_client

DriverUbiqClientParams | None

No

None

negate: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Invert conditional outcome')]#
family: Annotated[str, FieldInfo(annotation=NoneType, required=False, default='default', description='Combine conditions in group', metadata=[MinLen(min_length=1)])]#
builtins_store: Annotated[DriverBltnStoreParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
builtins_period: Annotated[DriverBltnPeriodParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
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#

class enhomie.homie.params.HomieParams[source]#

Bases: Params

Process and validate the core configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

aspires

dict[str, HomieAspireParams] | None

No

None

min_length=1

console

bool

No

False

database

str

No

'sqlite:///:memory:'

min_length=1

debug

bool

No

False

desires

dict[str, HomieDesireParams] | None

No

None

min_length=1

devices

dict[str, HomieDeviceParams] | None

No

None

min_length=1

dryrun

bool

No

False

enconfig

ConfigParams | None

No

None

encrypts

CryptsParams | None

No

None

enlogger

LoggerParams | None

No

None

filters

HomieFiltersParams

No

factory

forced

bool

No

True

groups

dict[str, HomieGroupParams] | None

No

None

min_length=1

origins

dict[str, HomieOriginParams] | None

No

None

min_length=1

persists

dict[str, HomiePersistParams] | None

No

None

min_length=1

printer

HomiePrinterParams

No

factory

restful

RestfulServiceParams

No

factory

scenes

dict[str, HomieSceneParams] | None

No

None

min_length=1

service

HomieServiceParams

No

factory

database: Annotated[str, FieldInfo(annotation=NoneType, required=False, default='sqlite:///:memory:', description='Database connection string', metadata=[MinLen(min_length=1)])]#
console: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Output console information; parameter is parsed by and used in low-level config')]#
debug: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Enable logging level debug; parameter is parsed by and used in low-level config')]#
dryrun: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Whether to allow changes')]#
forced: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=True, description='Ignore present idempotency')]#
printer: Annotated[HomiePrinterParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomiePrinterParams, description='Print the stream to console')]#
service: Annotated[HomieServiceParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieServiceParams, description='Parameters for Homie Service')]#
restful: Annotated[RestfulServiceParams, FieldInfo(annotation=NoneType, required=False, default_factory=RestfulServiceParams, description='Parameters for Homie RESTful')]#
persists: Annotated[dict[str, HomiePersistParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for common persists', metadata=[MinLen(min_length=1)])]#
filters: Annotated[HomieFiltersParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieFiltersParams, description='Determine object instantiation')]#
origins: Annotated[dict[str, HomieOriginParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie origins', 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)])]#
groups: Annotated[dict[str, HomieGroupParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie groups', metadata=[MinLen(min_length=1)])]#
scenes: Annotated[dict[str, HomieSceneParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie scenes', 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)])]#
aspires: Annotated[dict[str, HomieAspireParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Homie aspires', metadata=[MinLen(min_length=1)])]#
class enhomie.homie.params.HomieParamsModel[source]#

Bases: BaseModel

Process and validate the Homie configuration parameters.

class enhomie.homie.params.HomiePrinterParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

action

bool

No

False

aspire

bool

No

False

desire

bool

No

False

stream

bool

No

False

update

bool

No

False

action: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the actions to console')]#
update: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the updates to console')]#
stream: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the streams to console')]#
desire: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the aspires to console')]#
aspire: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Print the aspires to console')]#
class enhomie.homie.params.HomiePersistParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

about

str | None

No

None

min_length=1

about_icon

str | None

No

None

min_length=1

about_label

str | None

No

None

min_length=1

expire

str | None

No

None

min_length=1, pattern=``re.compile(‘^(\d+(s|m|h|d|w|y))*$’)``

level

Literal[‘failure’, ‘information’, ‘success’, ‘warning’] | None

No

None

min_length=1

tags

list[str] | None

No

None

min_length=1

value_icon

str | None

No

None

min_length=1

value_label

str | None

No

None

min_length=1

value_unit

str | None

No

None

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)])]#
value_label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Label for persist value', 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)])]#
about: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='About the 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)])]#
about_icon: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Icon for persist entry', metadata=[MinLen(min_length=1)])]#
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)])]#
tags: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Tags 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))*$'))])]#
class enhomie.homie.params.HomieChildParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

class enhomie.homie.params.HomieOriginParams[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

hubitat

HubiOriginParams | None

No

None

philips

PhueOriginParams | None

No

None

ubiquiti

UbiqOriginParams | None

No

None

hubitat: Annotated[HubiOriginParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Connection specific parameters')]#
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.HomieDeviceParams[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

label

str | None

No

None

min_length=1

origin

str

Yes

min_length=1

unique

str | None

No

None

min_length=1

origin: Annotated[str, FieldInfo(annotation=NoneType, required=True, description='Origin where device exists', metadata=[MinLen(min_length=1)])]#
label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Device name in the origin', 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[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

devices

list[str] | None

No

None

min_length=1

label

str | None

No

None

min_length=1

origin

str | None

No

None

min_length=1

origin: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Origin where group exists', 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)])]#
devices: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='List of devices in group', metadata=[MinLen(min_length=1)])]#
class enhomie.homie.params.HomieSceneParams[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

devices

dict[str, HomieStageParams] | None

No

None

min_length=1

label

str | None

No

None

min_length=1

stage

HomieStageParams

No

factory

label: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Scene name in the origin', metadata=[MinLen(min_length=1)])]#
stage: Annotated[HomieStageParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieStageParams, description='Default device scene config')]#
devices: Annotated[dict[str, HomieStageParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Device specific scene config', metadata=[MinLen(min_length=1)])]#
class enhomie.homie.params.HomieAspireParams[source]#

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

devices

list[str] | None

No

None

min_length=1

groups

list[str] | None

No

None

min_length=1

occurs

list[HomieOccurParams] | None

No

None

min_length=1

pause

int

No

3

ge=1, le=86400

scene

str | None

No

None

min_length=1

stage

HomieStageParams | None

No

None

store

list[HomieStoreParams] | None

No

None

min_length=1

wheres

list[HomieWhereParams] | None

No

None

min_length=1

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

Bases: HomieChildParams

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

delay

bool

No

True

devices

list[str] | None

No

None

min_length=1

groups

list[str] | None

No

None

min_length=1

pause

int

No

0

ge=0, le=86400

scene

str | None

No

None

min_length=1

stage

HomieStageParams | None

No

None

store

list[HomieStoreParams] | None

No

None

min_length=1

weight

int

No

0

ge=0, le=1000.0

wheres

list[HomieWhereParams] | None

No

None

min_length=1

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)])]#
stage: Annotated[HomieStageParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Default device scene config')]#
scene: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Update the group light scene', metadata=[MinLen(min_length=1)])]#
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)])]#
pause: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=0, description='Delay before acting again', metadata=[Ge(ge=0), Le(le=86400)])]#
delay: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=True, description='Enforce pause on initial')]#
weight: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=0, description='Precedence when multiple', metadata=[Ge(ge=0), Le(le=1000.0)])]#
class enhomie.homie.params.HomieServiceParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

members

HomieServiceMembersParams

No

factory

respite

HomieServiceRespiteParams

No

factory

timeout

HomieServiceTimeoutParams

No

factory

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')]#
members: Annotated[HomieServiceMembersParams, FieldInfo(annotation=NoneType, required=False, default_factory=HomieServiceMembersParams, description='Which members are created')]#
class enhomie.homie.params.HomiePluginParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

class enhomie.homie.params.HomieStoreParams[source]#

Bases: HomieParamsModel

Process and validate the Homie configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

about

str | None

No

None

min_length=1

about_icon

str | None

No

None

min_length=1

about_label

str | None

No

None

min_length=1

expire

str | None

No

'1d'

min_length=1, pattern=``re.compile(‘^(\d+(s|m|h|d|w|y))*$’)``

level

Literal[‘failure’, ‘information’, ‘success’, ‘warning’] | None

No

None

min_length=1

tags

list[str] | None

No

None

min_length=1

unique

str

Yes

min_length=1

value

int | float | bool | str | None

Yes

value_icon

str | None

No

None

min_length=1

value_label

str | None

No

None

min_length=1

value_unit

str | None

No

None

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_unit: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Unit 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_icon: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Icon for persist value', metadata=[MinLen(min_length=1)])]#
about: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='About the 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)])]#
about_icon: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Icon for persist entry', metadata=[MinLen(min_length=1)])]#
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)])]#
tags: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Tags 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))*$'))])]#
class enhomie.homie.params.HomieOccurParams[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')]#
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.HomieWhereParams[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.

Fields#

Field

Type

Required

Default

Constraints

builtins_period

DriverBltnPeriodParams | None

No

None

builtins_store

DriverBltnStoreParams | None

No

None

family

str

No

'default'

min_length=1

negate

bool

No

False

philips_change

DriverPhueChangeParams | None

No

None

ubiquiti_client

DriverUbiqClientParams | None

No

None

negate: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Invert conditional outcome')]#
family: Annotated[str, FieldInfo(annotation=NoneType, required=False, default='default', description='Combine conditions in group', metadata=[MinLen(min_length=1)])]#
builtins_store: Annotated[DriverBltnStoreParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
builtins_period: Annotated[DriverBltnPeriodParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Plugin for the operations')]#
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')]#