Examples

System of System

28 views 0

SoS can be defined as

large-scale integrated systems which are independently operable on their own, but are networked together for a common goal…costs, performance, robustness, etc.

Jamshidi (2009)

RoboFuse can be part of an IoT System of Systems deployment, let’s assume that one temperature sensor is registering data in RoboFuse.

Once data from a temperature sensor are available on RoboFuse IoT you need to pass them to other system that are awaiting for data.

  • Let’s assume that each time when new data arrives on the temperature end point on datastore.robofuse.com
  • When new data arrived, you need to send data to a specified 3rd party system.

This scenario can be implemented using RoboFuse components.

For this scenario, all components are used.

Compute unit

Under you RoboFuse application, navigate to Computing Units and add a new unit. If already registered, then is ok!

Now you have you own Node-RED instance assigned to your application.

Enable the MQ

Under you RoboFuse application, navigate to RoboFuse -> RabbitMQ and enable it.

 

Now you need to navigate to the bottom of page and “Add Bridge” – this is optional.

Push Notification

Now you have needed components enabled, you can define rules.

Under you RoboFuse application, navigate to Push Notification -> DataStream Events and add a new rule.

Under the rule screen you can define a lot of parameters.

  • Name – add a desired name for you Notification / Event.
  • Active – if it is not active, it will not run on the server side.
  • Worker – is an important part, this will create a new Queue under the Rabbit MQ and there you can find your messages.
  • Time Out(s) – in seconds.
  • Static Channel – use on of the push notification channels – see definition.
  • Define Channel – for this Event you can define a dedicated channel where data need to be announced.
  • Data Stream – on what data stream from RoboFuse to be active this rule.
  • Attach Payload – if to attach the original payload to message.
  • Max Frq. – what is the maximum frequency that messages will be pushed to MQ – not used in this version.
  • Payload Max. Vol – if payload is larger than specified, the volume is not attached – not used in this version.

Notification message

System will send to the Application Message Queue a message once the rule is fired.

The message is sent under the Worked Queue.

Message structure:

{
  "app_id": "155_1zgkcipy3ry8wsg0oss0ocwcsws8gssgwkgo4wcocgwss",
  "access_token": "N2JiYWZkZDZjY2UzOWRlNDc4NWYxZjVhNGJjZGViZDhjNTRhNTFjZjhhMjQyODA2NzI3NmNlOGQzNDRjOQ",
  "user_uid": "5455b4f9-f0ee-4f23-bcc8-134ec1a5ca27",
  "channel": {
    "url": "https://nodered.ropardo.net/events",
    "user": "",
    "pwd": ""
  },
  "stream_payload": "W3sidmFsdWUiOiAiMjYuMiIsICJ0aW1lc3RhbXAiOiAiMjAyMS0wNy0yN1QxNTo0NzoxMiswMzowMCIsICJ1bml0IjogIkMiLCAiZGV2aWNlSUQiOiAiNGMxMWFlZDhjZDQzLWQ2MDMwZTk3OTQ0M2I1MjgifV0="
}

Stream Payload is base64 encoded, for example the payload decoded is:

[
  {
    "value": "26.2",
    "timestamp": "2021-07-27T15:47:12+03:00",
    "unit": "C",
    "deviceID": "4c18cd43-d6030e979443b528"
  }
]

 

MQ

Now you have the events on the application MQ for each rule that you define. You can connect to your Message Queue to check.

You can consume the messages with you own agent or you can reuse a RoboFuse Node-RED flow to consume it.

For our SoS example, you need to reuse the flow, that connect to the MQ and subscribed to the desired Queue, in our case, AHT.

Then process the message:

  • decode the base 64 payload
  • extract the target channel variables
  • select the right flow to send data
  • send data to 3rd party systems

Was this helpful?

By continuing to use the site, you agree to the use of cookies. More information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close