State
A remembered protocol condition, such as an open MQTT session or a CoAP request waiting for an ACK.
Run event-by-event IoT protocol scenarios and test which transitions are valid
Run protocol events one at a time, then try your own events. The workbench shows whether the current state accepts the event, which guard fired, what action was taken, and how the protocol should recover from timeouts or invalid input.
A remembered protocol condition, such as an open MQTT session or a CoAP request waiting for an ACK.
A packet, timer, application action, or peer action that asks the state machine to move.
The rule that decides if the event is valid now, such as matching a Token or being inside an open connection.
The side effect: send a frame, start a timer, store delivery state, retransmit, or close safely.
State machine description appears here.
Choose Run or Step, then try manual events to test the guards.
No event has fired yet.
Use this like a debugging trace: read the previous state, event, guard result, new state, and side effect.
MQTT state begins with a network connection, then a CONNECT packet and CONNACK acceptance create the MQTT connection.
CoAP combines a message layer with request/response matching. The Message ID and Token do different jobs.
AMQP 1.0 has nested state. A connection can be open while sessions, links, and deliveries have their own state.
MQTT connection state, CoAP message exchanges, and AMQP connection/session/link/delivery state are intentionally modeled separately. A real implementation stores more than one state variable.
A timer expiry is not just a visual delay. It triggers a rule: retransmit, close, mark failed, or wait for a later response depending on protocol and current state.
Clicking a muted event records a blocked transition. This is useful because protocol bugs often come from accepting packets in the wrong state.
In MQTT, which event opens the MQTT connection: TCP open or CONNACK success?
In CoAP, what should happen when a confirmable request times out but MAX_RETRANSMIT has not been reached?
In AMQP, why is it misleading to call a delivery complete just because the TCP connection is open?
These are the sources used for terminology, timers, and protocol state boundaries in this simulation.