layrz-sdk 3.1.29__py3-none-any.whl → 3.1.31__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of layrz-sdk might be problematic. Click here for more details.

@@ -48,6 +48,7 @@ from .custom_field import CustomField
48
48
  from .custom_report_page import CustomReportPage
49
49
  from .device import Device
50
50
  from .event import Event
51
+ from .function import Function
51
52
  from .geofence import Geofence
52
53
  from .last_message import LastMessage
53
54
  from .message import Message
@@ -67,8 +68,10 @@ from .sensor import Sensor
67
68
  from .telemetry import AssetMessage, DeviceMessage
68
69
  from .text_alignment import TextAlignment
69
70
  from .trigger import Trigger
71
+ from .trigger_kind import TriggerCaseKind, TriggerCommentPattern, TriggerGeofenceKind, TriggerKind
70
72
  from .user import User
71
73
  from .waypoint import Waypoint
74
+ from .weekday import Weekday
72
75
 
73
76
  __all__ = [
74
77
  'Asset',
@@ -143,4 +146,10 @@ __all__ = [
143
146
  'AssetMessage',
144
147
  'DeviceMessage',
145
148
  'AssetConstants',
149
+ 'Function',
150
+ 'TriggerKind',
151
+ 'TriggerGeofenceKind',
152
+ 'TriggerCaseKind',
153
+ 'TriggerCommentPattern',
154
+ 'Weekday',
146
155
  ]
@@ -20,7 +20,7 @@ from .static_position import StaticPosition
20
20
  class Asset(BaseModel):
21
21
  """Asset entity definition"""
22
22
 
23
- pk: int = Field(description='Defines the primary key of the asset', serialization_alias='id')
23
+ pk: int = Field(description='Defines the primary key of the asset')
24
24
  name: str = Field(description='Defines the name of the asset')
25
25
  vin: str | None = Field(
26
26
  default=None,
@@ -14,20 +14,9 @@ class AssetConstants(BaseModel):
14
14
  },
15
15
  }
16
16
 
17
- distance_traveled: float = Field(
18
- default=0.0,
19
- description='Total distance traveled by the asset in meters',
20
- alias='distanceTraveled',
21
- )
22
-
17
+ distance_traveled: float = Field(default=0.0, description='Total distance traveled by the asset in meters')
18
+ primary_device: str = Field(default='N/a', description='Primary device associated with the asset')
23
19
  elapsed_time: timedelta = Field(
24
20
  default=timedelta(seconds=0),
25
21
  description='Total elapsed time for the asset in seconds',
26
- alias='elapsedTime',
27
- )
28
-
29
- primary_device: str = Field(
30
- default='N/a',
31
- description='Primary device associated with the asset',
32
- alias='primaryDevice',
33
22
  )
@@ -24,16 +24,9 @@ class BroadcastPayload(BaseModel):
24
24
  }
25
25
 
26
26
  asset: Asset = Field(..., description='Asset object')
27
- primary_device: Device | None = Field(
28
- default=None,
29
- description='Primary device object',
30
- serialization_alias='primaryDevice',
31
- )
32
- trigger: Trigger | None = Field(
33
- default=None,
34
- description='Trigger object, if available',
35
- )
36
- message_id: int | str = Field(..., description='Message ID', serialization_alias='message.id')
27
+ primary_device: Device | None = Field(default=None, description='Primary device object')
28
+ trigger: Trigger | None = Field(default=None, description='Trigger object, if available')
29
+ message_id: int | str = Field(..., description='Message ID')
37
30
  service: BroadcastService | None = Field(default=None, description='Broadcast service object')
38
31
  position: dict[str, Any] = Field(default_factory=dict, description='Position data, if available')
39
32
  sensors: dict[str, Any] = Field(default_factory=dict, description='Sensors data, if available')
@@ -41,5 +34,4 @@ class BroadcastPayload(BaseModel):
41
34
  received_at: datetime = Field(
42
35
  default_factory=lambda: datetime.now(UTC),
43
36
  description='Broadcast payload received date',
44
- serialization_alias='receivedAt',
45
37
  )
