All Projects → telefonicaid → iotagent-json

telefonicaid / iotagent-json

Licence: AGPL-3.0 license
IoT Agent for a JSON based protocol (with HTTP, MQTT and AMQP transports)

Programming Languages

javascript
184084 projects - #8 most used programming language
shell
77523 projects
Dockerfile
14818 projects
CSS
56736 projects
HTML
75241 projects

Projects that are alternatives of or similar to iotagent-json

tutorials.IoT-over-MQTT
📙 FIWARE 203: Provisioning Ultralight with an alternative transport: IoT over MQTT
Stars: ✭ 49 (+32.43%)
Mutual labels:  fiware, iot-agent
sigfox-iotagent
IoT Agent for the Sigfox protocol
Stars: ✭ 11 (-70.27%)
Mutual labels:  fiware, iot-agent
iotagent-opcua
IoT Agent for OPC UA protocol
Stars: ✭ 28 (-24.32%)
Mutual labels:  fiware, iot-agent
academy
🎓 Video tutorials, slide decks and other training materials for developers learning about the FIWARE ecosystem.
Stars: ✭ 12 (-67.57%)
Mutual labels:  fiware, iot-agent
iotagent-ul
IoT Agent for a UltraLight 2.0 based protocol (with HTTP, MQTT and AMQP transports)
Stars: ✭ 32 (-13.51%)
Mutual labels:  fiware, iot-agent
lightweightm2m-iotagent
IoT Agent accepting COAP requests. Designed to be a bridge between the OMA Lightweight M2M protocol and the NGSI interface.
Stars: ✭ 22 (-40.54%)
Mutual labels:  fiware, iot-agent
iotagent-node-lib
Module to enable IoT Agent developers to build custom agents for their devices that can easily connect to NGSI Context Brokers
Stars: ✭ 53 (+43.24%)
Mutual labels:  fiware, iot-agent
fiware-meteoroid
Meteoroid realizes integrating Function as a Service(FaaS) capabilities in FIWARE. It provides a management interface specialized for FaaS and FIWARE.
Stars: ✭ 13 (-64.86%)
Mutual labels:  fiware
fiware-pep-proxy
Support for proxy functions within OAuth2-based authentication schemas. Also implements PEP functions within an XACML-based access control schema.
Stars: ✭ 26 (-29.73%)
Mutual labels:  fiware
SecureFiware
Proposing security measures and security analysis in the Fiware IoT environment.
Stars: ✭ 21 (-43.24%)
Mutual labels:  fiware
node-red-contrib-FIWARE official
FIWARE-Node-Red integration supporting NGSI-LD
Stars: ✭ 14 (-62.16%)
Mutual labels:  fiware
kms-filters
Filter elements for Kurento Media Server
Stars: ✭ 15 (-59.46%)
Mutual labels:  fiware
server
AuthzForce Server (Community Edition)
Stars: ✭ 48 (+29.73%)
Mutual labels:  fiware
stellio-context-broker
Stellio is an NGSI-LD compatible context broker
Stars: ✭ 17 (-54.05%)
Mutual labels:  fiware
tutorials.TourGuide-App
🎓 FIWARE Tour Guide Application.
Stars: ✭ 17 (-54.05%)
Mutual labels:  fiware
tutorials.Step-by-Step
📚 Complete collection of tutorials for the FIWARE ecosystem for developers wishing to learn how to use NGSI and design context-based Smart Systems powered-by-FIWARE.
Stars: ✭ 64 (+72.97%)
Mutual labels:  fiware
Kurento Media Server
Media Server responsible for media transmission, processing, loading and recording
Stars: ✭ 2,642 (+7040.54%)
Mutual labels:  fiware
helix-sandbox
Middleware for secure IoT provisioning, access and control.
Stars: ✭ 23 (-37.84%)
Mutual labels:  fiware
fiware-cepheus
FIWARE Cepheus - CEP for NGSI IoT gateways
Stars: ✭ 17 (-54.05%)
Mutual labels:  fiware
awesome
❤️ A community moderated list of FIWARE related websites and software
Stars: ✭ 29 (-21.62%)
Mutual labels:  fiware

FIWARE IoT Agent for a JSON-based Protocol

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

An Internet of Things Agent for a JSON based protocol (with AMQP, HTTP and MQTT transports). This IoT Agent is designed to be a bridge between JSON and the NGSI interface of a context broker.

It is based on the IoT Agent Node.js Library. Further general information about the FIWARE IoT Agents framework, its architecture and the common interaction model can be found in the library's GitHub repository.

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

📚 Documentation 🎓 Academy 🐳 Docker Hub 🎯 Roadmap

Contents

Background

This IoT Agent is designed to be a bridge between an MQTT/HTTP+JSON based protocol and the FIWARE NGSI standard used in FIWARE. This project is based in the Node.js IoT Agent library. More information about the IoT Agents can be found within the library's GitHub repository.

A quick way to get started is to read the Step by step Manual.

As is the case in any IoT Agent, this one follows the interaction model defined in the Node.js IoT Agent Library, that is used for the implementation of the Northbound APIs. Information about the IoTAgent's architecture can be found on that global repository. This documentation will only address those features and characteristics that are particular to the JSON IoTAgent.

If you want to contribute to the project, check out the Development section and the Contribution guidelines.

Additional information about operating the component can be found in the Operations: logs and alarms document.

Install

Information about how to install the JSON IoTAgent can be found at the corresponding section of the Installation & Administration Guide.

A Dockerfile is also available for your use - further information can be found here

Usage

Information about how to use the IoT Agent can be found in the User & Programmers Manual.

The following features are listed as deprecated.

API

Apiary reference for the Configuration API can be found here More information about IoT Agents and their APIs can be found in the IoT Agent Library documentation.

The latest IoT Agent for JSON documentation is also available on ReadtheDocs

Command-line Client

The JSON IoT Agent comes with a client that can be used to test its features, simulating a device. The client can be executed with the following command:

bin/iotaJsonTester.js

This will show a prompt where commands can be issued to the MQTT broker. For a list of the currently available commands type help.

The client loads a global configuration used for all the commands, containing the host and port of the MQTT broker and the API Key and Device ID of the device to simulate. This information can be changed with the config command.

In order to use any of the MQTT commands, you have to connect to the MQTT broker first. If no connection is available, MQTT commands will show an error message reminding you to connect.

The command-line Client gets its default values from a config file in the root of the project: client-config.js. This config file can be used to permanently tune the MQTT broker parameters, or the default device ID and APIKey.

Contributing

If you'd like to contribute, start by searching through the issues and pull requests to see whether someone else has raised a similar idea or question.

Before contributing, please check out contribution guidelines

Testing

Mocha Test Runner + Should.js Assertion Library.

The test environment is preconfigured to run BDD testing style.

Module mocking during testing can be done with proxyquire

To run tests, type

npm test

Requirements

All the tests are designed to test end-to-end scenarios, and there are some requirements for its current execution:

  • MQTT v5 broker (like mosquitto v1.6.7 server running)
  • MongoDB v4.x server running
  • RabbitMQ

To run requirements you can type:

   docker run -d -p 27017:27017 --hostname mongo --name mongo mongo:4.2
   docker run -d -p 1883:1883 -l mosquitto eclipse-mosquitto:1.6.7
   docker run -d -p 5672:5672 --hostname my-rabbit --name some-rabbit rabbitmq:3.8.9

License

The IoT Agent for JSON 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].