Specifikace MQTT API
Zařízení TAPPER může komunikovat přes MQTT pomocí zpráv JSON.
Topic
Každý topic MQTT začíná na tapper/$id/, kde id je hardwarová adresa zařízení TAPPER.
Payload
TAPPER používá payloady ve formátu JSON.
Každý payload obsahuje časovou značku.
Události
API definuje pro TAPPER několik událostí.
| Topic | Payload |
|---|---|
tapper/$id/event/boot | {"timestamp": float} |
tapper/$id/event/tamper | {"timestamp": float, "state": "active" | "inactive"} |
tapper/$id/event/tag | {"timestamp": float, "id": str} |
TAPPER odesílá UID NFC tagu jako hexadecimální řetězec v pořadí big-endian.
Rozhraní
Pro komunikaci s uživatelem má TAPPER RGB LED a bzučák.
Obojí aktivujete požadavkem přes MQTT podle této specifikace.
Požadavek
Topic požadavku je tapper/$id/control/request.
Payload požadavku:
{
"timestamp": 1747951200,
"id": 1,
"output": {
"command": "activate"|"deactivate"|"pulse",
"duration": int
},
"visual": {
"state": "off" | "on/red" | "on/green" | "on/blue" | "on/yellow",
"pattern": "p1/red" | "p2/red" | "p3/red" | "p4/red" |
"p1/green" | "p2/green" | "p3/green" | "p4/green" |
"p1/blue" | "p2/blue" | "p3/blue" | "p4/blue" |
"p1/yellow" | "p2/yellow" | "p3/yellow" | "p4/yellow"
},
"acoustic": {
"pattern": "p1" | "p2" | "p3" | "p4"
}
}
Timestamp
Unixová časová značka požadavku; očekává se float nebo integer.
ID
ID požadavku; očekává se integer.
Output
Tato část ovládá výstup relé.
- Command může mít hodnotu
activate,deactivatenebopulse.- Příkaz
pulsevyžaduje i prvekduration(doba v sekundách jako integer).
- Příkaz
"output": {
"command": "activate"|"deactivate"|"pulse",
"duration": int
}
Relé přibude v hardwarové revizi r2.
Visual
Tato část ovládá LED na desce.
Může obsahovat buď prvek "state", nebo "pattern".
-
State může mít hodnotu
off, neboon/, za kterým následuje barvared/green/blue/yellow.
Příklad:on/red"visual": {"state": "off" | "on/red" | "on/green" | "on/blue" | "on/yellow",} -
Prvek
patternfunguje podobně:p1/,p2/,p3/nebop4/, za kterým následuje barvared/green/blue/yellow.
Příklad:p4/blueVzor Popis p1jedno dlouhé bliknutí p2dvě dlouhá bliknutí p3tři dlouhá bliknutí p4čtyři dlouhá bliknutí "visual": {"pattern": "p1/red" | "p2/red" | "p3/red" | "p4/red" |"p1/green" | "p2/green" | "p3/green" | "p4/green" |"p1/blue" | "p2/blue" | "p3/blue" | "p4/blue" |"p1/yellow" | "p2/yellow" | "p3/yellow" | "p4/yellow"}
Acoustic
Tato část ovládá bzučák.
Jediným prvkem je pattern, který může mít hodnotu p1, p2, p3 nebo p4.
| Vzor | Popis |
|---|---|
p1 | jedno dlouhé pípnutí |
p2 | dvě dlouhá pípnutí |
p3 | tři dlouhá pípnutí |
p4 | čtyři dlouhá pípnutí |
"acoustic": {
"pattern": "p1" | "p2" | "p3" | "p4"
}
Příklad
{
"timestamp": 1747951200,
"id": 1,
"output": {
"command": "pulse",
"duration": 2
},
"visual": {
"pattern": "p4/blue"
},
"acoustic": {
"pattern": "p1"
}
}
Odpověď
Topic pro odpověď je tapper/$id/control/response.
Odpověď může mít tyto payloady:
| Výsledek | Payload |
|---|---|
| Úspěch | {"timestamp": float, "id": int, "result": "success"} |
| Chyba | {"timestamp": float, "id": int, "result": "error", "error": str} |
Příklad
{
"timestamp": 1747951200,
"id": 1,
"result": "success"
}