Das Nachrichtenzentrum ist der zentraler Kommunikationsserver von Spectre. Es gibt zwei Schnittstellen, mit denen das Nachrichtenzentrum kommunizieren kann: HTTP/REST und MQTT.
Übersicht
REST
Das Nachrichtenzentrum implementiert einen HTTP Server, über den die REST Endpoints angesteuert werden können. Der HTTP Server wurde mit QHTTPEngine[2] entwickelt. Die implementierten Endpoints dienen zum Lesen und Modifizieren der Daten in den Datenbanken.
Beispiel eines Enpoints der OpenAPI Spezifikation
/spies:
get:
summary: Get all spies
operationId: getSpies
parameters:
- in: query
name: name
description: Name of the spy
schema:
type: string
- in: query
name: mac
description: Mac address of the spy
schema:
type: string
pattern: '^[0-9A-F]{2}(:[0-9A-F]{2}){5}$|^[0-9a-f]{2}(:[0-9a-f]{2}){5}$'
responses:
'200':
description: Returns a list of all spies
content:
application/json:
schema:
$ref: '#/components/schemas/SpyList'
default:
$ref: '#/components/responses/Error'
MQTT
Der MQTT Client des Nachrichtenzentrums wurde mithilfe von Qt MQTT entwickelt. Im Gegensatz zu HTTP ist über MQTT eine bidirektionale Kommunikation möglich. Somit können damit folgende Punkte umgesetzt werden, die über die REST API nicht (sinnvoll) möglich wären:
- Benachrichtigung über eine neue Mission an die Spione
- Heartbeats der Spione an den Server
- Live-Missionen