---
# System prepended metadata

title: Getting started

---

# 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 } }'
```