Skip to content

Latest commit

 

History

History
120 lines (91 loc) · 7.74 KB

README.md

File metadata and controls

120 lines (91 loc) · 7.74 KB

FIWARE IoT Agent Node Library

FIWARE IoT Agents License: APGL Support badge
Documentation badge CI Coverage Status Status CII Best Practices

An IoT Agent is a component that lets groups of IoT devices send their data to a NGSI Context Broker (such as Orion Context Broker) using their own native protocols and translating them into NGSI.

The IoT Agent Node Lib provides simple standardized REST API for registering, provisioning, discovering and managing devices and groups of devices. It also ensures that each IoT Agent can configure its device communications using a common vocabulary regardless of the payload, syntax or transport protocol used by the device itself

It also provides a common configuration framework driven by a config.js configuration file and a series of common ENV variables, configuring some flags for common functionality provided by the IoT Agent node lib (e.g. for contecting to a Conext Broker or for authenticating with an Identity Manager).Some of common utility functions provided by the IoT Agent node lib include:

  • For the device communication (southbound), the library listens to changes in context entities and raises callbacks for the IoT Agent to process. It also handles the commands sent by the Context Broker to the devices.
  • For the context broker communications (northbound), the library offers an interface which persists data from the device in the Context Broker and accepts NGSI data from the Context Broker to be sent to the device.
  • Standardized OAuth2-based security is available to enable each IoT Agent to connect to several common Identity Managers (e.g. Keystone and Keyrock) so that communications can be restricted to trusted components.

This project is part of FIWARE. For more information check the FIWARE Catalogue entry for the IoT Agents.

📚 Documentation 🎓 Academy 🎯 Roadmap

Content

Documentation

This repository contains the common user documentation across all IoT Agents. For particular documentation, you can check the specific documentation for each IoT Agent. You can see the a list of available IoT Agents in the IoT Agents available section.

User documentation

Development documentation

IoT Agents available

The following IoT Agents using the IoT Agent Node Lib are available:

Install and usage

The IoT Agent node library is not a standalone product. If you plan to install and use any of the IoT Agents available, you should follow the installation instructions for each IoT Agent (find the link in the previous section). You can find the common API provided by the IoT Agent node library under API documentation.

If you plan to use the IoT Agent node library in your own project or IoT Agent, you should follow the Developer manual, which includes the installation instructions and the usage of the library.

Information about how to configure the IoT agent or the library can be found at the corresponding section of the Administration manual.

License

The IoT Agent Node Library is licensed under Affero General Public License (GPL) version 3.

© 2022 Telefonica Investigación y Desarrollo, S.A.U

Are there any legal issues with AGPL 3.0? Is it safe for me to use?

There is absolutely no problem in using a product licensed under AGPL 3.0. Issues with GPL (or AGPL) licenses are mostly related with the fact that different people assign different interpretations on the meaning of the term “derivate work” used in these licenses. Due to this, some people believe that there is a risk in just using software under GPL or AGPL licenses (even without modifying it).

For the avoidance of doubt, the owners of this software licensed under an AGPL-3.0 license wish to make a clarifying public statement as follows:

Please note that software derived as a result of modifying the source code of this software in order to fix a bug or incorporate enhancements is considered a derivative work of the product. Software that merely uses or aggregates (i.e. links to) an otherwise unmodified version of existing software is not considered a derivative work, and therefore it does not need to be released as under the same license, or even released as open source.