- Simplify class diagram: remove KEY_* constants, add is_duplicate and on_disconnect, keep only behavior-relevant elements - Update sequence diagram: replace repeated conditions with else, add deduplication step, update payload size to 14 bytes
41 lines
708 B
Plaintext
41 lines
708 B
Plaintext
@startuml
|
|
skinparam linestyle ortho
|
|
|
|
class Gateway {
|
|
- gateway_id: str
|
|
- mqtt_broker: str
|
|
- mqtt_port: int
|
|
- mqttc: MQTTClient
|
|
--
|
|
+ EXPECTED_PAYLOAD_SIZE: 14
|
|
+ DEDUP_WINDOW_SECONDS: 10
|
|
+ INVALID_VALUE: 0xFFFFFFFF
|
|
--
|
|
+ decode_payload(data: bytes): dict
|
|
+ publish(mac: str, data: dict)
|
|
+ is_duplicate(mac: str): bool
|
|
+ on_device_found(device, adv_data)
|
|
+ on_connect(...)
|
|
+ on_disconnect(...)
|
|
+ on_publish(...)
|
|
+ run()
|
|
}
|
|
|
|
class BleakScanner {
|
|
+ start()
|
|
+ stop()
|
|
}
|
|
|
|
class MQTTClient {
|
|
+ connect()
|
|
+ publish()
|
|
+ tls_set()
|
|
+ username_pw_set()
|
|
+ loop_start()
|
|
}
|
|
|
|
Gateway o-- BleakScanner
|
|
Gateway o-- MQTTClient
|
|
|
|
@enduml
|