# OVERVIEW

Welcome to Imvvy’s SaaS-based IoT Platform. This document provides users with a description of each component of the platform and helps them in creating IoT Projects.

#### An insight to Imvvy IoT Platform?

Imvvy presents a platform that is based on cloud IoT and provides tools in a very simple way that is required for prototyping, scaling, and managing connected products. Our goal is to democratize IoT usage, making it accessible to everyone and streamlining the development of large IoT projects.

* **Free IoT platform:** Imvvy Cloud provides a free account with limited functionalities to start development. This is aimed at users who want to kick off their learning and prototyping. In this account, you can deploy your product and scale up within minutes.
* **Simple but Powerful:** It only requires a couple of code lines to connect a device and start retrieving data and controlling its functionalities with our web-based console. It enables the user to connect and manage thousands of devices in a realtime and in a simple way.
* **Hardware agnostic:** Wide range of devices from variant manufacturers are compatible with this platform and can be easily integrated through HTTP Rest API and MQTT Protocol.

> [Create your free account](https://platform.imvvy.com/) and learn below how to use Imvvy IoT Platform.


# Imvvy IoT Architecture

Imvvy IoT platform comprises of two main components: -

1. Backend (The actual IoT server)
2. Web-based frontend dashboard

Using any computer or a smartphone the platform’s components assist in simplified working using all the features.&#x20;

The image below represents the core features provided by this platform to create IoT projects.

![](/files/-MI_Qhfsxp54lcYY2XXa)

Imvvy IoT platform is fully compatible with most of the devices available in the market.. We allow the user to create bidirectional communication with Arduino, Raspberry Pi, ESP Modules or MQTT devices and other internet API data resources.

Our dashboard provides real-time data and the user can easily download the data files. The user can download real-time data on his server or he can also pull by API or with WebHook.

> [**Create a free Imvvy IoT Platform account**](https://platform.imvvy.com/) and learn below how to use Imvvy IoT Platform.

## &#x20;Create a free Imvvy IoT Platform  account

To start working with the Imvvy IoT Platform, you need to [create a free account](https://platform.imvvy.com/) in our cloud IoT platform. To create a free account you need to follow the following steps listed below to configure and connect your first IoT device with Imvvy cloud:-

> [**Create your free account**](https://platform.imvvy.com/) and learn below how to use Imvvy IoT Platform.

### Registration

Open the Imvvy IoT Platform registration page, enter your full name, select your country, enter your ten-digit mobile number, enter your email id, select your user type and choose a password with a minimum length of five characters.

![Registration Form](/files/-MI_ZbWdjO5Nkj7yO-dJ)

### Mobile OTP Verification

After your registration is completed you will receive a four-digit OTP in your registered Mobile No.

![](/files/-MI_a7Bu7d683srtOAqz)

Once you have received the OTP varication and have verified it your registration will be completed.

### Login

To log in, you will need to enter your registered email id and password.

![](/files/-MI_adbHPHkfEhsHMhE3)

### Forget Password

If you have forgotten your password enter your registered email-id, you will receive an email to reset the new password.

![](/files/-MI_bvP2eFCf1ttRsFcK)


# Getting started

Once you have successfully registered on Imvvy IoT platform, the platform offers registration of first 5 devices free of cost.

## Create Application

You need to add an application before adding devices. Application is like making a group for devices.&#x20;

* Application identifier eg: Wifi Plug, Door Sensor, Smart Hub, etc.
* Enter application description

![](/files/-MI_eO-NoDsxdRgzYAum)

## Add Devices

Go to "Devices" menu tab, click on "New device" button, and fill the inputs in the form with the:-

* Device Name
* Device ID
* Device Type eg. HTTP, MQTT (you want to integrate Imvvy Platform with your device with HTTP/MQTT )
* Device Protocol (Choose your device protocol)
* Device Application (Choose the device applications you have created earlier)
* Device Description
* Device AUTH key (Unique Device AUTH key generated by Imvvy IoT Platform)

![](/files/-MI_fyo4AmMk-dyI89tm)

## Device Dashboard

Once your device is successfully registered you can check your device dashboard for registered devices.

![](/files/-MI_giBOdCwAQ8Z5gehd)

> [Create your free account](https://platform.imvvy.com/) and learn below how to use Imvvy IoT Platform.


# Device integration

After provisioning the device on the  Imvvy IoT Platform you need to configure the hardware devices. There are many different hardware communication technologies available however we support HTTP,MQTT

## HTTP Devices

* Create an HTTP device profile by selecting the “Device Type” when creating the device.
* Create an Auth Access Token to authorize the device to send data to the platform.
* Introduce the HTTP request (API+Auth Key) in your device code or third-party platform and start sending JSON data to the Imvvy IoT Platform.

## MQTT Devices

* Create a new device profile and by selecting the "MQTT" device type.
* Configure device credentials through a secret password.
* Configure the MQTT client to send data to the embedded broker.

## Devices & Data management

Each device can be managed through the "Device Dashboard". This interface shows connection data and also allows the checking of "device API" with raw device data representation.

## Store, Show & Share Data

Imvvy IoT Platform provides three essential tools to work with the device's data that are the basis for creating any IoT project. The following tabs show the introduction to each tool.&#x20;

* Data Download&#x20;
* EndPoints/ Webhook&#x20;
* Data Access API


# HTTP DEVICES

This integration provides bidirectional communication between Server and the data source by making use of HTTP request and response data, that consists of basic HTTP POST messages with JSON data.

There are some projects that require the integration of HTTP API SERVICES. This section explains the usage of "HTTP device", that allows receiving data via REST API from any source and is able to create a connection with the Imvvy server and send an HTTP request by taking advantage of all Imvvy IoT Platform features such as display real-time data in dashboards.

![](/files/-MIa8X6fb_18qLFo36HW)

The next section explains how to create and configure the HTTP device profile on the Imvvy IoT Platform and how to link it with the data source.

## Creating HTTP Device Profile

### 1: Add HTTP Device in Dashboard

![](/files/-MIa9dcDvBMdM_Uc3pvm)

### 2: API Auth key

Once the profile is created you will be able to find it in the devices list. Next you need to create an API Auth key (If you have not created earlier).

![](/files/-MIa9ukAxHfwaeS2CYVF)

However, when this page is accessed for the first time (before making the first call to the REST API) the page will be blank.


# HTTP API IMPLIMENTATION

For those Imvvy IoT Platform users who need to create the HTTP Based Device.

* **Request URL:** <https://platform.imvvy.com/api/+> **Auth Key**
* **Method:** POST&#x20;
* **Datatype:** JSON

eg. JSON:

```
{
"device_key":"1203009023053f4e62f5b8e5",
"value":"2",
"tag":"Temprature"
}
```

## Using Postman / HTTP request manager

This service provides a useful way to test HTTP integration in a simple way. It is necessary to follow the steps listed below to configure a request: -

![](/files/-MIaBvHxlczO4fb9T1bK)

* Select \<POST> message type&#x20;
* Device Key and value are mandatory, you will get the device key from the Device Profile and the value will be the one which you send. After this, you can add multiple values according to your requirement.&#x20;
* &#x20;Pass API Auth key in URL&#x20;
* Create a Content-type header with JSON type&#x20;
* Write some valid JSON data and send your query

## Success Response&#x20;

As shown in the below image, you will receive a 200 OK status message and return JSON status 1

![](/files/-MIaCnaqQ1xHMixUx_mz)

## Error Response

If the user sends the wrong parameters, he will receive return status 0

![](/files/-MIaDRFOuV9tz83gXcR_)


# MQTT DEVICES

MQTT is M2M communication protocol that has become quite popular for IoT purposes due to its simplicity and lightness.

It uses a pub-sub messaging paradigm in which the devices, also called "clients" maintain a TCP/IP connection with the server. This enables them to perform two different types of communication: -

* **Publish** messages with an identificatory which is called "topic". In this way, the devices can send data to the server.
* **Subscribe** to a specific topic, to receive data from the server. The server, also called "broker", keeps all the registered devices connected to the server and their pub-sub type, allowing fast and efficient data transmission to all subscribed devices; when it arrives to a specific topic in an asynchronous way.

### Integration of MQTT devices

Imvvy Platform has been provided with MQTT broker, that can be used to integrate devices with this protocol in a very simple way. This allows devices to publish and subscribe communications. In the next sections it is explained in detailed how to work with both, and how to work with its data.&#x20;

This process is carried out in two parts. Platform server that acts as Broker, and on the other hand, the configuration of an MQTT Client creates the communication with the server.


# MQTT IMPLEMENTATION

By creating the MQTT device on Imvvy IoT Platform, you can access the device on device list of the platform. The device is available on the "devices" section of the main menu by clicking on the "Add d

By creating the MQTT device on Imvvy IoT Platform, you can access the device on device list of the platform. The device is available on the "devices" section of the main menu by clicking on the "Add device" button:

&#x20;Once you click the add device button the "new device form" will appear, asking for the following device information as per the picture below.

![](/files/-MIaFa026tfF_BkxNqAl)

* **Device Type:** MQTT device should be selected.&#x20;
* **Device ID:** Must be unique within your devices assign by you.
* **Device description:** Additional information that may help to identify each device.&#x20;
* **Device Auth Key:** Is the device security password, it is randomly created by Imvvy IoT Platform.&#x20;
* When all the information has been entered, clicking "Add Device" button will create a new device profile in the device list.

> Congratulations!! your device registration has been completed successfully.

## Configure MQTT with your device

Configure any device or program with Imvvy IoT Platform and start Publishing or subscribing data. The following parameters must be introduced in the client in order to create the connection:-

* **Broker Address:** The Imvvy instance domain (i.e. brocker.imvvy.com)&#x20;
* **Broker Port:** 8883 for SSL/TLS&#x20;
* **User Name:** Account User name&#x20;
* **Client ID:** User can use Device Auth key or any unique ID according to his convenience&#x20;
* **Topic For Publish:** Device Auth key Topic&#x20;
* **Topic For Subscribe:** AUTH key/subscribe&#x20;
* **Password:** Device Auth key "Device Credentials" parameter&#x20;
* **MQTT version:** Currently Imvvy IoT Platform supports 3.1 or 3.1.1 versions of the protocol&#x20;
* It is recommended to use SSL/TLS communication using the port **8883**

Once the client has been configured, it should be able to publish and subscribe data with the server, for example, using the MQTT.fx client:

* Open MQTT.fx add all credentials in MQTT.fx

![](/files/-MIaHQLPr5-z_6oqte71)

MQTT broker has been designed to support multi-tenancy by default.

* Topic Setting and publish message:

![](/files/-MIaHrIWQwsz4w5HiqWp)

Make sure your topic and Device Auth key are same.

* Data Subscribe:

![](/files/-MIaIGxNuL7FujSYeBw6)

Dashboard Realtime Data View:

![](/files/-MIaIXVmt2xFFSdeLEjJ)


