Q-loud ist- eine einfache zu verwendende und qualitativ hochwertige IoT Cloud, aus der wir mit einem Client die Daten abfragen und analysieren wollen. Im Video unten sehen wir eine Maschine von der Q-loud als Beispiel aus dem Produktionsumfeld. Zwei Magazine in der Maschine sorgen dafür, dass ausreichend Material für die Produktion der Würfel zur Verfügung steht. Aus zwei Materialien, die sich in der Farbe und in der chemischen Zusammensetzung unterscheiden, wird ein Würfel produziert. Die Magazine sind unsortiert mit den verschiedenen Materialien gefüllt, die nach einander in die Produktion gelangen. Die Aufgabe der Maschine ist, das Material zu prüfen und ggf. auszusortieren, wenn es für das Voreingestellte Endprodukt nicht benötigt wird.

Das Video zeigt deutlich wie die Sensoren das Material erfassen, welches dazu führt, dass sich die Zustände der Maschine mehrmals pro Sekunde ändern. Die Zustände werden in Echtzeit in der IoT Cloud in einem JSON Format bereitgestellt.

Das Datenmodell für die Industriemaschine hat diese JSON Struktur:

[code language=“java“]
„data“: {
“ 1487165498220 „: [0, 0, 1, 23, 1, 2, 7, 81, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 12, 25]
}
[/code]

Wie man die Daten der Industriemaschine abfragt, ist in der Q-loud REST API Dokumentation übersichtlich und mit Beispielen beschrieben.
Um die Live -Zustände der Maschine in Echtzeit abzufragen, erstellen wir zuerst eine gültige Session, indem wir einen POST auf die Session-URL mit unseren LogIn Daten im Body ausführen:

[code language=“java“]http://api.cospace.de/api/session“[/code]

Die „response“ enthält den Server und die SID im JSON Format, mit denen wir eine sichere Kommunikation mit dem Q-loud Server herstellen können:

[code language=“java“]
{
„sid“: „boajw93gwservfZdbfdGa84Afib“,
„did“: „iaEiawdfsa4aobpEPRkva98“,
„server“: „https://api43.service.de:1234“,
„status“: „ok“,
„auth“: „true“
}
[/code]

Nachdem wir erfolgreich einen Server und eine SID zugewiesen bekommen haben, verwenden wir diese um die Kommunikation zwischen dem Client und der Q-loud für einen gewünschten Zeitraum aufzubauen. Der Zeitraum für die Live „“Kommunikation kann bis zu zehn Stunden abonniert werden. Nach Ablauf der Abonnementszeit muss das Abonnement der Maschine aktualisieren werden, um weitere Live -Daten abfragen zu können. Das Abonnieren erfolgt mit der UUID der Industriemaschine die von der Q-loud mitgeteilt wird.
Wir führen ein GET mit den Parametern Session Server, Session SID, Maschinen UUID und dem Timeout folgendermaßen aus:

[code language=“java“]http://api43.service.de:1234/api/sensor/uuid/event?timeout=36000&sid=boajw93bawgfbfZdbfdGa84Afib[/code]
Im Header geben wir die Session SID mit

[code language=“java“]conn.setRequestProperty(„Authorization“, „Bearer “ +sid);[/code]

Wenn das Abonnieren erfolgreich gewesen ist, erhalten wir eine leere Response:

[code language=“java“] „{}“ [/code]
Nach dem wir jetzt die Maschine abonniert haben, können wir über das Longpolling die Live-Daten abfragen. Für das Abfragen der Daten sind die Parameter Longpolling -Timeout und der Next -Wert von Bedeutung.
Mit dem Timeout geben wir an, wie lange der Client auf die Antwort von der IoT Cloud warten soll. Der Timeout kann von 1-300 Sekunden gesetzt werden. Ist der Timer abgelaufen und wir haben keinen Wert von der Cloud bekommen, müssen wir sicherstellen das der Client diese Abfrage wiederholt. Auch beim Empfang einer Nachricht innerhalb der Zeit, wird die Abfrage abgebrochen und muss für den Empfang weiterer Nachrichten neu aufgebaut werden.
Die Nachrichten sind mit dem Next -Wert versehen. Dieser Wert ist wie eine eindeutige Nachrichten Id in der abonnierten Session. Der Next -Wert ist eine Id der nächsten Nachricht, ergibt sich also aus Next -Wert-1 der aktuell empfangenen Nachricht. Der Wert wird immer von der Cloud mitgesendet und um eins erhöht.
Die JSON Struktur der Nachricht:

[code language=“java“]
{
„next“:1,
„event“:[],
„status“:“ok“
}
[/code]
Der Inhalt ist der Next -Wert, Event und Status. Next gibt uns den Wert der nächsten Nachricht an, Event enthält den Payload der Industriemaschine und mit Status: ok, wissen wir, dass unsere Session aktiv ist und wir berechtigt sind, Daten abzufragen.
Um die Nachricht zu erhalten, setzen wir einen GET Request ab mit der SID, dem next-Wert, dem Timeout und zu Authentifizierung geben wir wie im Header wie oben beschrieben die SID mit:

[code language=“java“] http://api43.service.de:1234/api/event?sid= oajw93bawjckbja2ZdbfdGa8&next=1&timeout=300[/code]
Sollten wir

[code language=“java“]“status“:“no-session“[/code]

bekommen, ist die Session nicht mehr gültig und muss neu angefordert werden.
Um den GET Request mit dem neuen Next -Wert und einem neuen Timeout wiederholt auszuführen, führen wir die Abfrage in einer „While Schleife“ aus.
Mit parsen der Response -Nachricht erhalten wir den Payload der Industriemaschine. Der Payload mit den Zuständen der Maschine ist das Json-Object „data“, welches im Json -Array event[] enthalten ist.
Auf das Response Json-Object führen wir folgendes:

[code language=“java“]JSONArray jsonEvent = responseJsonObject.getJSONArray(„event“);[/code]
mit

[code language=“java“]JSONObject jsonMachineData = jsonEvent .getJSONObject(„data“);[/code]
erhalten wir die Live -Zustände der Industriemaschine:

[code language=“java“]
„data“: {“ 1487165498220 „: [0, 0, 1, 23, 1, 2, 7, 81, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 12, 25]}
[/code]

Die Zustände in einem JSON Format stehen uns nun zu Verfügung und wir können mit dem Analysieren der Daten fortfahren. Wir filtern die Daten für ein Echtzeit Produktions „“Dashboard, welches jederzeit online abgerufen werden kann. Das Dashboard, wie unten im Bild, visualisiert den aktuellen Zustand der Maschine, sowie gibt in Echtzeit Auskunft über die produzierte Menge der Produkte.

produktionDashbaord

Desweiteren werden die Daten in einer Datenbank abgelegt, die dann jederzeit z.B. für einen Geschäftsbericht mit einem BI Tool wie Tableau, Qlik oder PowerBI analysiert werden können.

Alle Beiträge von Otto Fitz

Schreibe einen Kommentar