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
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

View File

@@ -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