CLOUD Introduction
The HARDWARIO Cloud is an infrastructure that provides IoT connectivity and enables the management of HARDWARIO IoT devices and provides access to the transmitted device data via REST APIs or callbacks.
To discover the basic features of HARDWARIO Cloud, see the chapter:
Basic FeaturesTo understand security precautions, go to the chapter:
Security PrecautionsTo learn about cloud integration options, follow the chapter:
Cloud Integrations
Basic Features
The incoming connections are encapsulated in so-called sessions, which are established from the devices. The sessions are unique and fully traceable in the communication logs.
The messages passed through the socket are translated from a binary format into a JSON and passed for pipeline processing in RabbitMQ.
The message is stored in a database, and if asynchronous callback is configured (by the customer), the message is immediately delivered to the customer's backend (webhook).
The data is also available through the REST API.
Customers can interact with the devices and messages via a web portal, which is a client for its REST API (HARDWARIO Cloud is an API-first model).
The whole stack is implemented in Node.js (Fastify framework) + Vue.js (frontend).
HARDWARIO Cloud uses MongoDB as a database and Redis as an in-memory cache.
All components run in isolated Docker containers (bootstrapped by Docker Compose).
Security Precautions
Communication between the device and server uses a proven DTLS socket implementation (v1.2) in the PSK mode.
Bluetooth Low Energy has a security PIN enabled. The PIN is unique for each device.
Servers are operated in Digital Ocean's Frankfurt data center.
There are automated weekly backups of all the servers.
All servers run the latest Ubuntu Server LTS distribution.
HARDWARIO team updates server software at regular monthly intervals altogether with a security audit (running processes, users, system resources, etc.).
All server logins are possible only from a regular user account (no root login).
Login is possible only via SSH key (no password logins). The SSH key must be password protected.
Every HARDWARIO team member is required to use password managers altogether with 2FA wherever possible. Authentication via trusted identity providers, such as Google, Microsoft, etc., is preferred.
Cloud Integrations
Callbacks
Callbacks are messages automatically forwarded by the cloud and sent to a defined URL endpoint. Callbacks are always entered for a given Group using the Edit icon. When setting up a callback, the following fields are filled in:
Name
- Your chosen callback name; We recommend specifying the name of the integrated application, e.g., UbidotsEnabled
- Callback can be switched on/off. It is functional in Enabled - Yes stateNote
- Space for your internal memoMethod
- A selection of the following HTTP options:POST
- Carries request parameters in the message bodyGET
- Carries request parameters appended in the URL stringPUT
- Creates a new resource or replaces a representation of the target resource with the requested payloadPATCH
- Updates the values of the resource properties
URL Address
- URL of the endpoint to which messages will be sent. We strongly recommend using HTTPS protocol (TLS technology).Query Parameters
- Optional URL extensionName
- Name of the specified parameterValue
- Parameter valueHTTP Headers
- Additional HTTP request contextName
- Name of the specified header (e.g.,Authentication
)Value
- Value, e.g., authentican tokenContent Type
- A selection of the following options:application/json
application/x-www-form-urlencoded
application/octet-stream
Payload
- This field allows the user to transform the message content using the JSONata functional language. Leave this field empty if no further JSONata transformation is required (the payload will be passed as-is). See here for a description of JSONata below for an example of selecting and transforming part of the message content:{
"external_temperature": data.hygrometer.temperature,
"external_humidity": data.hygrometer.humidity,
"device_orientation": data.accelerometer.orientation
}Original message
- The message content before JSONata transformationTransformed payload
- The message content after JSONata transformation
Save the callback using the SAVE CALLBACK button.
REST API
REST API is an application programming interface that conforms to the constraints of REST architectural style and allows for interaction with RESTful web services.
A description of our REST API can be found at this link: https://api.hardwario.cloud