Fehleranalyse bei der Entwicklung mit HomeServer URL-Endpoints
Inhalt
1.
Einleitung
2.
Hinweise zum Client-Verhalten
3.
Allgemeine Hinweise
4.
Hinweise zum Einsatz der URL-Endpoints JavaScript API

## 1.Einleitung

In diesem Artikel werden Hinweise gegeben, die das Debuggen und die Fehleranalyse bei der Entwicklung mit der HomeServer URL-Endpoints Schnittstelle ermöglichen.

## 2.Hinweise zum Client-Verhalten

Beim Senden von Daten, insbesondere bei großen Datenmengen, ist Folgendes zu Beachten:
Der Client ist selbst verantwortlich für das Beantworten der Pings vom HS gemäß dem Websocketprotokoll!
Beantwortet der Client den Ping des HS nicht innerhalb von 10 Sekunden, schließt der HS die Websocketverbindung!

## 3.Allgemeine Hinweise

- Statuscodes auswerten:
  Jede Nachricht des Clients über HTTP und WebSocket wird vom HomeServer/FacilityServer beantwortet. Wird eine Nachricht nicht beantwortet, liegt wahrscheinlich ein grundlegendes Problem mit der Kommunikation vor.
  Die Antwort vom HS/FS beinhaltet einen Statuscode. Dieser gibt Auskunft darüber, ob der HS/FS die Nachricht des Clients auswerten und bearbeiten kann. In diesem Fall ist der Statuscode 0. Ist dies nicht der Fall, gibt des HS/FS einen Statuscode zurück der ungleich 0 ist. Eine Auflistung der möglichen Statuscodes mit ihrer jeweiligen Bedeutung befindet sich in der Dokumentation HomeServer URL-Endpoints.
  Eine Nachricht an den HS/FS kann erst dann als zugestellt betrachtet werden, wenn dieser mit Statuscode 0 antwortet. Dies bedeutet allerdings nicht, dass die in der Nachricht eventuell angegebene Methode (z.B. ein Kommunikationsobjekt auf einen Wert setzen oder eine Sequenz starten) bereits vom HS/FS ausgeführt wurde.
- Informationen auf der Debug-Seite:
  - Bereich Exceptions:
    - Liefert der HS/FS einen Statuscode ungleich 0 an den Client zurück, werden hier eine oder auch mehrere Exceptions aufgelistet, die einen Hinweis auf den Fehler in der Nachricht des Clients liefern können.
  - Bereich WS:
    - In diesem Bereich werden verschiedene statistische Informationen zur WebSocket Schnittstelle des HS/FS angeboten. Es werden u.a. die derzeit aktiven Verbindungen angezeigt.

## 4.Hinweise zum Einsatz der URL-Endpoints JavaScript API

- Debugger des Browsers nutzen:
  In fast allen modernen Browsern stehen JavaScript Debugger entweder von Haus aus (Chrome und Internet Explorer) oder als Plugin (Firebug für Firefox und Safari) zur Verfügung.
- In den Callback-Methoden den Fehlerparameter auswerten:
  Wird einer Methode der API ein Callback übergeben, so weist dieses in seiner Signatur stets einen Fehlerparameter (err) auf. Ist dieser beim Aufruf der Callback-Methode gesetzt (also nicht undefined), muss im Code entsprechend darauf reagiert werden.
- Beispiel:

  `var connectionOptions = {"host": homeserverIp, "port": homeserverPort}; var homeServerConnection = HomeServerConnector.createConnection(name, password, connectionOptions); var camArchCorridor = homeServerConnection.getCameraArchive('SC@camArchCorridor'); camArchCorridor.getPicture(userPictureId, function(err, pictureId, dataUrl){ if(err){ console.error("camArchCorridor.getPicture() failed!", err); showErrorToUser("Kamerabild konnte nicht abgerufen werden.") return; } showImage(pictureId, dataUrl); });`

- Quellcode der URL-Endpoints JavaScript API verwenden:
  Um Fehler auszuwerten die innerhalb der API auftreten oder die Abläufe der API nachzuvollziehen bzw. zu debuggen, kann statt der für den Produktiveinsatz optimierten Version hs.min.js der Quellcode der API verwendet/eingebunden werden. Die Datei hs.src.js befindet sich im Verzeichnis URL-Endpoints\JS\API\src.