Sequence number: general knowledge
For Sequence number troubleshooting, please refer to the Sequence number: troubleshooting article.
General concept
The sequence number is part of the Sigfox protocol overhead and is incremented by the device itself with every message emission. A consistent sequence number received along a message is registered as the reference. A gap in the sequence number continuity might be due to:
- the device passing through a non-covered area
- the device firmware was re-flashed, causing the sequence number to restart at 0
Depending on the severity of the sequence number gap, the Sigfox cloud will raise:
- A Warning event
- An Error event
Events can be seen in the Device tab through the Events menu.
Whether the sequence number gap triggers a warning or an error event depends on the gap magnitude, subscription level and days elapsed.
Warning event
The "break in message sequence" warning event is purely informative, it allows you to be informed of a break in message continuity.
Error event
The "out of message sequence" error event will cause an interruption in message delivery, the cloud could not assess that the message was indeed coming from the device itself. Incoming messages will be discarded until an acceptable sequence number is received.
Cyclic value
After a full cycle (4096 messages), the sequence number is reset to 0.
Feature explanation
The event raised by the cloud depends on the following calculations:
- days x 300
- contract x (days + 2)
days: the number of days spent between two messages, the same day (24h rolling) will equal 1
contract: maximum daily uplink messages on the contract used
These two calculations will define the min and max values.
If the sequence number received is lesser than or equal to the one recorded + min, the message is accepted and the warning event is raised.
If the sequence number received is greater than the one recorded + max, the message is rejected and the error event is raised.
Example
Recorded sequence number: 100
Time spent: 40h
Contract: 50 uplinks/day
So, here, days = 2 and contract = 50
Using the calculations presented above:
2 (days) x 300 = 600
50 (contract) x (2 (days) + 2) = 200
Hence, min equals 200 and max equals 600.
If the sequence number of the incoming message is lesser than or equal to 100 + 200, the warning event is raised.
If the sequence number of the incoming message is greater than 100 + 600, the error event is raised, incoming messages will be discarded until an acceptable sequence number is received.
If the sequence number is between these two values, the comparison is reported to the next message.