diff --git a/thingsboard_gateway/connectors/bacnet/bacnet_uplink_converter.py b/thingsboard_gateway/connectors/bacnet/bacnet_uplink_converter.py index e19a97ad..c5fcf268 100644 --- a/thingsboard_gateway/connectors/bacnet/bacnet_uplink_converter.py +++ b/thingsboard_gateway/connectors/bacnet/bacnet_uplink_converter.py @@ -13,6 +13,8 @@ # limitations under the License. +from bacpypes3.basetypes import DateTime + from thingsboard_gateway.connectors.bacnet.bacnet_converter import AsyncBACnetConverter from thingsboard_gateway.connectors.bacnet.entities.uplink_converter_config import UplinkConverterConfig from thingsboard_gateway.gateway.entities.converted_data import ConvertedData @@ -49,6 +51,9 @@ def convert(self, data): value) continue try: + if isinstance(value, DateTime): + value = value.isoformat() + datapoint_key = TBUtility.convert_key_to_datapoint_key(config['key'], device_report_strategy, config, diff --git a/thingsboard_gateway/connectors/bacnet/device.py b/thingsboard_gateway/connectors/bacnet/device.py index 2223e0ea..f9cf5e30 100644 --- a/thingsboard_gateway/connectors/bacnet/device.py +++ b/thingsboard_gateway/connectors/bacnet/device.py @@ -98,10 +98,15 @@ def __send_callback(self): @staticmethod def find_self_in_config(devices_config, apdu): - apdu_address = apdu.pduSource.addrTuple[0] + ':' + str(apdu.pduSource.addrTuple[1]) - device_config = list(filter(lambda x: x.get('address') == apdu_address or apdu_address in x.get('altResponsesAddresses', []), devices_config)) - if len(device_config): - return device_config[0] + apdu_host = apdu.pduSource.addrTuple[0] + apdu_address = apdu_host + ':' + str(apdu.pduSource.addrTuple[1]) + for device_config in devices_config: + if device_config.get('address') == apdu_address: + return device_config + elif apdu_address in device_config.get('altResponsesAddresses', []): + return device_config + elif device_config.get('host') == apdu_host: + return device_config @staticmethod def get_object_id(config):