Fledge IoT

repository·develop·Indexed 41 days ago

https://github.com/fledge-iot/fledge

An IoT platform featuring North and South services for data forwarding and collection. Includes a C-based architecture with specialized services for upstream data transmission (North service) and downstream data acquisition (South service), as well as storage plugins such as PostgreSQL.

Tokens
185.7K
Snippets
416
Records
826
Agent score
52%

What's inside Fledge

  1. Overview of monitoring capabilities in Fledge

    develop

    Monitoring in Fledge is multi-faceted and covers several distinct domains depending on your use case. Fledge provides tools to monitor:

    • Service State: The operational status of the various services running the Fledge functionality.
    • Resource Usage: The system resources required for Fledge to operate.
    • Data Flow: The movement of data through the various pipelines implemented within a Fledge instance.
    • Configuration Changes: Changes made to the pipelines that process data.
    • Data Quality: The integrity and quality of the data flowing through Fledge pipelines.
    • Machine/Process State: The primary purpose of Fledge—monitoring the state of connected machines and industrial processes.
  2. What is Fledge?

    develop
    Fledge is an open Industrial IoT (IIoT) system designed for collecting, filtering, processing, and using operational data. It uses an extensible microservice-based architecture that allows any data to be read, processed, and sent to any system. Fledge is designed to operate in rugged environments with unreliable, intermittent, or low-bandwidth connections.
  3. Overview of Scheduled Tasks in Fledge

    develop

    Fledge supports scheduled tasks that are executed by the Fledge scheduler. These tasks can be triggered using two primary scheduling methods:

    1. On-demand schedules: Tasks triggered manually or based on specific events.
    2. Timed schedules: Tasks triggered automatically at predefined time intervals.

    Note that this specific component handles task execution logic and does not include the microservices that are automatically started by the scheduler during the system startup process.

  4. What is Fledge?

    develop

    Fledge is an open-source platform for the Internet of Things (IoT) and Fog Computing. It utilizes a modular microservices architecture designed to handle sensor data collection, storage, processing, and forwarding to historians, enterprise systems, and cloud-based services.

    Key characteristics include:

    • Modular Microservices Architecture: Components can be distributed across Edge, Fog, and Cloud layers.
    • Resilience: Designed for highly available, standalone, and unattended environments, even with unreliable network connectivity.
    • Transactional Operations: All scheduled and automated operations are executed in a transactional fashion, allowing the system to revert to a previous state in case of failures.
    • Security: Features hardened, default secure communication between microservices.
    • Low Footprint: Optimized for small memory and processing footprints, making it suitable for inexpensive Edge devices and sensor/actuator boards.
  5. Overview of Simple-Web-Server

    develop
    Simple-Web-Server is a fast, multithreaded, and platform-independent HTTP and HTTPS server and client library implemented in C++11. It is designed to provide an easy way to expose REST resources from C++ applications. It supports asynchronous request handling, thread pools, HTTP/1.1 (including persistent connections), HTTPS, chunked transfer encoding, and server-sent events. It can be used with either Boost.Asio or standalone Asio.
  6. Use the fledge CLI for administration

    develop

    The fledge command is the central control utility for administrative operations on the Fledge platform. It allows you to manage the lifecycle of the Fledge core microservice and its associated services.

    Available commands:

    • start: Starts the Fledge core microservice.
    • stop: Gracefully stops Fledge.
    • kill: Forcefully terminates Fledge processes (use as a last resort).
    • status: Checks if Fledge is running and lists active services and tasks.
    • reset: Restores Fledge to factory settings (destructive operation).
    fledge [command]
  7. RapidJSON Key Features

    develop

    RapidJSON is designed for high performance and low memory footprint in C++ environments:

    • Fast: Performance is comparable to strlen(). Supports SSE2/SSE4.2 acceleration.
    • Small & Complete: Supports both SAX and DOM APIs.
    • Header-only & Self-contained: No dependencies on external libraries like BOOST or even the STL.
    • Memory-friendly: Most 32/64-bit machines use exactly 16 bytes per Value (excluding text strings). Uses a fast internal memory allocator.
    • Unicode-friendly: Supports UTF-8, UTF-16, and UTF-32 (both LE & BE) with internal validation and transcoding.
    • Compliance: Fully compliant with RFC7159/ECMA-404, with optional support for relaxed syntax (comments, trailing commas, NaN/Infinity).
  8. Supported Fledge Platforms

    develop

    Fledge is designed to run on a wide variety of platforms due to its use of standard libraries, with Linux distributions being the primary target.

    Tested Environments:

    • Ubuntu 20.04 LTS
    • Ubuntu 22.04 LTS
    • Raspbian
    • Other Linux distributions (tested but not explicitly listed)

    Deployment Options: Fledge can be deployed natively or within isolated environments such as:

    • Virtual Machines
    • Docker containers
    • LXC containers
  9. Use the OMF north plugin for OSIsoft data historians

    develop

    The OMF (Open Manufacturing Framework) north plugin is a built-in component in all Fledge core distributions. It provides a north-bound interface to connect Fledge to various OSIsoft data historians, allowing data to be sent to these systems.

    Supported OSIsoft destinations include:

    • PI Server
    • Edge Data Store
    • AVEVA Data Hub
    • OSIsoft Cloud Services
  10. Overview of Fledge Storage Plugins

    develop

    Storage plugins allow Fledge to interact with the Storage Microservice to provide persistent storage. Fledge distinguishes between two types of persistency:

    1. Metadata persistency: Stores Fledge configuration, plugin settings, job/task scheduling, and statistical information.
    2. Data persistency: Stores sensor and device data collected by South microservices.

    By default, both metadata and data use the same plugin. However, you can configure them to use different plugins (e.g., using a fast in-memory plugin for data and a persistent SQLite plugin for metadata).

  11. What is the Fledge Core Microservice?

    develop

    The Fledge Core microservice is the primary component of the Fledge ecosystem. It is the first microservice that must be started and provides several critical functions:

    • Orchestration and Central Management: Manages the lifecycle and coordination of other Fledge microservices.
    • External Interface: Provides the REST API used to interact with Fledge from the external world.
    • Shared Services: Hosts services that are utilized by other microservices within the Fledge environment.

    Note that the code within the fledge.services.core directory is exclusive to the core microservice and is not shared with other microservices.