@@ -8,6 +8,6 @@ from pydantic import BaseModel, Field
8
8
  class BroadcastService(BaseModel):
9
9
  """Broadcast Service object"""
10
10
 
11
- pk: int = Field(..., description='Service ID', serialization_alias='id')
11
+ pk: int = Field(..., description='Service ID')
12
12
  name: str = Field(..., description='Service name')
13
13
  credentials: dict[str, Any] = Field(default_factory=dict, description='Service credentials')
@@ -8,7 +8,7 @@ from .modbus import ModbusConfig
8
8
  class Device(BaseModel):
9
9
  """Device entity"""
10
10
 
11
- pk: int = Field(description='Defines the primary key of the device', serialization_alias='id')
11
+ pk: int = Field(description='Defines the primary key of the device')
12
12
  name: str = Field(description='Defines the name of the device')
13
13
  ident: str = Field(description='Defines the identifier of the device')
14
14
  protocol_id: int | None = Field(
@@ -1,7 +1,6 @@
1
1
  """Event entity"""
2
2
 
3
3
  from datetime import datetime
4
- from typing import Optional
5
4
 
6
5
  from pydantic import BaseModel, Field
7
6
 
@@ -19,5 +18,5 @@ class Event(BaseModel):
19
18
  asset_id: int = Field(description='Asset ID')
20
19
  message: Message = Field(description='Message')
21
20
  activated_at: datetime = Field(description='Event activation date')
22
- geofence: Optional[Geofence] = Field(default=None, description='Geofence object')
23
- presence_type: Optional[PresenceType] = Field(default=None, description='Presence type object')
21
+ geofence: Geofence | None = Field(default=None, description='Geofence object')
22
+ presence_type: PresenceType | None = Field(default=None, description='Presence type object')
@@ -0,0 +1,29 @@
1
+ """Geofence entity"""
2
+
3
+ from datetime import timedelta
4
+ from typing import Any, Dict, List, Optional
5
+
6
+ from pydantic import BaseModel, Field, constr
7
+
8
+ from .asset import Asset
9
+
10
+
11
+ class Function(BaseModel):
12
+ """Function entity"""
13
+
14
+ pk: int = Field(description='Defines the primary key of the Function')
15
+ name: str = Field(description='Name of the function')
16
+
17
+ maximum_time: Optional[timedelta] = None # DurationField → timedelta
18
+ minutes_delta: Optional[timedelta] = None
19
+
20
+ external_identifiers: List[constr(max_length=255)] = Field(default_factory=list) # type: ignore
21
+
22
+ credentials: Dict[str, Any] = Field(default_factory=dict)
23
+
24
+ # Many-to-manys ➜ list of nested DTOs
25
+ assets: List[Asset] = Field(default_factory=list)
26
+
27
+ # Foreign keys – normally expose only the FK id to keep the payload small.
28
+ owner_id: Optional[int] = None
29
+ algorithm_id: int
@@ -36,16 +36,8 @@ class AssetMessage(BaseModel):
36
36
  }
37
37
  }
38
38
 
39
- pk: int | None = Field(
40
- default=None,
41
- description='Message ID',
42
- alias='id',
43
- )
44
-
45
- asset_id: int = Field(
46
- ...,
47
- description='Asset ID',
48
- )
39
+ pk: int | None = Field(default=None, description='Message ID')
40
+ asset_id: int = Field(..., description='Asset ID')
49
41
 
