Der

Kölner Dom

Eine Inspiration im Maßstab 1:50

Modellbau

Von

Sebastian Mikacs

Die Domtechnik

REST-API

Zur automatisierten Auswertung von Informationen über den Modellbau des Kölner Domes, steht eine freie API zur Verfügung. Mit dieser Programmierschnittstelle können die dynamischen Parameter der Anlage ausgelesen werden. Dazu zählen die Uhrzeit und Zeitzone am Standort des Modellbaus, ein aktuelles Bild des Livestreams, die Zustände von Brunnen, Glocken (Messingglocken und akustisch über Lautsprecher), Orgelmusik, Beleuchtung und vordefinierte bzw. automatisch ablaufende Programme. Diese Anwendungsschnittstelle basiert auf der REST-API Technologie und ist für jedermann zugänglich.

Voraussetzungen

Um die Schnittstelle verwenden zu können, benötigten Sie einen API-Schlüssel und Method-Secret, die wir Ihnen gerne zur Verfügung stellen. Wenden Sie sich hierzu bitte an [email protected]. Darüber hinaus wird ein Programm zum Senden und Verarbeiten von HTTP-Requests benötigt. Wir verwenden in dieser Anleitung cURL. Zusätzlich kann eine Einschränkung auf IP-Adresse und/oder URL vorgenommen werden. Senden Sie uns hierzu bitte bei Bedarf die notwendigen Informationen.

Daten

Sie können über diese Schnittstelle folgende Daten zum Modellbau des Kölner Domes auslesen:


Komponente Beschreibung Befehl Methode
Uhrzeit Aktuelles Datum, Uhrzeit und Zeitzone am Standort des Miniatur-Domes. time GET
Kamera Ein aktuelles Base64 kodiertes Bild des Livestreams. kamera 1 | image GET
Brunnen Status des Springbrunnens am Westportal des Miniatur-Domes. brunnen GET
Glockenspiel Status des Glockenspiels. audio 1 GET
Glockenspiel Aktiver Lautsprecher des Glockenspiels. audio 1 | speaker GET
Orgel Status und aktuelles Musikstück der Orgel. audio 2 GET
Hauptschiff 1 Status der oberen Beleuchtung des Langhauses und Querschiffs. licht 1 GET
Hauptschiff 2 Status der unteren Beleuchtung des Langhauses und Querschiffs. licht 2 GET
Straßenlaternen Status der Straßenlaternen um den Dom. licht 3 GET
Flutlichtanlage Status der Flutlichtanlage um den Dom. licht 4 GET
Bodenstrahler 1 Status der Bodenstrahlergruppe 1 zur direkten Beleuchtung des Domes. licht 5 GET
Bodenstrahler 2 Status der Bodenstrahlergruppe 2 zur indirekten Beleuchtung der Gartenanlage. licht 6 GET
Glocke 1A Status der Glocke A im Turm 1. glocke 1 GET
Glocke 1B Status der Glocke B im Turm 1. glocke 2 GET
Glocke 1C Status der Glocke C im Turm 1. glocke 3 GET
Glocke 2A Status der Glocke A im Turm 2. glocke 4 GET
Glocke 2B Status der Glocke B im Turm 2. glocke 5 GET
Glocke 2C Status der Glocke C im Turm 2. glocke 6 GET
Modus 1 Zustand des frei programmierbaren Modus 1. modus 1 GET
Modus 2 Zustand des frei programmierbaren Modus 2. modus 2 GET
Modus 3 Zustand des frei programmierbaren Modus 3. modus 3 GET
Modus 4 Zustand des frei programmierbaren Modus 4. modus 4 GET
Modus 5 Zustand des frei programmierbaren Modus 5. modus 5 GET
Modus 6 Zustand des frei programmierbaren Modus 6. modus 6 GET
Task Alle automatisierten Programme, welche durch den KDSM hinterlegt wurden. task all GET

Statuscodes

Zusätzlich zu den bereits bestehenden Standard HTTP-Statuscodes, sind hier die folgenden erweiterten applikationsspezifischen Statusmeldungen angeführt. Die Schnittstelle kann folgende Statusmeldungen zurückgeben:


Code Status Beschreibung
1xx - Erfolgreiche Meldungen.
2xx - Fehlerhafte Meldungen.
100 OK Der Request wurde erfolgreich ausgeführt und hat eine valide Antwort zurückgegeben.
200 GENERAL_ERROR Ein unbekannter Fehler ist während der Verarbeitung des Requests aufgetreten.
201 SERVICE_UNAVAILABLE Das Service steht momentan nicht zur Verfügung, bitte versuchen Sie es später erneut.
202 HTTP_TIMEOUT Es ist ein Timeout während der Verarbeitung des Requests aufgetreten.
203 CLIENT_UNAUTHORIZED Der Client konnte sich nicht gegen die Schnittstelle authentifizieren und/oder autorisieren.
204 IP_VALIDATION_FAILED Der angegebene Zugang ist auf IP-Adresse und/oder URL eingeschränkt. Die Validierung war jedoch nicht erfolgreich.
205 INSUFFICIENT_PERMISSION Die Berechtigungen des Zugangs reichen für die angeforderte Ressource nicht aus.
206 UKNOWN_COMMAND Der angeforderte Befehl ist ungültig oder existiert nicht.
207 METHOD_NOT_ALLOWED Die angegebene Methode und/oder Anfragentyp ist nicht erlaubt oder implementiert.
208 HOST_VALIDATION_FAILED Der angegebene Zugang ist auf IP-Adresse und/oder URL eingeschränkt. Die Validierung war jedoch nicht erfolgreich.

