Sending Data to External Systems

Sending Data to External Systems

There are a number of different ways that applications created in Viso Builder can interface with external systems.

Connectivity Methods

The method chosen depends on the use case and the external system but will generally fall into one of the categories below:
System-specific Node. Use a community module or node which is designed specifically for the external system you wish to send data to e.g. there are nodes for systems such as:
  1. AWS (interact with common AWS services such as S3, RDS, SNS, Kinesis, Redshift IotData etc.)
  2. Google Cloud Platform (GCP) (interact with common GCP services such as BigQuery, PubSub, IoT, Log, Task etc.)
  3. Azure (interact with common Azure services such as SQL Server, IoT Central, Event hub, Blob Storage, Data Lake Storage, CosmosDB etc.)
  4. Databases (connect and read from or write data to the majority of the most widely used databases e.g. MySql, Postgres, MongoDB, InfluxDB, Prometheus, Firebase, MS SQL, Oracle, SAP HANA, Cassandra
  5. PowerBi
  6. Slack
  7. Twilio
HTTP. Add an HTTP node and send data to the system using its API with POST or PUT requests and receive the responses e.g. 200 Ok

MQTT. Add an MQTT output node and send data as MQTT messages to topics on a broker which can be picked by the external system or picked up by middleware and sent on to the external system.

Database. Add a database node and write the data to a database that the external system can connect to and pull the data from.

File or FTP. Write data out to a file on a network share which can be picked up by the external system or write it locally and FTP it to a location that the external system can pick it up from.

Serial Port / GPIO. Add a Serial Port node or GPIO node to send and receive data via the Serial Port or GPIO bus on the device that the application runs on.

Other Protocol. Add a node which can send data over a specific protocol that the external system support such as:
  1. Websocket
  2. TCP
  3. UDP
  4. IFTTT
  5. Zigbee
  6. Modbus
  7. ONVIF
  8. AMQP
  9. CoAP
  10. Bluetooth
  11. LWM2M
  12. LoRaWAN

Example use case: Display data in PowerBi or Tableau

First, determine the ideal method you would like to use for sending the data to the external system and then search the community modules to see if one is available for the required method.
If I want to send data to PowerBi or Tableau then the ideal method would be a node which can communicate directly with those systems. I can go to the Library in the workspace, click Add module and search for PowerBi first, and can see that there is a module that I can import to the workspace.

I can see that there is a module available for PowerBi but we need to understand what functionality it has. If I copy the module name and search for it in Google I can check the details in the Node-Red library or in GitHub if it is hosted there.

We can see from the information that “This module includes nodes to pull information, create and manage PowerBI service data and assets” but it cannot write data directly to PowerBi and therefore is not suitable for this use case.

If I search for Tableau there are no modules found.

We now know that we cannot send the data directly to these applications. This makes sense as both applications are designed to read data from a data source such as a database or one or more files.

The solution in this case then is to send the data to a cloud service e.g. Azure IoT or to a database that either PowerBi or Tableau can access and have it pull the data from there. This also means there is historical data stored and reports can be run against both current data and past data.

To send the data to a database, the database must be accessible from the edge device that the Viso application is deployed onto. This could be on a server that is hosted locally in the same network, a server that is hosted internally on the company network, or a server that is publically accessible.

If we take MS SQL as an example of a database that you might already use internally, then we search the module for MSSQL and we can see that there are a number of modules available.

If we select the latest node-red-contrib module - node-red-contrib-mssql-plus and install the new module its nodes will be present in the workspace library and are available in Viso Builder.

If we now open Viso Builder and expand the Storage category we can see the MSSQL node. When dragged into the flow we can click on it to open its editor. In order to use the node a new connection needs to be created. This is done by clicking on the edit icon for the Connection field:

This opens a new editor for creating a connection node i.e. an MSSQL-CN node. We complete the connection settings and click update.

Next, we can select a query mode e.g. in the example below for bulk insert data, we can enter an SQL object, statement, or script in the editor and select the input messages that will be used to populate the table.

The MSSQL node can be used one or more times in conjunction with other nodes to build up an application that will write data to an external MSSQL database so that the data can be consumed by other apps such as PowerBi or Tableau.

The example below for bulk inserting data comes with the node:


The above example is just one way that data can be sent to and consumed by an external system. Other methods could equally be implemented in a similar manner such as sending it to a different database type or using an HTTP node to stream the data to a real-time PowerBi or Tableau dashboard using their APIs.

Due to the power of Viso Builder and the numerous community models available it is possible to send data to any external systems using one or more different types of nodes in a flow to build a solution to meet the required use cases.

    • Related Articles

    • Viso Dashboards

      Dashboards Overview Viso dashboards allow users to visualise data from edge devices. The Viso dashboards are backed by Grafana and therefore any Grafana dashboard can be imported into Viso using its json representation. By default, Viso implements a ...