Skip to content

Commit

Permalink
Fixing static property value assign
Browse files Browse the repository at this point in the history
  • Loading branch information
akadlec committed Mar 27, 2022
1 parent 5cf47a5 commit cd7de4d
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 17 deletions.
2 changes: 1 addition & 1 deletion fastybird_fb_bus_connector/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

from .bootstrap import create_connector

__version__ = "0.26.0"
__version__ = "0.27.0"

__all__ = ["connector", "bootstrap"]

Expand Down
2 changes: 1 addition & 1 deletion fastybird_fb_bus_connector/clients/apiv1.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ class ApiV1Client(IClient): # pylint: disable=too-few-public-methods, too-many-
@author Adam Kadlec <adam.kadlec@fastybird.com>
"""

__discovery_enabled: bool = True
__discovery_enabled: bool = False

__devices_registry: DevicesRegistry
__registers_registry: RegistersRegistry
Expand Down
37 changes: 25 additions & 12 deletions fastybird_fb_bus_connector/connector.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
from fastybird_devices_module.entities.device import (
DeviceControlEntity,
DeviceDynamicPropertyEntity,
DevicePropertyEntity,
DevicePropertyEntity, DeviceStaticPropertyEntity,
)
from fastybird_devices_module.exceptions import RestartConnectorException
from fastybird_devices_module.repositories.device import DevicesRepository
Expand Down Expand Up @@ -192,20 +192,33 @@ def reset_devices(self) -> None:

def initialize_device_property(self, device: FbBusDeviceEntity, device_property: DevicePropertyEntity) -> None:
"""Initialize device property aka attribute register in connector registry"""
match = re.compile("(?P<name>[a-zA-Z_]+)_(?P<address>[0-9]+)")
match = re.compile("(?P<name>[a-zA-Z-]+)_(?P<address>[0-9]+)")

parsed_property_identifier = match.fullmatch(device_property.identifier)

if parsed_property_identifier is not None:
self.__registers_registry.append_attribute_register(
device_id=device.id,
register_id=device_property.id,
register_address=int(parsed_property_identifier.group("address")),
register_data_type=device_property.data_type,
register_name=str(parsed_property_identifier.group("name")),
register_settable=device_property.settable,
register_queryable=device_property.queryable,
)
if isinstance(device_property, DeviceDynamicPropertyEntity):
self.__registers_registry.append_attribute_register(
device_id=device.id,
register_id=device_property.id,
register_address=int(parsed_property_identifier.group("address")),
register_data_type=device_property.data_type,
register_name=str(parsed_property_identifier.group("name")),
register_settable=device_property.settable,
register_queryable=device_property.queryable,
)

elif isinstance(device_property, DeviceStaticPropertyEntity):
self.__registers_registry.append_attribute_register(
device_id=device.id,
register_id=device_property.id,
register_address=int(parsed_property_identifier.group("address")),
register_data_type=device_property.data_type,
register_name=str(parsed_property_identifier.group("name")),
register_settable=device_property.settable,
register_queryable=device_property.queryable,
register_value=device_property.value,
)

# -----------------------------------------------------------------------------

Expand Down Expand Up @@ -258,7 +271,7 @@ def initialize_device_channel_property(
channel_property: ChannelPropertyEntity,
) -> None:
"""Initialize device channel property aka input or output register in connector registry"""
match = re.compile("(?P<name>[a-zA-Z_]+)_(?P<address>[0-9]+)")
match = re.compile("(?P<name>[a-zA-Z-]+)_(?P<address>[0-9]+)")

parsed_property_identifier = match.fullmatch(channel_property.identifier)

Expand Down
13 changes: 10 additions & 3 deletions fastybird_fb_bus_connector/registry/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -672,6 +672,7 @@ def append_attribute_register( # pylint: disable=too-many-arguments
register_name: Optional[str] = None,
register_settable: bool = False,
register_queryable: bool = False,
register_value: Union[str, int, float, bool, datetime, ButtonPayload, SwitchPayload, None] = None,
) -> AttributeRegisterRecord:
"""Append new attribute register or replace existing register in registry"""
existing_register = self.get_by_id(register_id=register_id)
Expand Down Expand Up @@ -699,9 +700,15 @@ def append_attribute_register( # pylint: disable=too-many-arguments
pass

else:
register.actual_value = existing_register.actual_value
register.expected_value = existing_register.expected_value
register.expected_pending = existing_register.expected_pending
if register_value is None:
register.actual_value = existing_register.actual_value
register.expected_value = existing_register.expected_value
register.expected_pending = existing_register.expected_pending

else:
register.actual_value = register_value
register.expected_value = None
register.expected_pending = None

self.__items[register.id.__str__()] = register

Expand Down

0 comments on commit cd7de4d

Please sign in to comment.