Replies: 1 comment
-
A simplification would be to allow consecutive series to be send while still just sending the intial index, instead of using ranges: Instead of:
You could just use:
It could be combine with lists:
If we want to send a single string with a compact delta with only the groups that changed, we could use escape codes. For examp,e, (n) could mean skip n groups, while {n} could mean repeat the previous status n times.
Explanation: |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
When there's a lot of status data to transmit, and it changes often, there is a need to ensure that the transfer is efficient and does not incur too much overhead.
In RSMP 3, this was the background for introducing status messages like S0001 that provides the status of all signal groups, in a single message:
https://rsmp-nordic.github.io/rsmp_sxl_traffic_lights/1.2.1/sxl_traffic_light_controller.html#s0001
For RSMP 4, the component path is included in the topic path:
dl/1
address detector logic 1. The payload would include the status for that component, eg:We could address all detector logics using
dl
. but would need a way to structure the payload data. e.g:Streaming
The basic concept of streaming is just that you get data bit by bit in real-time, as opposed to downloading a complete data set. In this sense, all RSMP data is streaming.
But there are some concepts other types of streaming, like video and audio, that we could be inspired by. A keyframe in video streaming include the full picture. Between keyframes, smaller delta-updates are send. Keyframes makes sure that the stream does not corrupt over time, and also enables random access, fast-forward, etc.
In RMSP we could use this concept to send keyframe that includes the full status, and then delta updates that only include changes. The keyframe might be retained, while delta would not. That way, when you connect you get the latest full status, and after that you receive delta. We might need to number delta updates, so nodes an check if deltas are missing/skipped.
One way to look at this is that our traditional status messages are the keyframes. We could then introduce a new delta message that only includes changes. Example:
Retaining values
It's important that status can be retained, so you get quickly get the latests know status when you you connect to the broker, even for devices that are currently offline.
If we have overlapping status messages that cover the same data, we need to ensure that they are received in the correct order, but perhaps it's simple to ensure we don't have overlapping messages. Overlapping messages can occur if a single message can include data from multiple components.
Beta Was this translation helpful? Give feedback.
All reactions