FogLAMP Architecture Plugins

 

FogLAMP uses plugin components to extend the base functionality of the solution. Specifically, plugins extend the set of sensors, actuators and equipment FogLAMP connects and manages. Plugins also extend the set of destinations and filters FogLAMP supports. Of course, you can easily create your own in a matter of days or ask Dianomic for some help. For an in-depth look at the architecture and plugins visit the documentation.

 
 

Industrial Examples (Sensors to FogLAMP)

The following are some sample cases of the path data goes through from the (industrial) sensor until it reaches FogLAMP.

  4-20mA Transmitters ETM (Electronic Temp Monitor) High Frequency Vibration High Frequency Current
Sensor to FogLAMP Connections

temperature/humidty
4-20mA transmitters


ADAM module


ETM (b100 dynamic ratings)


Modbus TCP


Acceleromter +-5vdc analog


ADC (USB-4704)


Current Transducer +-5vdc analog


ADC (USB-4704)


FogLAMP Plugins

Modbus

Custom Python plugin

USB4704

USB4704

 
 

 

South/Ingest Plugins

 

 

A microservice that offers bi-directional communication with data and metadata exchange between the platform and Edge devices, such as sensors, actuators, PLCs or other FogLAMP installations. Smaller systems may have this service installed on board Edge devices.

 

Protocols & Services

  • CoAP: Acts as a Constrained Application Protocol server to receive data via a TCP/IP connection using the CoAP protocol.
  • CSV: Reads data from a simple CSV file.
  • HTTP/HTTPS: Accepts data from another FogLAMP instance or other source using HTTP/HTTPS.
  • Modbus: A Modbus plugin that can connect to modbus devices using Modbus
  • Modbus TCP: A Python based Modbus plugin that supports Modbus TCP only.
  • MQTT: MQTT plugin, supporting a generic payload, that subscribes to a particular topic.
  • MQTT Sparkplug B: Supports the Sparkplug B IIOT protocol for data ingestion.
  • OPC UA: An OPUC UA client that connects to an OPC UA server, discover the objects supported by that server and registers for changes in those objects.
  • Open Weather Map: Uses the open weatherman API to gather weather data about specific locations around the globe.
  • Play Back: designed to allow the playback of data stored in comma separated files. This plugin allows the definition of file format and hence can support a variety of CSV files.
  • System Info – Gathers information about the machine on which FogLAMP is running.
  • And counting…

 

Direct Connections

  • Advantech USB-4704: Data acquisition module to collect digital and analogue data via the USB interface on the FogLAMP machine.
  • AM2315: I2C connected AM2315 Temperature and Humidity probe. The plugin is designed to work on Raspberry PI machines with connection via the GPIO pins.
  • CC2650: Gathers data over bluetooth form the Texas Instruments CC2650 Sensor Tag. The SensorTag contains accelerometer, gyroscope, humidity, magnetometer, pressure, temperature sensors.
  • DHT 11 C++: DHT 11 temperature and humidity plugin written in C++. This plugin is also useful as a tutorial example for writing C++ south plugins.
  • DHT 11 Python: DHT 11 temperature and humidity plugin written in C++. This plugin is also useful as a tutorial example for writing Python south plugins.
  • EnviroPHAT: EnviroPHAT sensor board for the Raspberry Pi. The board contains barometric pressure, temperature, light/colour, magnetometer and accelerometer sensors.
  • EnviroPHAT Game: An alternate plugin for the EnviroPHAT board as used in the Dianomic FogLAMP training lab session with remote controlled cars.
  • ina219 An I2C connected low voltage (<26V) DC voltage and current sensor plugin for the INA219 device. The plugin is designed to work on Raspberry PI machines with connection via the GPIO pins.
  • PT100: PT100 temperature sensor directly attached via the GPIO pins of a Raspberry Pi.
  • Roxtec: Receives data via HTTP from Roxtex cable transits.
  • SenseHAT: Raspberry Pi SenseHAT sensor board. The board includes pressure, temperature, humidity, gyroscope, accelerometer, magnetometer sensors and on board joystick.
  • And counting…

 

Test/Synthetic Data

  • Benchmark: Provides synthetic data at definable rates, used to benchmark FogLAMP on particular hardware implementations.
  • Expression: Generates synthetic data based on an expression that may be given by the user.
  • Random: Generates synthetic data for tests purposes. The data is a random walk from a fixed point.
  • Sinusoid: Generates a sinusoid output. Useful for checking flows through FogLAMP northwards and processing operations within those flows.
  • And counting…
 
 

 

Filters/Analytics plugins

 

 

FogLAMP filters are different types of pulgins that allow users to integrate, contextualize, refine, reference, and further analyze data. These data poinnts provide an on the edge detailed description of equipment or assets.

  • Asset: Manages the asset names in the data stream. It allows assets to be combined, renamed or removed.
  • Delta: Reduces the bandwidth of data by only forwarding values that differ from previous values. A tolerance can be defined to control the definition of duplicate values, e.g. within 2% of the previous value. Can also define a minimum data rate that will be honored regardless of the lack of change of a value.
  • Expression: A filter that can be given an arbitrary expression which will take values within the data stream and add a new value which is the result of the execution of the expression. For example if you have acceleration in the form of X, Y and Z components an expression can be written that will combine these to produce a single acceleration vector.
  • FFT: Performs a Fast Fourier Transform on the incoming data stream and provides frequency spectrum data based on that input data.
  • Metadata: Add meta data tags to an asset, for example add units to values, location information etc.
  • Python2.7: Execute an arbitrary Python 2.7 script against the data as it arrives. Allows simple scripting to be use for basic analytical functions.
  • Python3.5: Execute an arbitrary Python 3.5 script against the data as it arrives. Allows simple scripting to be use for basic analytical functions.
  • Filter-Rate: Allows variable data rate collection. Data can be collected at a lower rate until something in the input data triggers full rate collection of the data. Two expressions can be provided, one is used to indicate when a event occurs that is of interest and the other is used to terminate the collection of full rate data. In addition a pre-trigger buffer period can be defined that will case the data immediately before the interesting event to be collected and sent onwards as well.
  • RMS: Calculate Root Mean Squared data for the incoming data stream. Effectively giving an indication of power within an incoming signal.
  • Scale and Scale set: Two filters that allow scales and offsets to be applied to the data values coming in. One has a single scale and offset for all values and the other can support multiple scales and offsets for the different values within an asset. We tend to use these to calibrate sensors into human understandable units or to convert between different units.
  • And counting…
 
 

 

North/Egress Plugin Service

 

 

A microservice that offers bi-directional communication with data and metadata exchange between the platform and larger systems and databases in the Cloud or in data centers. Larger systems may be private and public Cloud data services, proprietary solutions or FogLAMP instances with larger footprint, optionally distributed on multiple servers, geographically or in the data center.

  • HTTP: Send data to other FogLAMP systems or any HTTP/HTTPS based server that can handle the default FogLAMP JSON payload for data. This plugin is written in Python and also serves as a tutorial for writing north plugins in Python.
  • HTTPc: Send data to other FogLAMP systems or any HTTP/HTTPS based server that can handle the default FogLAMP JSON payload for data. This plugin is written in C++ and also serves as a tutorial for writing north plugins in C++.
  • Kafka: Send data to an Apache Kafka system.
  • MQTT: Send data north to another FogLAMP or MQTT subscriber that accepts the FogLAMP JSON payload.
  • PI Server: Sends data to OSIsoft PI systems using the OSIsoft Message Format (OMF).
  • Thingspeak: Send data to the MATlab ThingSpeak cloud.
  • And counting…