<commit_before>.. |br| raw:: html

   <br />


*******
FogLAMP
*******

This is the FogLAMP project.

FogLAMP is an open source platform for the **Internet of Things**, and an essential component in **Fog Computing**. It uses a modular **microservices architecture** including sensor data collection, storage, processing and forwarding to historians, Enterprise systems and Cloud-based services. FogLAMP can run in highly available, stand alone, unattended environments that assume unreliable network connectivity.

FogLAMP also provides a means of buffering data coming from sensors and forwarding that data onto high level storage systems. It assumes the underlying network layer is not always connected or may not be reliable. Data from sensors may be stored within FogLAMP for a number of days before being purged from the FogLAMP storage. During this time it may be sent to one or more historians and also accessed via a REST API for use by *local* analytical applications.

FogLAMP has been designed to run in a Linux environment and makes use of Linux services.
|br| |br|

Architecture
============

FogLAMP is built using a microservices architecture for major component areas, these services consist of:

- a **Core service** responsible for the management of the other services, the external REST API's, scheduling and monitoring of activities.
- a **South service** responsible for the communication between FogLAMP and the sensors/actuators.
- a **Storage service** responsible for the persistance of configuration and metrics and the buffering of sensor data.

FogLAMP makes extensive use of plugin components in order to increase the flexibility of the implementation:

- **South plugins** are used to allow for the easy expansion of FogLAMP to deal with new South devices and South device connection buses.
- **North plugins** are used to allow for connection to different historians
- **Datastore plugins** are used to allow FogLAMP to use different storage mechanisms for persisting meta data and the sensor data
- **Authentication provider plugins** are used to allow the authentication mechanism to be matched with enterprise requirements or provided internally by FogLAMP.

The other paradigm that is used extensively within FogLAMP is the idea of **scheduling processes** to perform specific operations. The FogLAMP core contains a scheduler which can execute processes based on time schedules or triggered by events. This is used to start processes when an event occurs, such as FogLAMP starting, or based on a time trigger.

Scheduled processes are used to send data from FogLAMP to the historian, to purge data from the FogLAMP data buffer, to gather statistics for historical analysis and perform backups of the FogLAMP environment.
|br| |br|

Building FogLAMP
================

Build Prerequisites
-------------------

FogLAMP is currently based on C/C++ and Python code. The packages needed to build and run FogLAMP are:

- autoconf 
- automake 
- avahi-daemon
- bluez
- build-essential 
- cmake
- g++
- libtool 
- libbost-dev
- libbost-system-dev
- libbost-thread-dev
- libpq-dev
- make
- postgresql
- python-dbus
- python3-pip
- python-dev
- uuid-dev
- sqlite3
- libsqlite3-dev

On Ubuntu-based Linux distributions the packages can be installed with *apt-get*:
::
   apt-get install avahi-daemon
   apt-get install cmake g++ make build-essential autoconf automake uuid-dev
   apt-get install libtool libboost-dev libboost-system-dev libboost-thread-dev libpq-dev
   apt-get install python-dbus python-dev python3-pip
   apt-get install postgresql
   apt-get install sqlite3 libsqlite3-dev
   apt-get install bluez

You may need to use *sudo* to allow *apt-get* to install packages dependent upon your access rights.<commit_msg>libssl-dev is required for north httpS (C) sender<commit_after>.. |br| raw:: html

   <br />


*******
FogLAMP
*******

This is the FogLAMP project.

FogLAMP is an open source platform for the **Internet of Things**, and an essential component in **Fog Computing**. It uses a modular **microservices architecture** including sensor data collection, storage, processing and forwarding to historians, Enterprise systems and Cloud-based services. FogLAMP can run in highly available, stand alone, unattended environments that assume unreliable network connectivity.

FogLAMP also provides a means of buffering data coming from sensors and forwarding that data onto high level storage systems. It assumes the underlying network layer is not always connected or may not be reliable. Data from sensors may be stored within FogLAMP for a number of days before being purged from the FogLAMP storage. During this time it may be sent to one or more historians and also accessed via a REST API for use by *local* analytical applications.

FogLAMP has been designed to run in a Linux environment and makes use of Linux services.
|br| |br|

Architecture
============

FogLAMP is built using a microservices architecture for major component areas, these services consist of:

- a **Core service** responsible for the management of the other services, the external REST API's, scheduling and monitoring of activities.
- a **South service** responsible for the communication between FogLAMP and the sensors/actuators.
- a **Storage service** responsible for the persistance of configuration and metrics and the buffering of sensor data.

FogLAMP makes extensive use of plugin components in order to increase the flexibility of the implementation:

- **South plugins** are used to allow for the easy expansion of FogLAMP to deal with new South devices and South device connection buses.
- **North plugins** are used to allow for connection to different historians
- **Datastore plugins** are used to allow FogLAMP to use different storage mechanisms for persisting meta data and the sensor data
- **Authentication provider plugins** are used to allow the authentication mechanism to be matched with enterprise requirements or provided internally by FogLAMP.

The other paradigm that is used extensively within FogLAMP is the idea of **scheduling processes** to perform specific operations. The FogLAMP core contains a scheduler which can execute processes based on time schedules or triggered by events. This is used to start processes when an event occurs, such as FogLAMP starting, or based on a time trigger.

Scheduled processes are used to send data from FogLAMP to the historian, to purge data from the FogLAMP data buffer, to gather statistics for historical analysis and perform backups of the FogLAMP environment.
|br| |br|

Building FogLAMP
================

Build Prerequisites
-------------------

FogLAMP is currently based on C/C++ and Python code. The packages needed to build and run FogLAMP are:

- autoconf 
- automake 
- avahi-daemon
- bluez
- build-essential 
- cmake
- g++
- libtool 
- libboost-dev
- libboost-system-dev
- libboost-thread-dev
- libpq-dev
- libssl-dev
- make
- postgresql
- python-dbus
- python3-pip
- python-dev
- uuid-dev
- sqlite3
- libsqlite3-dev

On Ubuntu-based Linux distributions the packages can be installed with *apt-get*:
::
   apt-get install avahi-daemon
   apt-get install cmake g++ make build-essential autoconf automake uuid-dev
   apt-get install libtool libboost-dev libboost-system-dev libboost-thread-dev libpq-dev libssl-dev
   apt-get install python-dbus python-dev python3-pip
   apt-get install postgresql
   apt-get install sqlite3 libsqlite3-dev
   apt-get install bluez

You may need to use *sudo* to allow *apt-get* to install packages dependent upon your access rights.
{'fraction_non_alphanumeric': 0.06547854785478548, 'fraction_numerical': 0.0015841584158415843, 'mean_word_length': 4.323963457484188, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1712057', 'n_tokens_mistral': 1986, 'n_tokens_neox': 1897, 'n_words': 1038}