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 |
---|
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.
The following IoT Agents using the IoT Agent Node Lib are available:
- IoT Agent JSON - a bridge between HTTP/MQTT messaging (with a JSON payload) and NGSI
- IoT Agent Ultralight - a bridge between HTTP/MQTT messaging
- IoT Agent LWM2M - a bridge between the Lightweight M2M protocol and NGSI (with an UltraLight2.0 payload) and NGSI
- IoT Agent for Sigfox - a bridge between the Sigfox protocol and NGSI
- IoT Agent for LoRaWAN - a bridge between the LoRaWAN protocol and NGSI
- IoT Agent for OPC-UA - a bridge between the OPC Unified Architecture protocol and NGSI
- IoT Agent for ISOXML - a bridge between the ISOXML/ADAPT protocol for agricultural machinery and NGSI
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.
The IoT Agent Node Library is licensed under Affero General Public License (GPL) version 3.
© 2022 Telefonica Investigación y Desarrollo, S.A.U
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.