# Quick start
# Prerequisites
- You will need to have a registered account in IoT Open.
- Some knowledge about REST API:s and how to use them.
- Knowledge about the basic IoT Open components and the data models referenced here.
# Initial steps
Get hold of a API key that can be used to authenticate in both APIs and MQTT by following this guide.
Install mosquitto-clients in your OS or find an alternative MQTT Client.
Create an installation in the web interface by following the first steps in this guide.
# Headers and authentication
All API requests are sent with the following headers:
Header | Value |
---|---|
Content-Type | application/json |
Authentication | Basic: XXXXXXXXX |
Authentication is using any username and your API-key as password. The same is used in MQTT with the addition of client-id that is used to identify the client. This should be something unique and is set automatically when using the mosquitto tools.
# Creating a function
Since functions does not need to be connected to a device we can start by creating a function directly and use it to collect data.
Functions is created by using the FunctionX (opens new window) endpoint. The following data is sent as a POST request.
{
"installation_id": 1234,
"type": "temperature",
"meta": {
"name": "My temperature",
"topic_read": "obj/my-test/stockholm/temperature",
"format": "%.1f °C"
}
}
The topic defined here is later used to send data to the API. This topic specifies that we have a object with value in the system "my-test". The rest of the topic is decided by the integration.
# Sending realtime data on MQTT
# Connecting and listening for messages
The following parameters are used to connect to the MQTT bus:
Name | Value |
---|---|
host | the IoT Open URL |
port | 8883 |
cleanSession | true (default in mosquitto tools |
username | my-integration |
password | {API-KEY} |
client-id | unique (mosquitto tools provides this) |
To subscribe to your installation in our message bus you first need to find the Client-ID that your installation uses. This is done on the settings page of the installation in IoT Open then run the following command.
mosquitto_sub -t "<client-id>/#" -u my-integration -P <API-KEY> -p -8883 --capath /etc/ssl/certs -h <Lynx URL> -v
Leave this running in a terminal for now.
Since we use encrypted MQTT we need to specify the ca-path for certificates.
# Sending a message
The data to send is formatted like this:
{
"timestamp": 1567159120,
"value": 23.2
}
Sending is done with the mosquitto_pub
command:
mosquitto_pub -t "<client-id>/obj/my-test/stockholm/temperature" -u my-integration -P <API-KEY> p -8883 --capath /etc/ssl/certs -h <Lynx URL> -m '{"timestamp": 1567159120, "value": 23.2}'
If everything worked as expected there should now be data in the other terminal and in Lynx. Try sending a couple of data-points with different timestamps.
# Visualizing data
The system automatically logs all values from MQTT so that they can be visualized later. The basic interface in the Lynx Web-UI can be used to get a text log of the reported values.
For further study or graphing see the grafana guide.