PHP Server

Überblick

Der PHP Server ist einer der beiden Hauptteile der Cloud, dieser Teil übernimmt die Kommunikation mit der Telemetrie-Box über einen TCP-Socket, sowie das Speichern der Daten in die Datenbank und die strukturelle Verwaltung der Datenbank, falls neue Geräte, Benutzer, oder Sensoren in das Gesamtsystem integriert werden.

Abbildung 1: Überblick über den Server

Daten einspeichern

Der Server wartet nach dem Starten auf auf seinem TCP-Socket auf eingehende Verbindungen. Sobald ein Client sich verbindet, wird überprüft ob der Client ein valider Nutzer des Services ist. Falls er dies ist, wird das Gerät von dem gesendet wird für diese Verbindung gespeichert, falls der Client nicht valid ist, wird die Verbindung sofort geschlossen und alle erhaltenen Daten verworfen.
Nachdem die Verbindung authentifiziert ist, werden die Daten aus den Datenpaketen ausgelesen und zu einen Datenbank-Eintrag zusammengesetzt. Die Datenpakete müssen dabei in einer definierten Struktur (Abbildung 2) formatiert sein, damit diese fehlerfrei ausgelesen werden können und es zu keinen Fehlinterpretationen kommt.

Abbildung 2: Datenformat der Pakete

Das Trennzeichen trennt dabei die einzelnen Messdatenpakete und steht jeweils am Anfang des Datenpakets. Als nächstes folgt die Nummer des Sensors, um Sensoren vom gleichen Typ identifizieren zu können. Danach der Identifikator des Sensors. Für Temperatursensoren zum Beispiel ‚T‘ oder für Beschleunigungssensoren ‚A‘ und so weiter. Danach folgt der Messwert des Sensors. Es ist möglich mehrere dieser Messdatenpakete hintereinander zu hängen und gemeinsam zu übertragen.


Datenbank

Überblick

Die Datenbank ist der zweite wichtige Teil der Cloud, hier werden alle Daten die von der Telemetrie-Box an den PHP Server gesendet werden gesammelt und verwaltet. Außerdem werden die Anfragen vom PHP-Controller und der Web-View abgearbeitet und die benötigten Daten ausgegeben.


Datenstruktur

Die Struktur der Datenbank entspricht der Abbildung 3 und besteht aus drei wichtigen Komponenten. Die erst wichtige Komponente ist die „users“ Tabelle, in welcher alle Benutzer des Services eingetragen werden. Der zweite Teil ist die „usersToDevices“ Tabelle, welche einen Datensatz bestehend aus Benutzer-ID und zugehöriger Geräte-ID beinhaltet. Mit diesem System ist es möglich über den Benutzernamen die Benutzer-ID (userID) abzufragen. Durch diese ID ist es dann möglich alle zugehörigen Geräte-IDs auszulesen und über diese auf den dritten wichtigen Teil der Datenbank zuzugrgeifen: die Werttabellen der einzelnen Geräte. Hier sind alle Nutzwerte des Geräts gespeichert.

Abbildung 3: Struktur der Datenbank

Falls ein Benutzer mehrere Geräte besitzt, werden in der „usersToDevices“ Tabelle dynamisch Datensätze mit seiner Benutzer-ID und der jeweiligen Geräte-ID eingefügt und die passende Datentabelle erstellt, in die später die von der Telemetrie-Box gesendeten Werte gesammelt werden.
Die einzelnen Datenwertspalten in den Tabellen werden dynamisch ergänzt, falls in das Telemetrie-Box-System neue Sensoren integriert werden.


Daten auslesen

Das Auslesen der Daten aus der Datenbank erfolgt über den PHP-Controller, der als Interface zur Datenbank dient, da die WebView in unserem Fall nicht alleine in der Lage ist die Daten aus der Datenbank auszulesen. Deswegen werden die benötigten Informationen zum Auslesen der Daten an den Controller übergeben, welcher dann die Anfrage an die SQL-Datenbank durchführt und die Rückgabedaten in das JSON Format übersetzt und dann an den Aufrufen zurückgibt, welcher in unserem Fall die WebView mittels eines AJAX Calls ist, die diesen aus einer JavaScript-Datei absetzt.

Abbildung 4: Auslesen von Daten aus der Datenbank