TISControlProtocol 1.1.2__tar.gz → 1.1.3__tar.gz
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.
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/PKG-INFO +1 -1
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/pyproject.toml +1 -1
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/ProtocolHandler.py +9 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/api.py +3 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/services/device_scan.py +22 -18
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/.gitignore +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/.vscode/c_cpp_properties.json +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/.vscode/launch.json +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/.vscode/settings.json +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/.vscode/tasks.json +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/LICENSE +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/MANIFEST.in +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/README.md +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/dev/pump_version.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/BytesHelper.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/__init__.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/AckCoordinator.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketDispatcher.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketExtractor.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/AnalogFeedbackHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/AutoBinaryFeedbackHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/BinaryFeedbackHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/ClimateBinaryFeedbackHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/ClimateControlFeedbackHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/ControlResponseHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/DiscoveryFeedbackHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/EnergyFeedbackHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/FloorBinaryFeedbackHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/HealthFeedbackHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/LunaTempFeedbackHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/RealTimeFeedbackHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/SearchResponseHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/SecurityFeedbackHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/UpdateResponseHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/UpdateSecurityHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/WeatherFeedbackHandler.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketHandlers/__init__.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketProtocol.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketReceiver.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/PacketSender.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/UpdateCoordinator.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/udp/__init__.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/__init__.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/__init__.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/bill_config_endpoint.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/change_password_endpoint.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/get_bill_config_endpoint.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/get_key_endpoint.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/password_dashboard.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/password_form_endpoint.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/passwords_endpoint.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/restart_endpoint.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/scan_devices_endpoint.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/shared.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/submit_password.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/tis_endpoint.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/toggle_connection_endpoint.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/update_endpoint.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/crc.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/display.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/logo.png +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/package-lock.json +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/package.json +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/postcss.config.mjs +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/public/__init__.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/public/dashboard.css +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/public/password_dashboard_loader.js +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/services/__init__.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/services/base.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/services/cms.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/services/manager.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/shared.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/views/__init__.py +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/views/password_dashboard/index.html +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/views/password_dashboard/styles.css +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/views/password_form/index.html +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/views/password_form/styles.css +0 -0
- {tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/tests/test.py +0 -0
|
@@ -540,3 +540,12 @@ class TISProtocolHandler:
|
|
|
540
540
|
destination_ip=entity.gateway,
|
|
541
541
|
additional_bytes=[entity.channel_number, entity.universal_type],
|
|
542
542
|
)
|
|
543
|
+
|
|
544
|
+
def generate_heartbeat_packet(self, device) -> TISPacket:
|
|
545
|
+
return TISPacket(
|
|
546
|
+
device_id=device.device_id,
|
|
547
|
+
operation_code=TISProtocolHandler.OPERATION_DISCOVERY,
|
|
548
|
+
source_ip=device.api.host,
|
|
549
|
+
destination_ip=device.gateway,
|
|
550
|
+
additional_bytes=[],
|
|
551
|
+
)
|
|
@@ -166,6 +166,9 @@ class TISApi:
|
|
|
166
166
|
for appliance, details in data["appliances"].items()
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
+
self.raw_devices = data["devices"]
|
|
170
|
+
logging.info(f"raw devices: {self.raw_devices}")
|
|
171
|
+
|
|
169
172
|
grouped = defaultdict(list)
|
|
170
173
|
for appliance, details in converted.items():
|
|
171
174
|
grouped[details["appliance_type"]].append({appliance: details})
|
{tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/services/device_scan.py
RENAMED
|
@@ -16,6 +16,15 @@ from .cms import CMSDataSender
|
|
|
16
16
|
protocol_handler = TISProtocolHandler()
|
|
17
17
|
|
|
18
18
|
|
|
19
|
+
class TISDevice:
|
|
20
|
+
def __init__(self, tis_api, device) -> None:
|
|
21
|
+
self.api = tis_api
|
|
22
|
+
self.device_id = list(device["device_address"])
|
|
23
|
+
self.device_type_code = device["device_type_code"]
|
|
24
|
+
self.device_type_name = device["device_name"]
|
|
25
|
+
self.gateway = str(device["gateway"])
|
|
26
|
+
|
|
27
|
+
|
|
19
28
|
class DeviceScanService(BaseService):
|
|
20
29
|
"""Service to periodically scan TIS network devices and report to CMS."""
|
|
21
30
|
|
|
@@ -30,7 +39,6 @@ class DeviceScanService(BaseService):
|
|
|
30
39
|
self.api = tis_api
|
|
31
40
|
self.cms_url = cms_url
|
|
32
41
|
self._scan_task_unsub = None
|
|
33
|
-
self.discovery_packet = protocol_handler.generate_discovery_packet()
|
|
34
42
|
self.sender = CMSDataSender(
|
|
35
43
|
external_url=f"{self.cms_url}/api/scan-devices",
|
|
36
44
|
hass=self.hass,
|
|
@@ -98,17 +106,15 @@ class DeviceScanService(BaseService):
|
|
|
98
106
|
async def scan_and_send(self) -> bool:
|
|
99
107
|
"""Perform network device scan and send payload to CMS."""
|
|
100
108
|
logging.info("Starting periodic device scan for CMS")
|
|
101
|
-
|
|
109
|
+
connected_devices = await self.discover_network_devices()
|
|
102
110
|
devices = [
|
|
103
111
|
{
|
|
104
|
-
"device_id": device
|
|
105
|
-
"device_type_code": device
|
|
106
|
-
"device_type_name":
|
|
107
|
-
|
|
108
|
-
),
|
|
109
|
-
"gateway": device["source_ip"],
|
|
112
|
+
"device_id": device.device_id,
|
|
113
|
+
"device_type_code": device.device_type_code,
|
|
114
|
+
"device_type_name": device.device_type_name,
|
|
115
|
+
"gateway": device.gateway,
|
|
110
116
|
}
|
|
111
|
-
for device in
|
|
117
|
+
for device in connected_devices
|
|
112
118
|
]
|
|
113
119
|
|
|
114
120
|
mac_address = await get_real_mac("end0")
|
|
@@ -119,16 +125,14 @@ class DeviceScanService(BaseService):
|
|
|
119
125
|
|
|
120
126
|
return await self.sender.send_data(payload)
|
|
121
127
|
|
|
122
|
-
async def discover_network_devices(self,
|
|
128
|
+
async def discover_network_devices(self, attempts=5) -> list:
|
|
123
129
|
"""Discover network devices by broadcasting discovery packets."""
|
|
124
130
|
self.api.hass.data[self.api.domain]["discovered_devices"] = []
|
|
125
|
-
for _ in range(broadcast_attempts):
|
|
126
|
-
if (
|
|
127
|
-
self.api.protocol
|
|
128
|
-
and hasattr(self.api.protocol, "sender")
|
|
129
|
-
and self.api.protocol.sender
|
|
130
|
-
):
|
|
131
|
-
await self.api.protocol.sender.broadcast_packet(self.discovery_packet)
|
|
132
|
-
await asyncio.sleep(1)
|
|
133
131
|
|
|
132
|
+
for device_dict in self.api.raw_devices:
|
|
133
|
+
device = TISDevice(self.api, device_dict)
|
|
134
|
+
packet = protocol_handler.generate_heartbeat_packet(device)
|
|
135
|
+
await self.api.protocol.sender.send_packet_with_ack(
|
|
136
|
+
packet, attempts=attempts
|
|
137
|
+
)
|
|
134
138
|
return self.api.hass.data[self.api.domain]["discovered_devices"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/Protocols/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/submit_password.py
RENAMED
|
File without changes
|
{tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/tis_endpoint.py
RENAMED
|
File without changes
|
|
File without changes
|
{tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/apis/update_endpoint.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/package-lock.json
RENAMED
|
File without changes
|
|
File without changes
|
{tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/postcss.config.mjs
RENAMED
|
File without changes
|
{tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/public/__init__.py
RENAMED
|
File without changes
|
{tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/public/dashboard.css
RENAMED
|
File without changes
|
|
File without changes
|
{tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/services/__init__.py
RENAMED
|
File without changes
|
{tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/services/base.py
RENAMED
|
File without changes
|
{tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/services/cms.py
RENAMED
|
File without changes
|
{tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/services/manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{tiscontrolprotocol-1.1.2 → tiscontrolprotocol-1.1.3}/src/TISControlProtocol/views/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|