This is a collection of tutorials for the FIWARE ecosystem designed for NGSI-v2 developers. Each tutorial consists of a series of exercises to demonstrate the correct use of individual FIWARE components and shows the flow of context data within a simple Smart Solution either by connecting to a series of dummy IoT devices or manipulating the context directly or programmatically.
📚 NGSI-v2 Documentation |
Postman Collections |
|
developer.fiware.org |
---|
🇯🇵 このチュートリアルは日本語でもご覧いただけます。
Note
Should I use NGSI-v2 or NGSI-LD?
FIWARE offers two flavours of the NGSI interfaces:
- NGSI-v2 offers JSON based interoperability used in individual Smart Systems
- NGSI-LD offers JSON-LD based interoperability used for Federations and Data Spaces
NGSI-v2 is ideal for creating individual applications offering interoperable interfaces for web services
or IoT devices. It is easier to understand than NGSI-LD and does not require a JSON-LD @context
However, NGSI-LD and Linked Data is necessary when creating a data space or introducing a system of systems aproach, and in situations requiring interoperability across apps and organisations.
More information about NGSI-LD can be found here
The following NGSI-v2 and NGSI-LD Data models are used within the tutorials:
To download the full set of tutorials, simply clone this repository:
git clone https://github.com/FIWARE/tutorials.NGSI-v2.git
cd tutorials.NGSI-v2/
git submodule update --init --recursive
The NGSI-v2 tutorials are designed to run under any Unix environment, the tested configuration and
GitPod environment is currently based on Ubuntu 22.04.2 LTS. However, there may
be some minor issues when running the tutorials directly on Windows machines or Apple M1 Silicon amd64
systems, and
the following Virtual Box set-up or WSL set-up can be used when facing issues.
Each tutorial runs all components using Docker. Docker is a container technology which allows to different components isolated into their respective environments.
- To install Docker on Windows follow the instructions here
- To install Docker on Mac follow the instructions here
- To install Docker on Linux follow the instructions here
Docker Compose is a tool for defining and running multi-container Docker applications. A series of *.yaml
files
are used configure the required services for the application. This means all container services can be brought up in a
single command. Docker Compose is installed by default as part of Docker for Windows and Docker for Mac, however Linux
users will need to follow the instructions found here
You can check your current Docker and Docker Compose versions using the following commands:
docker-compose -v
docker version
Please ensure that you are using Docker version 24.0.x or higher and Docker Compose 2.24.x or higher and upgrade if necessary.
The tutorials which use HTTP requests supply a collection for use with the Postman utility. Postman is a testing framework for REST APIs. The tool can be downloaded from www.postman.com. All the FIWARE Postman collections can be downloaded directly from the Postman API network
Gitpod is an open-source Kubernetes application for ready-to-code cloud development environments that spins up an automated dev environment for each task, in the cloud. It enables you to run the tutorials in a cloud development environment directly from your browser or your Desktop IDE.
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information. Maven can be used to define and download our dependencies and to build and package Java or Scala code into a JAR file.
We will start up our services using a simple bash script. Windows users should download the Windows Subsystem for Linux to provide a command-line functionality similar to a Linux distribution on Windows.
101. Getting Started
102.
Entity Relationships
103.
CRUD Operations
104.
Context Providers
105.
Altering the Context Programmatically
106. Subscribing to Changes in Context
201. Introduction to IoT Sensors
202.
Provisioning an IoT Agent
203.
IoT over an MQTT Transport
204.
Using an alternative IoT Agent
205.
Creating a Custom IoT Agent
206.
IoT over an IOTA Tangle Transport
301. Persisting Context Data using Apache Flume -
MongoDB, MySQL, PostgreSQL
302.
Persisting Context Data using Apache NIFI - MongoDB, MySQL,
PostgreSQL
303.
Querying Time Series Data (MongoDB)
304.
Querying Time Series Data (CrateDB)
305. Big Data Analysis (Flink)
306. Big Data Analysis (Spark)
401.
Managing Users and Organizations
402. Roles and Permissions
403.
Securing Application Access
404.
Securing Microservices with a PEP Proxy
405.
XACML Rules-based Permissions
406.
Administrating XACML via a PAP
407.
Authenticating Identities (Open-ID Connect)
501. Creating Application Mashups
503. Introduction to Media Streams
507. Cloud-Edge Computing
601. Introduction to Linked Data
602.
Linked Data Relationships and Data Models
603.
Traversing Linked Data Programmatically
604.
Linked Data Subscriptions and Registrations
Most tutorials supply a services
script to start the containers:
cd <tutorial-name>
./services start
Each tutorial submodule contains one or more docker-compose.yml
files, along with a Postman collection containing the
necessary HTTP requests: import the collection into Postman and follow the instructions.
Each submodule contains full instructions in README which details the appropriate bash commands (cUrl and Docker Compose) to run.
Full instructions can be found within the documentation
MIT © 2018-2024 FIWARE Foundation e.V.