Přeskočit na hlavní obsah

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í.

TopicPayload
tapper/$id/event/boot{"timestamp": float}
tapper/$id/event/tamper{"timestamp": float, "state": "active" | "inactive"}
tapper/$id/event/tag{"timestamp": float, "id": str}
Tagy

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, deactivate nebo pulse.
    • Příkaz pulse vyžaduje i prvek duration (doba v sekundách jako integer).
"output": {
"command": "activate"|"deactivate"|"pulse",
"duration": int
}
informace

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, nebo on/, za kterým následuje barva red/green/blue/yellow.
    Příklad: on/red

    "visual": {
    "state": "off" | "on/red" | "on/green" | "on/blue" | "on/yellow",
    }
  • Prvek pattern funguje podobně: p1/, p2/, p3/ nebo p4/, za kterým následuje barva red/green/blue/yellow.
    Příklad: p4/blue

    VzorPopis
    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.

VzorPopis
p1jedno dlouhé pípnutí
p2dvě dlouhá pípnutí
p3tř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ýsledekPayload
Ú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"
}