diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..d6bf7dc89040b630c18ac3b09a401a717d03025b --- /dev/null +++ b/README.md @@ -0,0 +1,125 @@ +# Dokumentation +## Einleitung +Das Boarder-Gateway stellt zwei CoAP Ressourcen zur Verfügung. Die Ressource **/register** wird dabei von CoAP Clients verwendet, um sich am BG zu registrieren. +Im einfachsten Fall wählt der CoAP Client selbst eine ID, um den Kommunikationsoverhead als auch den Programmieraufwand auf clientseitig zu minimieren. Hierbei ist +selbstverständlich wichtig, dass die verschiedenen CoAP Client Gruppen miteinander kommunizieren, um eine doppelte Belegung der Registrations-ID auszuschließen. +Bei der Registrierung eines CoAP Clients muss neben der ID eine Liste von Parameternamen mitgesendet werden, bspw. *["Temperatur vorne", "Temperatur hinten", "Luftfeuchtigkeit"]*. + + +Nach der Registrierung kann ein CoAP Client die Ressource **/data** dafür verwenden, um regelmäßig Werte den entsprechend registrierten Parameter zuzuweisen. Dazu muss +der CoAP Client ausschließlich seine ID angeben und die Werte in der Reihenfolge übersenden, in welcher die Parameter registriert wurden. + + +Alle Ressourcen erwarten als Payload JSON formatierte Strings. + +## Schnittstelle +### Registrierung +``` +coap://<adresse>:5683/register +``` + +#### POST +##### Schema +``` +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "title": "Register Schema", + "description": "Die Ressource /register erwartet ein JSON via POST im folgenden Format", + "properties": { + "name": { + "type": "string", + "title": "Name des Services/Geräts", + "description": "Dies ist der Name des entsprechenden Dienstes oder Geräts, der im Dashboard angezeigt wird." + }, + "id": { + "type": "integer", + "title": "Registrierungs ID", + "description": "Unter dieser ID wird das Gerät/Dienst registiert. Entsprechend später gesendete Werte, die im Dashboard angezeigt werden sollen, müssen sich auf diese ID beziehen." + }, + "parameter": { + "type": "array", + "title": "Parameter Beschreibung", + "description": "In diesem Array werden die später gesendeten Werte beschrieben. Die Reihenfolge bei der Registrierung muss mit der Reihenfolge der gesendeten Werte übereinstimmen", + "items": { + "type": "string" + } + } + }, + "required": [ + "name", + "id", + "parameter" + ] +} +``` +##### Beispiel +``` +{ + "name": "Smart Environment", + "id" : 1, + "parameter" : [ + "Temp-Sensor 1", + "Temp-Sensor2", + "Irgendein-Anderer-Wert" + ] +} +``` +##### Response Codes +``` +2.01 = Registrierung erfolgreich +4.00 = Anfrage konnte nicht verarbeitet werden (JSON fehlerhaft?) +4.04 = Ressource nicht bekannt +4.05 = Methode nicht erlaubt +5.00 = Server- / Datenbankfehler +``` + +### Datenübertragung +``` +coap://<adresse>:5683/data +``` +#### PUT +##### Schema +``` +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "title": "Data schema.", + "description": "Schema zur Datenübertragung, z.B. von Messwerten", + "properties": { + "id": { + "type": "integer", + "title": "Registrierungs ID", + "description": "ID des registrierten Geräts/Dienst, für den Daten übertragen werden sollen." + }, + "values": { + "type": "array", + "title": "Parameterwerte", + "description": "Parameterwerte in derselben Reihenfolge, wie die Parameter registriert wurden.", + "items": { + "type": "string" + } + } + }, + "required": [ + "id", + "values" + ] +} +``` +##### Beispiel +``` +{ + "id" : "1", + "values" : ["21°C","37°C","4.13 km/h"] +} +``` +##### Response Codes +``` +2.04 = Werte gespeichert +4.00 = Anfrage konnte nicht verarbeitet werden (JSON fehlerhaft?) +4.01 = ID nicht registriert +4.04 = Ressource nicht bekannt +4.05 = Methode nicht erlaubt +5.00 = Server- / Datenbankfehler +``` \ No newline at end of file