docs(gateway): update diagrams following review feedback
- 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
This commit is contained in:
@@ -1,30 +1,31 @@
|
||||
@startuml
|
||||
skinparam linestyle ortho
|
||||
|
||||
class Gateway {
|
||||
- gateway_id: str
|
||||
- mqtt_broker: str
|
||||
- mqtt_port: int
|
||||
- mqttc: MQTTClient
|
||||
--
|
||||
+ KEY_WINDOW: 0x01
|
||||
+ KEY_HUMIDITY: 0x02
|
||||
+ KEY_TEMP: 0x03
|
||||
+ KEY_CO2: 0x04
|
||||
+ KEY_BATTERY: 0x05
|
||||
+ INVALID_VALUE: 0xFFFFFFFF
|
||||
+ 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(client, userdata, flags, reason_code, properties)
|
||||
+ on_publish(client, userdata, mid, reason_code, properties)
|
||||
+ on_connect(...)
|
||||
+ on_disconnect(...)
|
||||
+ on_publish(...)
|
||||
+ run()
|
||||
}
|
||||
|
||||
class BleakScanner {
|
||||
+ start()
|
||||
+ stop()
|
||||
}
|
||||
|
||||
class MQTTClient {
|
||||
+ connect()
|
||||
+ publish()
|
||||
@@ -32,6 +33,8 @@ class MQTTClient {
|
||||
+ username_pw_set()
|
||||
+ loop_start()
|
||||
}
|
||||
|
||||
Gateway o-- BleakScanner
|
||||
Gateway o-- MQTTClient
|
||||
|
||||
@enduml
|
||||
|
||||
@@ -11,7 +11,7 @@ thingy -> gw : BLE advertising packet
|
||||
|
||||
alt company_id != 0xffff
|
||||
gw -> gw : discard packet
|
||||
else company_id == 0xffff
|
||||
else
|
||||
gw -> gw : check payload size
|
||||
|
||||
alt payload size != 14 bytes
|
||||
@@ -21,15 +21,19 @@ else company_id == 0xffff
|
||||
|
||||
alt unknown key in payload
|
||||
gw -> gw : discard packet\nlog debug
|
||||
else valid keys
|
||||
else
|
||||
alt CO2 == 0xFFFFFFFF
|
||||
gw -> gw : discard CO2 value\n(sensor not ready)
|
||||
end
|
||||
|
||||
gw -> gw : add UTC timestamp
|
||||
gw -> broker : publish JSON\n{gateway_id}/{mac}/update
|
||||
broker --> gw : on_publish confirmed
|
||||
broker -> db : store measurement
|
||||
alt duplicate within 10 seconds
|
||||
gw -> gw : discard packet\n(deduplication)
|
||||
else
|
||||
gw -> gw : add UTC timestamp
|
||||
gw -> broker : publish JSON\n{gateway_id}/{mac}/update
|
||||
broker --> gw : on_publish confirmed
|
||||
broker -> db : store measurement
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user