Yes

No

success

timeout

POST /api/command

Is router online?

Send via WS

Persist to commands table
(status=pending)

Wait for router reconnect

Result?

UPDATE status=completed

Mark for retry
(next reconnect)