# Getting started ## Inhaltsverzeichnis - [Quickstart](#quickstart) - [Selbst Beispieldaten erzeugen](#selbst-beispieldaten-erzeugen) - [Selbst MQTT-Messages erzeugen](#selbst-mqtt-messages-erzeugen) ## Quickstart #### Voraussetzungen Um die Quickstart-Anleitung befolgen zu können, ist erforderlich: - [docker-compose](https://docs.docker.com/compose/install) - [mongo shell](https://docs.mongodb.com/manual/mongo) (oder überspringe Schritt 2 und erzeuge selbst Beispieldaten) - [mqtt-cli](https://github.com/hivemq/mqtt-cli) (oder überspringe Schritt 4 und erzeuge selbst MQTT-Messages) #### 1. Docker-compose Starte docker-compose unter `compose/`: ```bash docker-compose up ``` #### 2. Beispieldaten generieren `sampledata/generate.sh` erzeugt Kaffeemaschinen zum testen. Die [mongo shell](https://docs.mongodb.com/manual/mongo) ist erforderlich. #### 3. Webinterface öffnen Das Webinterface ist unter [localhost:8080](http://localhost:8080) erreichbar. #### 4. Maschinen simulieren `sampledata/mqtt/temperature.sh <device-id> <temperature>` emittiert eine MQTT-Message, um die Temperatur einer Kaffeemaschine zu aktualisieren. Das Tool [mqtt-cli](https://github.com/hivemq/mqtt-cli) ist erforderlich. Folgender Befehl sorgt für das Auslösen einer Warnung (110 Grad überschreitet den Überhitzungs-Threshold): ```bash sampledata/mqtt/temperature.sh 1 110 ``` Im Webinterface wird jetzt automatisch eine Maschine mit einer Warnung angezeigt. --- ## Selbst Beispieldaten erzeugen Erzeuge in der Collection `devices` Kaffeemachinen mit folgendem Format: ```json "_id": "1", "_class": "de.smartsquare.smartbot.backend.persistence.entity.DeviceEntity", "exceededThreshold": false, "type": "coffeemachine", "values": [ { "_id": "1", "thresholds": [ { "_id": "1", "prevStatus": false } ] } ] ``` ## Selbst MQTT-Messages erzeugen Werte eines Maschinen-Zustands sind durch MQTT-Messages mit folgender Payload änderbar: ```json { "topic": "topic", "device": "1", "source": "1", "type": "Temperature", "value": { "value": 110 } } ``` ### MQTTTestDataGenerator Starte den [MQTTTestDataGenerator](MQTTTestDataGenerator/README.md) unter `MQTTTestDataGenerator/`. Beispielanfrage per [Postman](https://www.postman.com/), die die Temperatur der Maschine mit id 1 zehn Mal aktualisiert: ```http http://127.0.0.1:8081/generate?host=127.0.0.1&port=1883&numDevices=1&msgRate=200&rateVariation=3000&numInt=10 ``` ```json { "message": "(i) => \"{ \\\"topic\\\": \\\"topic\\\", \\\"device\\\": \\\"1\\\", \\\"source\\\": \\\"1\\\", \\\"type\\\": \\\"Temperature\\\", \\\"value\\\": { \\\"value\\\": \" + 10 + i + \" } }\"", "topic": "() => 'topic'", "qos": "() => 0" } ``` ### CLI-Tool Starte die MQTT-CLI: ```bash mqtt shell ``` Verbinde dich mit dem Broker (default auf `localhost:1883`): ```bash con -V 3 ``` Beispiel-MQTT-Message mit der Payload, die die Temperatur der Maschine mit der id 1 auf 110 setzt: ```bash pub --topic topic --message '{ "topic": "topic", "device": "1", "source": "1", "type": "Temperature", "value": { "value": 110 } }' ```