2.3 KiB
2.3 KiB
Alarm And Notification Flow
Device Alarm To User Notification
sequenceDiagram
autonumber
participant Device as TalkingQ device
participant MQTT as MQTT broker
participant Handler as TalkingQMQTTService
participant Alarm as Alarm service
participant Location as Location snapshot
participant DB as device_alarm_events
participant Banner as system banner polling
participant Mini as banban-mini
participant WxMP as WeChat Official Account
participant SMS as SMS provider
Device->>MQTT: alarm event msg_id=010
MQTT->>Handler: deliver alarm payload
Handler->>Alarm: create alarm event
Alarm->>Location: attach current location snapshot if available
Alarm->>DB: insert device_alarm_events
Alarm->>WxMP: schedule/send template notification if bound
Alarm->>SMS: send SMS if phone notification is enabled
Banner->>DB: poll latest/new alarm
Mini->>Banner: show banner / alarm history on device home
Handler-->>MQTT: alarm event_resp
Supporting Notification Bind
flowchart TD
Mini["banban-mini management page"]
Phone["WeChat phone authorization"]
WxBind["WeChat MP bind start/status"]
Backend["talkingq-url wechat-mp routers/services"]
Parent["parents / parent_wechat_* tables"]
Notify["wechat_mp_notification_service"]
Mini --> Phone --> Backend --> Parent
Mini --> WxBind --> Backend --> Parent
Parent --> Notify
Key Tables
erDiagram
device_auth ||--o{ device_alarm_events : reports
children ||--o{ device_alarm_events : alarm_owner
parents ||--o{ parent_wechat_accounts : mp_account
parents ||--o{ parent_wechat_identities : wx_identity
parents ||--o{ wechat_mp_bind_states : bind_state
device_alarm_events {
int id PK
varchar device_id FK
int child_id FK
varchar source_msg_id
decimal location_lat
decimal location_lng
datetime location_updated_at
datetime created_at
}
Source Anchors
- Alarm schema:
database/talkingq_shared_schema.sql - Alarm location refresh tests:
talkingq-url/tests/test_alarm_gps_location_refresh.py - System banner client:
banban-mini/src/services/system-banner.ts - Device home alarm UI:
banban-mini/src/pages/device/index.tsx - WeChat MP notification service:
talkingq-url/banban/service/wechat_mp_notification.py