Specifikace MQTT API
Zařízení TAPPER může komunikovat přes MQTT pomocí JSON zpráv.
Topic
Každý MQTT Topic začíná 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
TAPPER má v API definováno 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í
TAPPER má RGB LED a bzučák pro interakci s uživatelem.
Ty lze aktivovat požadavkem odeslaným 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
Toto je unixová časová značka požadavku, očekává se float/integer.
ID
Toto je ID požadavku, očekává se integer.
Output
Tato sekce se týká reléového výstupu.
- Command může být:
activate,deactivatenebopulse- Příkaz
pulsevyžaduje také nastavení prvkuduration(v sekundách), očekává se integer.
- Příkaz
"output": {
"command": "activate"|"deactivate"|"pulse",
"duration": int
}
Relé přichází s hardwarem r2.
Visual
Tato sekce se týká LED na desce.
Může obsahovat buď prvek state", nebo "pattern.
-
State může mít následující hodnoty:
off, neboon/s následující barvoured/green/blue/yellow.
Příklad:on/red"visual": {"state": "off" | "on/red" | "on/green" | "on/blue" | "on/yellow",} -
Prvek
patternje velmi podobný, s možnostmip1/,p2/,p3/nebop4/s následující barvoured/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 sekce se týká bzučáku.
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.
Payloady odpovědi jsou:
| 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"
}