summaryrefslogtreecommitdiff
path: root/doc/api/future.md
blob: 9090ab6da903eb1bc623c8f3721297b3898be09f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# UART Shell

This is based on the Zephyr shell. It is not part of the public API as defined
by semantic versioning and has no stability guarantees. It is a pure
development and debugging tool.

# IP

The device will automatically set its IP configuration based on DHCPv4 and IPv6
SLAAC.

# mDNS

The device will find the following services based on mDNS:

- MQTT broker
- syslog server

# MQTT

All topics have the following structure:

```
<prefix>/<api-version>/<api-path>
```

The `<prefix>` is selected by the user. It is a system setting to make it
possible to move the device API to a specific location in the topic namespace
of a broker.

The `<api-version>` is the Semantic Versioning string like `v1.2.3` of the
currently running firmware. It is recommended to use a `+` single-level
wildcard here for subscriptions. On each message the version string can be
parsed from this location to check if the message is compatible with the
receiving entity.

The `<api-path>` is fixed by the firmware implementation. This is the only part
noted down explicitly in the following MQTT API documentation.

These are the topics to which the device publishes. Users should not publish to
these and only subscribe.

- `blind/closure` QoS 1 retained (`0`, `1`, ... `100`)
- `blind/motion` QoS 1 retained (`up`, `down`, `stopped`)
- `contact/state` QoS 1 retained (`open`, `closed`)
- `heartbeat` QoS 0 not retained (period in milliseconds, "on-time" in milliseconds)
- `update/required` QoS 2 not retained (`true`, `false`)

These are the topics the device subscribes to. Users can publish there and
optionally subscribe to them to see messages from other users if required. The
annotations according Quality of Service (QoS) and the retained flag should be
followed.

- `blind/closure/set` QoS 2 not retained (`0`, `1`, ... `100`)
- `blind/motion/set` QoS 2 not retained (`up`, `down`, `stopped`)
- `update/trigger` QoS 2 not retained