Beispiel

In diesem Beispiel lesen wir den Status und das aktuell laufende Musikstück der Orgel aus. Um das folgende Beispiel besser zu verstehen, gehen wir Schritt für Schritt näher auf jeden Parameter des Befehls cURL ein.


  • Aufrufen von cURL curl
    Im ersten Schritt wird der Befehl cURL aufgerufen. Beachten Sie, dass cURL standardmäßig unter Windows, macOS oder Linux-Distributionen nicht verfügbar ist. Es bedarf hierbei einer manuellen Installation des Programms.

  • HTTP-Methode --get
    Wir geben nun durch den Parameter "--get" die zu verwendende HTTP-Methode an. Welche Methode Sie verwenden müssen, sehen Sie in der Tabelle unter dem Abschnitt "Daten".

  • Autorisierung durch HTTP-Header --header "x-kdrtwp-get-secret: <METHOD_SECRET>"
    Die Autorisierung gegen die API erfolgt durch die Bekanntgabe des Method-Secrets im HTTP-Header. Da wir in diesem Beispiel die Methode "GET" verwenden, erweitern wir den Header um das Feld "x-kdrtwp-get-secret" und geben darin den jeweiligen Method-Secret an. Der Method-Secret ist ein statischer Schlüssel und muss pro HTTP-Methode angegeben werden.

  • Befehl --data-urlencode "command=audio 2"
    Über die API können unterschiedlichste Daten zum Miniatur-Dom ausgelesen werden. In diesem Beispiel lesen wir den Status der Orgel und das aktuell laufende Musikstück aus. Wir geben daher mit dem cURL-Parameter "--data-urlencode" den Befehl "audio 2" an. Eine Übersicht über weitere Befehle finden Sie in der Tabelle unter dem Abschnitt "Daten".

  • Authentifizierung und Bekanntgabe der API-URL https://api.derkoelnerdom.at/<API_KEY>
    Abschließend geben wir noch die URL der API und zur Authentifizierung gegen die Schnittstelle den entsprechenden API-Schlüssel bekannt.

Sie sehen unten angeführt den Befehl zum Auslesen des Zustandes der Orgel und das aktuell laufende Musikstück:


curl \
    --get \
    --header "x-kdrtwp-get-secret: <METHOD_SECRET>" \
    --data-urlencode "command=audio 2" \
    https://api.derkoelnerdom.at/<API_KEY>

                

Das Ergebnis der Anfrage wird in Form eines JSON-Objekts als Antwort zurückgegeben:


{
    "meta": {
        "health": {
            "kdsm": 1
        },
        "time": {
            "zone": "Europe/Vienna",
            "syn": "06 Jan 2021 14:55:30",
            "ack": "06 Jan 2021 14:55:30"
        },
        "status": {
            "name": "OK",
            "code": "100"
        },
        "request": {
            "syn": {
                "command": "audio 2"
            },
            "ack": {
                "data": [
                    "play",
                    "FFFF FFFF FFFF FFFF",
                    "Klaus Wallrath - Es führt drei König Gottes Hand"
                ]
            }
        }
    }
}
                

In der folgenden Tabelle werden die Details der Objektstruktur (Antwort) näher erläutert:


Name Pfad Datentyp Beschreibung
kdsm meta > health > kdsm Boolean Zustand, ob der "Kölner Dom Steuerung Manager" kurz KDSM verbunden (1) oder getrennt (0) ist.
zone meta > time > zone String Zeitzone am Standort des Kölner Miniatur-Domes.
syn meta > time > syn DateTime Datum und Uhrzeit des Requests (Anfrage).
ack meta > time > ack DateTime Datum und Uhrzeit des Response (Antwort).
name meta > status > name Enum Statustext der applikationsspezifischen Statuscodes.
code meta > status > code Integer Code (Return-Code) der applikationsspezifischen Statuscodes.
command meta > request > syn > command String Enthält den im Request angeforderten Befehl.
data meta > request > ack > data Array Besteht aus bis zu drei Elementen. Das erste Element ist der aktuelle Zustand der angeforderten Komponente (ok, on, off, play, stop). Das zweite der KDSCL-Befehl, dieser wird von der Zentralwarte (Domtechnik) und KDSM ausgewertet. Das letzte Element enthält weitere vorhandene Informationen (z. B. (String) Name des Orgel- oder Musikstücks, (Array) Geplante Programme).