50
42
  position: dict[str, float | int] = Field(
51
43
  default_factory=dict,
@@ -24,11 +24,7 @@ from layrz_sdk.entities.device import Device
24
24
  class DeviceMessage(BaseModel):
25
25
  """Device message model"""
26
26
 
27
- pk: int | None = Field(
28
- default=None,
29
- description='Device message ID',
30
- alias='id',
31
- )
27
+ pk: int | None = Field(default=None, description='Device message ID')
32
28
 
33
29
  ident: str = Field(
34
30
  ...,
@@ -1,11 +1,119 @@
1
1
  """Trigger entity"""
2
2
 
3
+ from datetime import datetime, time, timedelta
4
+ from typing import Any
5
+
3
6
  from pydantic import BaseModel, Field
4
7
 
8
+ from .trigger_kind import TriggerCaseKind, TriggerCommentPattern, TriggerGeofenceKind, TriggerKind
9
+ from .weekday import Weekday
10
+
5
11
 
6
12
  class Trigger(BaseModel):
7
13
  """Trigger entity"""
8
14
 
9
- pk: int = Field(description='Defines the primary key of the trigger', serialization_alias='id')
15
+ pk: int = Field(description='Defines the primary key of the trigger')
10
16
  name: str = Field(description='Defines the name of the trigger')
11
17
  code: str = Field(description='Defines the code of the trigger')
18
+
19
+ cooldown_time: timedelta = Field(
20
+ default_factory=lambda: timedelta(seconds=0),
21
+ description='Defines the cooldown time of the trigger',
22
+ )
23
+
24
+ type_: TriggerKind | None = Field(
25
+ default=None,
26
+ description='Defines the kind of the trigger',
27
+ alias='type',
28
+ )
29
+
30
+ presence_type: TriggerGeofenceKind | None = Field(
31
+ default=None,
32
+ description='Defines the geofence kind of the trigger',
33
+ )
34
+
35
+ case_type: TriggerCaseKind | None = Field(
36
+ default=None,
37
+ description='Defines the case kind of the trigger',
38
+ )
39
+
40
+ case_comment_pattern: TriggerCommentPattern | None = Field(
41
+ default=None,
42
+ description='Defines the comment pattern of the trigger',
43
+ )
44
+
45
+ case_comment_value: str | None = Field(
46
+ default=None,
47
+ description='Defines the comment pattern value of the trigger',
48
+ )
49
+
50
+ exact_hour: time | None = Field(
51
+ default=None,
52
+ description='Defines the exact hour of the trigger',
53
+ )
54
+ crontab_format: str | None = Field(
55
+ default=None,
56
+ description='Defines the crontab format of the trigger',
57
+ )
58
+
59
+ weekdays: list[Weekday] = Field(
60
+ default_factory=list,
61
+ description='Defines the weekdays of the trigger',
62
+ )
63
+
64
+ is_plain_crontab: bool = Field(
65
+ default=False,
66
+ description='Defines if the trigger is a plain crontab',
67
+ )
68
+
69
+ timezone_id: int | None = Field(
70
+ default=None,
71
+ description='Defines the timezone ID of the trigger',
72
+ )
73
+
74
+ parameters: list[str] = Field(
75
+ default_factory=list,
76
+ description='Defines the parameters of the trigger',
77
+ )
78
+
79
+ manual_action_fields: list[dict[str, Any]] = Field(
80
+ default_factory=list,
81
+ description='Defines the fields for manual action in the trigger',
82
+ )
83
+
84
+ formula: str | None = Field(
85
+ default=None,
86
+ description='Defines the formula of the trigger, this formula is only LCL (Layrz Computation Language) compatible',
87
+ )
88
+
89
+ script: str | None = Field(
90
+ default=None,
91
+ description='Defines the script of the trigger, depending of the trigger kidn, this script can be in Python, '
92
+ + 'Javascript, Lua, Dart or Golang. (Or any other language supported by the SDK)',
93
+ )
94
+
95
+ is_legacy: bool = Field(
96
+ default=False,
97
+ description='Defines if the trigger is legacy, normally when a version of the trigger is not compatible '
98
+ + 'with the current version of the SDK',
99
+ )
100
+
101
+ priority: int = Field(
102
+ default=0,
103
+ description='Defines the priority of the trigger',
104
+ )
105
+
106
+ color: str | None = Field(
107
+ default='#2196F3',
108
+ description='Defines the color of the trigger',
109
+ )
110
+
111
+ sequence: int = Field(
112
+ default=0,
113
+ description='Defines the sequence of the trigger',
114
+ )
115
+
116
+ care_protocol_id: int | None = Field(
117
+ default=None,
118
+ description='Defines the care protocol ID of the trigger',
119
+ )
@@ -0,0 +1,88 @@
1
+ """Asset Operation Mode"""
2
+
3
+ import sys
4
+ from enum import Enum
5
+
6
+ if sys.version_info >= (3, 11):
7
+ from typing import Self
8
+ else:
9
+ from typing_extensions import Self
10
+
11
+
12
+ class TriggerKind(str, Enum):
13
+ """
14
+ Trigger Kind definition
15
+ """
16
+
17
+ PRESENCE_IN_GEOFENCE = 'PRESENCEINGEOFENCE'
18
+ EXACT_TIME = 'EXACTTIME'
19
+ FORMULA = 'FORMULA'
20
+ AUTHENTICATION = 'AUTHENTICATION'
21
+ PYTHON_SCRIPT = 'PYTHONSCRIPT'
22
+ CASES_CHANGES = 'CASES_CHANGES'
23
+ BHS_SPEEDING = 'BHS_SPEEDING'
24
+ BHS_PRESENCE = 'BHS_PRESENCE'
25
+ MANUAL_ACTION = 'MANUAL_ACTION'
26
+
27
+ def __str__(self: Self) -> str:
28
+ """Readable property"""
29
+ return self.name
30
+
31
+ def __repr__(self: Self) -> str:
32
+ """Readable property"""
33
+ return f'TriggerKind.{self.name}'
34
+
35
+
36
+ class TriggerGeofenceKind(str, Enum):
37
+ """
38
+ Geofence Kind definition
39
+ """
40
+
41
+ ENTRANCE = 'ENTRANCE'
42
+ EXIT = 'EXIT'
43
+ BOTH = 'BOTH'
44
+
45
+ def __str__(self: Self) -> str:
46
+ """Readable property"""
47
+ return self.name
48
+
49
+ def __repr__(self: Self) -> str:
50
+ """Readable property"""
51
+ return f'GeofenceKind.{self.name}'
52
+
53
+
54
+ class TriggerCaseKind(str, Enum):
55
+ """
56
+ Case Kind definition
57
+ """
58
+
59
+ ON_FOLLOW = 'ON_FOLLOW'
60
+ ON_CLOSE = 'ON_CLOSE'
61
+ ON_DISMISS = 'ON_DISMISS'
62
+ ON_COMMENT_PATTERN = 'ON_COMMENT_PATTERN'
63
+
64
+ def __str__(self: Self) -> str:
65
+ """Readable property"""
66
+ return self.name
67
+
68
+ def __repr__(self: Self) -> str:
69
+ """Readable property"""
70
+ return f'TriggerCaseKind.{self.name}'
71
+
72
+
73
+ class TriggerCommentPattern(str, Enum):
74
+ """
75
+ Comment Pattern definition
76
+ """
77
+
78
+ STARTS_WITH = 'STARTS_WITH'
79
+ ENDS_WITH = 'ENDS_WITH'
80
+ CONTAINS = 'CONTAINS'
81
+
82
+ def __str__(self: Self) -> str:
83
+ """Readable property"""
84
+ return self.name
85
+
86
+ def __repr__(self: Self) -> str:
87
+ """Readable property"""
88
+ return f'TriggerCommentPattern.{self.name}'
@@ -0,0 +1,29 @@
1
+ import sys
2
+ from enum import Enum
3
+
4
+ if sys.version_info >= (3, 11):
5
+ from typing import Self
6
+ else:
7
+ from typing_extensions import Self
8
+
9
+
10
+ class Weekday(str, Enum):
11
+ """
12
+ Weekday definition
13
+ """
14
+
15
+ MONDAY = 'MON'
16
+ TUESDAY = 'TUE'
17
+ WEDNESDAY = 'WED'
18
+ THURSDAY = 'THU'
19
+ FRIDAY = 'FRI'
20
+ SATURDAY = 'SAT'
21
+ SUNDAY = 'SUN'
22
+
23
+ def __str__(self: Self) -> str:
24
+ """Readable property"""
25
+ return self.name
26
+
27
+ def __repr__(self: Self) -> str:
28
+ """Readable property"""
29
+ return f'Weekday.{self.name}'
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: layrz-sdk
3
- Version: 3.1.29
3
+ Version: 3.1.31
4
4
  Summary: Layrz SDK for Python
5
5
  Author-email: "Golden M, Inc." <software@goldenm.com>
6
- Maintainer-email: Kenny Mochizuki <kenny@goldenm.com>, Luis Reyes <lreyes@goldenm.com>, Kasen Li <kli@goldenm.com>
6
+ Maintainer-email: Kenny Mochizuki <kenny@goldenm.com>, Luis Reyes <lreyes@goldenm.com>, Kasen Li <kli@goldenm.com>, Miguel Zauzich <miguel@goldenm.com>
7
7
  License: MIT License
8
8
  Project-URL: Repository, https://github.com/goldenm-software/layrz-sdk
9
9
  Project-URL: Changelog, https://github.com/goldenm-software/layrz-sdk/blob/main/CHANGELOG.md
@@ -2,9 +2,9 @@ layrz_sdk/__init__.py,sha256=OutylN0QazaeDVIA5NRDVyzwfYnZkAwVQzT-2F6iX2M,28
2
2
  layrz_sdk/backwards.py,sha256=f_DUxvbZs-p287-wGwxx0NVUK7Gha-cNP_hHRAJWAq0,85
3
3
  layrz_sdk/constants.py,sha256=guXfIsVAcex76OEMv6DAJy1km1A_WUfWJuUO2Lo3kXE,344
4
4
  layrz_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- layrz_sdk/entities/__init__.py,sha256=CrPrN6MnGkOKhQUF_ssi5U0z4wrQHXdQD7yen5APhzA,4027
6
- layrz_sdk/entities/asset.py,sha256=Z2KZkn60Ys0zHL1LUyRoDh9D9QCdqk9LdUB_z5op0HY,2609
7
- layrz_sdk/entities/asset_constants.py,sha256=H-RY9XvSz9lzjkx9YjNT4dZEp5v8WOweQHjwHDUGw60,710
5
+ layrz_sdk/entities/__init__.py,sha256=KVIa2AUo-aJYR4yeaQVILKH2F5m69wd7nrVlO_siSFI,4303
6
+ layrz_sdk/entities/asset.py,sha256=9dVnNXeBP_CnpXUU2KH7LiQxCWBXZzok13HMkN9diaI,2583
7
+ layrz_sdk/entities/asset_constants.py,sha256=dqBK9mq6N-WJLd-RQ7rgDSmcBchR1hYjhOKwd3O7PqQ,600
8
8
  layrz_sdk/entities/asset_operation_mode.py,sha256=1RLRpbUm6jwxivdKbB2O6wdnrhyqaccQ_moA-wrnzdQ,639
9
9
  layrz_sdk/entities/case.py,sha256=0dSfZCezDuEEED42rws-zntqa_Em9oFevlXSPrIeIC8,1877
10
10
  layrz_sdk/entities/case_ignored_status.py,sha256=9nRIKJqaZ9EBXYuI4j4v2hCd0C6GtWPDKsbdE2Srt1g,517
@@ -13,8 +13,9 @@ layrz_sdk/entities/checkpoint.py,sha256=Y_LduHugWdn3sLvXmiqjaIXnGzoJ5aN_qLCzD9YX
13
13
  layrz_sdk/entities/comment.py,sha256=1YSWVxXlpoicVVHv3mvkNlfUTfcOMxZYfb4YmwrxchY,414
14
14
  layrz_sdk/entities/custom_field.py,sha256=jurONu01Ph-Qq8uuxdzxoQ6i7BqbZe64vO2ESvQDSFg,277
15
15
  layrz_sdk/entities/custom_report_page.py,sha256=eqtoFOgip0z4_cMql1tHgaR4JiVEYlfbzd9ZJ7ZLyrM,1231
16
- layrz_sdk/entities/device.py,sha256=OPSmaQzvuttV03pYs8an35BngksQH2guk_SReMtAnzU,758
17
- layrz_sdk/entities/event.py,sha256=cFjFRrKQp4TykPkrCoXy5PYPykcAzrcHtAhRl_V4hdk,754
16
+ layrz_sdk/entities/device.py,sha256=rqBJf0L-cIfxE6ONwGHVx_L0StyQL-ycvSVzug4iIwQ,732
17
+ layrz_sdk/entities/event.py,sha256=IDcPwtKbqvX8S2QQei3yFbA2M8NeSYGFoXo3AaSmdHI,720
18
+ layrz_sdk/entities/function.py,sha256=n1E72233GM7kSZEUVj8e9IiV7XyeirGMlwrqsNf_xAc,865
18
19
  layrz_sdk/entities/geofence.py,sha256=jPuG5OCknkM37Q4h5haOXdV4OpVyd4gX77dFjd-FaP4,326
19
20
  layrz_sdk/entities/last_message.py,sha256=QNgF0xCQ6uLFDMmKQCjSRhGS1Bq7akw5pv6ZIiFlwfY,268
20
21
  layrz_sdk/entities/message.py,sha256=eFID7CEBnwp6-MsfhK09JPSJzp7iRbQibJOe_ELgQ9A,563
@@ -32,15 +33,17 @@ layrz_sdk/entities/report_row.py,sha256=t2Rk7LeforU-sD5abqnTQES2Oac8dmEXMLLo_18x
32
33
  layrz_sdk/entities/sensor.py,sha256=9Q6RGb9qDvyLS4tELZOZtPlaiWi9An5Vf0gGLGWIRhE,312
33
34
  layrz_sdk/entities/static_position.py,sha256=xTbTWRPQLZqTgPQnyIMOoMHiNi42AzmVRfgDMM4m03c,365
34
35
  layrz_sdk/entities/text_alignment.py,sha256=YqUqj07c4XzHZLdaqNw1FEUpneWoJU5UU3eicC5-Sps,496
35
- layrz_sdk/entities/trigger.py,sha256=o8hN781yq2A0oDujeFs1b-elA9-pMP6F2cXHGsc_3y4,344
36
+ layrz_sdk/entities/trigger.py,sha256=IRrFV9nXnUfvOi7mCtIvZHb7URyJyQvHY_csLeAdEQc,3277
37
+ layrz_sdk/entities/trigger_kind.py,sha256=Sk7iNndnMSMgjGR_2ouB1eLNPTH7WyPszQofbY0J-I8,1783
36
38
  layrz_sdk/entities/user.py,sha256=S2mJoW44xbBe-O3I_ajy5l4V9-azVLUfKvcfsuqfodQ,236
37
39
  layrz_sdk/entities/waypoint.py,sha256=Wx4uFzKVXKTuSgu8wiDpvqGFtG3c1_owk1-M9APlpj8,550
40
+ layrz_sdk/entities/weekday.py,sha256=5y5BTMVvxi1ujUa5e1iRb8cpxzTQIBTvzmzfiPC8poI,506
38
41
  layrz_sdk/entities/broadcast/__init__.py,sha256=Q1fIeDj1oAL63Q0JDddkW_FuP826-Im6ScwUUwAZIOM,372
39
- layrz_sdk/entities/broadcast/payload.py,sha256=QQXw2r-DHTkRoht9lRekNB93QUU2M7X852KHlMn6LF8,1556
42
+ layrz_sdk/entities/broadcast/payload.py,sha256=ugD5m3zVFZVDfBMkR2WlZTWunn9gZSQ1Ej8YXbeA8Wk,1417
40
43
  layrz_sdk/entities/broadcast/request.py,sha256=MQb9kyDSAMXtp4_sPOamBsYyCVZ02wj8NXmi8IEmM68,260
41
44
  layrz_sdk/entities/broadcast/response.py,sha256=hK3D05pecln9wbkdGr892Kzmd7bMzjsaayPxzJPVHsw,263
42
45
  layrz_sdk/entities/broadcast/result.py,sha256=07P7cE6LCBpw8jlgmyVsGxBmRpO4A7Jva5hpLh-n5U0,656
43
- layrz_sdk/entities/broadcast/service.py,sha256=EWc3mgdewyW6rZGzwWroxidaogXYDW-w1Td1c36xBY0,388
46
+ layrz_sdk/entities/broadcast/service.py,sha256=UOh9SXtwdwWHDxg6AQsRcaWgk33Ty4XlQf5Lq4_uqe8,362
44
47
  layrz_sdk/entities/broadcast/status.py,sha256=-dGOZeQ1VclBvWTfnrPEDb8LMHSyBVnV5cVyQVyMdcU,597
45
48
  layrz_sdk/entities/charts/axis_config.py,sha256=ZvVsjB26FMbbfM9318KaQm3XyiNAkyzz2120fM2DH50,604
46
49
  layrz_sdk/entities/charts/bar_chart.py,sha256=hBOc0iJHTpFSlZsBtxT4-xtEJLi8DPnjXvc_i2t9HcI,5017
@@ -77,14 +80,14 @@ layrz_sdk/entities/modbus/schema.py,sha256=sBHnUKvvuPW5TTYbqsDmQ6pHn6xHLEfr5Ikb-
77
80
  layrz_sdk/entities/modbus/status.py,sha256=Taf4uTz780iYPBzcK7NqppFFktvX_nhaDlx26CB-ie0,610
78
81
  layrz_sdk/entities/modbus/wait.py,sha256=n3p_miYfGde1sxo4OznqWJAOb_WKblOnwFRib3RY_uM,4031
79
82
  layrz_sdk/entities/telemetry/__init__.py,sha256=hfyekj-4_iB-aEbw43DXtSuMLBtMR1uoL8vvkRa_nJg,149
80
- layrz_sdk/entities/telemetry/assetmessage.py,sha256=ltnJCizwHSyTck0vrbRaf1BfQqlh_8Ckrtc3sGz3psk,5276
81
- layrz_sdk/entities/telemetry/devicemessage.py,sha256=gR32FnEUbjONcGgAJMEsuum3-LJRcHtOTtQNikkkxYs,3342
83
+ layrz_sdk/entities/telemetry/assetmessage.py,sha256=snc6XLlhpV0ecpIub6vZ-YTZff399vmkNqQFHLzhwVQ,5233
84
+ layrz_sdk/entities/telemetry/devicemessage.py,sha256=h_2E-pnEceprh8kDPM3IRBlGMcyo5-DXY9Zc0l4AjBA,3313
82
85
  layrz_sdk/helpers/__init__.py,sha256=5iW3z2m3jrYhvTfxX-p-QTkR9X9oTKfEsbtVOg9jFFY,115
83
86
  layrz_sdk/helpers/color.py,sha256=dlpMafbM-4Wd9D9hMbbnZJf4ALkpie_ZmBR2Vz_YCmM,1203
84
87
  layrz_sdk/lcl/__init__.py,sha256=U967AWANkL3u_YVxMNAYlh8jkZ6hqHfStacz7yz6sOA,89
85
88
  layrz_sdk/lcl/core.py,sha256=T80A3hL7SeqRNSfl5SrPAgwIEf-enoAVv9ldwJNzqsA,24786
86
- layrz_sdk-3.1.29.dist-info/licenses/LICENSE,sha256=d5ZrU--lIPER7QByXDKcrtOTOMk1JvN_9FdYDuoWi7Y,1057
87
- layrz_sdk-3.1.29.dist-info/METADATA,sha256=8XD2uH0ngg75kXwXJU1SOHX-o3dgo7IjwtANlEm7m-Q,2084
88
- layrz_sdk-3.1.29.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
89
- layrz_sdk-3.1.29.dist-info/top_level.txt,sha256=yUTMMzfdZ0HDWQH5TaSlFM4xtwmP1fSGxmlL1dmu4l4,10
90
- layrz_sdk-3.1.29.dist-info/RECORD,,
89
+ layrz_sdk-3.1.31.dist-info/licenses/LICENSE,sha256=d5ZrU--lIPER7QByXDKcrtOTOMk1JvN_9FdYDuoWi7Y,1057
90
+ layrz_sdk-3.1.31.dist-info/METADATA,sha256=B9Ce51pn9NYKL6uabpuF7-nO3HlWnPhXWs2FI2CvmQk,2121
91
+ layrz_sdk-3.1.31.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
92
+ layrz_sdk-3.1.31.dist-info/top_level.txt,sha256=yUTMMzfdZ0HDWQH5TaSlFM4xtwmP1fSGxmlL1dmu4l4,10
93
+ layrz_sdk-3.1.31.dist-info/RECORD,,