1
0

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:
DjeAvd
2026-05-27 15:30:57 +02:00
committed by Klagarge
parent 081f0200c3
commit ddcdb32e4e
2 changed files with 21 additions and 14 deletions

View File

@@ -1,30 +1,31 @@
@startuml @startuml
skinparam linestyle ortho skinparam linestyle ortho
class Gateway { class Gateway {
- gateway_id: str - gateway_id: str
- mqtt_broker: str - mqtt_broker: str
- mqtt_port: int - mqtt_port: int
- mqttc: MQTTClient - mqttc: MQTTClient
-- --
+ KEY_WINDOW: 0x01
+ KEY_HUMIDITY: 0x02
+ KEY_TEMP: 0x03
+ KEY_CO2: 0x04
+ KEY_BATTERY: 0x05
+ INVALID_VALUE: 0xFFFFFFFF
+ EXPECTED_PAYLOAD_SIZE: 14 + EXPECTED_PAYLOAD_SIZE: 14
+ DEDUP_WINDOW_SECONDS: 10
+ INVALID_VALUE: 0xFFFFFFFF
-- --
+ decode_payload(data: bytes): dict + decode_payload(data: bytes): dict
+ publish(mac: str, data: dict) + publish(mac: str, data: dict)
+ is_duplicate(mac: str): bool
+ on_device_found(device, adv_data) + on_device_found(device, adv_data)
+ on_connect(client, userdata, flags, reason_code, properties) + on_connect(...)
+ on_publish(client, userdata, mid, reason_code, properties) + on_disconnect(...)
+ on_publish(...)
+ run() + run()
} }
class BleakScanner { class BleakScanner {
+ start() + start()
+ stop() + stop()
} }
class MQTTClient { class MQTTClient {
+ connect() + connect()
+ publish() + publish()
@@ -32,6 +33,8 @@ class MQTTClient {
+ username_pw_set() + username_pw_set()
+ loop_start() + loop_start()
} }
Gateway o-- BleakScanner Gateway o-- BleakScanner
Gateway o-- MQTTClient Gateway o-- MQTTClient
@enduml @enduml

View File

@@ -11,7 +11,7 @@ thingy -> gw : BLE advertising packet
alt company_id != 0xffff alt company_id != 0xffff
gw -> gw : discard packet gw -> gw : discard packet
else company_id == 0xffff else
gw -> gw : check payload size gw -> gw : check payload size
alt payload size != 14 bytes alt payload size != 14 bytes
@@ -21,15 +21,19 @@ else company_id == 0xffff
alt unknown key in payload alt unknown key in payload
gw -> gw : discard packet\nlog debug gw -> gw : discard packet\nlog debug
else valid keys else
alt CO2 == 0xFFFFFFFF alt CO2 == 0xFFFFFFFF
gw -> gw : discard CO2 value\n(sensor not ready) gw -> gw : discard CO2 value\n(sensor not ready)
end end
gw -> gw : add UTC timestamp alt duplicate within 10 seconds
gw -> broker : publish JSON\n{gateway_id}/{mac}/update gw -> gw : discard packet\n(deduplication)
broker --> gw : on_publish confirmed else
broker -> db : store measurement 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 end
end end