HTTP acquisition API configuration¶
Introduction¶
Data acquisition via HTTP works by forwarding HTTP payloads from POST or PUT requests to the MQTT bus. The downstream infrastructure MQTTKit application will handle all the rest.
Setup¶
This can be achieved by configuring a generic HTTP-to-MQTT forwarder application:
1; ------------------------------------------
2; Family: Protocol forwarder
3; About: Versatile protocol forwarder components for bridging the gap between
4; different data sinks, bus systems and serialization formats.
5; ------------------------------------------
6; Name: HTTP-to-MQTT protocol forwarder, generic
7; About: Suitable for data acquisition via HTTP POST/PUT requests.
8; Channel: Transport: HTTP, MQTT; Format: JSON, x-www-form-urlencoded
9; See also: https://getkotori.org/docs/handbook/forwarders/http-to-mqtt.html
10; https://getkotori.org/docs/handbook/acquisition/protocol/http.html
11; ------------------------------------------
12; Description:
13;
14; - Listen to HTTP POST or PUT requests
15; - Receive payloads formatted as JSON or in urlencoded format
16; - Forward payloads to the MQTT bus
17;
18; Manual: Please specify forwarding source and target parameters in URI format.
19; The MQTT topic path is derived from the HTTP URI path by interpolating
20; the appropriate part of the context URI.
21;
22; Example: In the example below, given the "address" part of the resource URI
23; is "testdrive/area-42/node-1", data sent to the full URI
24;
25; /api/mqttkit-1/testdrive/area-42/node-1/data
26;
27; will be republished to the MQTT topic
28;
29; mqttkit-1/testdrive/area-42/node-1/data.json
30;
31; ------------------------------------------
32
33
34[mqttkit-1.http-api-generic]
35enable = true
36
37type = application
38application = kotori.io.protocol.forwarder:boot
39
40realm = mqttkit-1
41source = http:/api/mqttkit-1/{address:.*}/{slot:(data|event)} [POST]
42target = mqtt:/mqttkit-1/{address}/{slot}.json
43
44
45; ------------------------------------------------
46; Notes about "source" and "target" parameters
47; ------------------------------------------------
48
49; Note that the "netloc" part (i.e. for specifying hostname/port)
50; in directives "source" and "target" are omitted from these uris.
51;
52; Kotori will only listen to the default HTTP port and forward
53; payloads to the default MQTT broker. Both are specified in the
54; main configuration file, usually "/etc/kotori/kotori.ini".
55;
56; However, this might change in the future to enable spinning
57; up HTTP listeners on arbitrary ports at runtime and to allow
58; publishing messages to different MQTT brokers.
Tip
Also have a look at HTTP for different ways to transmit telemetry data over HTTP.