IoT 2020
Dash Button

Informationen

Das Projekt "Dash Button", bzw. "Service Button", entstand im Sommersemester 2020 im Rahmen des Moduls IoT (Internet of Things) an der TH Köln im Studiengang Medieninformatik.

Szenario

In vielen Unternehmen, welche sich als "Smart" bezeichnen, sei es die "Smart Factory" oder der "Smart Retail", finden oft noch manuelle Eingriffe oder Interaktionen statt. Oft gibt es Arbeitsplätze, welche durch eine Digitaliserung profiteren würden, für welches es sich aber nicht Lohnt einen Computer oder ein Tablet/Smartphone anzuschaffen, da diese Geräte mit den auszuführenden Aktionen deutlich unterfordert wären.

Dies könnten zum Beispiel Arbeitsplätze bei einem Automobilhersteller sein, welche auf Knopfdruck neue Montageteile ordern, oder ein Arbeitsplatz im Schichtbetrieb, bei welchem der Mitarbeiter regelmäßig Kontakt zu seinem Schichtleiter aufnehmen muss, um eine Frage zu stellen oder Ihm mitzuteilen, dass er mit seiner Aufgabe fertig ist.

Diese Prozesse laufen heutzutage oft noch analog ab, sodass der Mitarbeiter im Schichtbetrieb beispielsweise 10 Minuten auf den Schichtleiter warten muss, anstatt das dieser direkt über das Anliegen seiner Mitarbeiters informiert wird.

Projektziel

Somit galt es solche analogen Prozesse mit Hilfe eines IoT-Devices zu digitaliseren. Der Projektgeber, die Deutsche Telekom, hat für dieses Vorhaben einen Service Button, ähnlich dem Amazon Dash Button, vorgeschlagen. Jedoch war, anders als bei dem Amazon Dash Button, eine zusätzliche bestätigung vorgesehen, um ein versehentliches Auslösen einer Aktion zu vermeiden.

Features

Dash Button

  • Unterstützung von 2 Modes
  • OTA Setup von Mitarbeiter Nummer
  • OTA Update für Mode
  • OTA Update für Produkt/Aktionsliste
  • Auswahl von Produkt/Aktion per Gestensteuerung
  • Wahl der Stückzahl per Encoder drehen
  • Bestellung/Aktionsaufruf per Buttonklick mit Bestätigung
  • Auto Deep Sleep für Akkubetrieb
  • Reset für Zuweisung neuer MitarbeiterID

Dashboard

  • Wechsel zwischen Bestell- und Aktionsmodus
  • Übersicht aller Bestellungen/Aktionen
  • Bestellungen/Aktionen werden Mitarbeitern zugeordnet
  • Dismiss Bestellung/Aktion wenn erledigt
  • Verwalten von möglichen Produkten/Aktionen
  • Einrichten von neuen Geräten
  • Zuordnung von Mitarbeiter Nummer und Name zu Gerät

Demo

Hardware

Software

Backend

Frontend

Installation

Allgemeines Setup

  1. Klone das GitHub Repository: https://github.com/cd-Roid/ss20-iot-dash-button und wechsle in den Ordner ss20-iot-dash-button

    CMD

    git clone https://github.com/cd-Roid/ss20-iot-dash-button.git

    cd ss20-iot-dash-button

Setup des Microcontrollers

  1. Installiere PlatformIO für Visual Studio Code um mit dem ESP32 zu interagieren

  2. Navigiere zum Ordner /esp32-IoT-Button und öffne Ihn in VS Code

    CMD

    cd esp32-IoT-Button && code .

  3. Erstelle im Ordner /src die Datei /credentials.h

    /esp32-IoT-Button

    esp32-IoT-Button/
    ├── src/
    │ ├── main.cpp
    │ └── credentials.h

  4. Fülle die Datei /credentials.h mit deinen WiFi Zugangsdaten, deinem MQTT Broker und der Basis Topic (zum Beispiel die Abteilung oder das Unternehmen).

    Eine Liste von öffentlichen MQTT Brokern findest du hier: https://moxd.io/2015/10/17/public-mqtt-brokers/

    credentials.h

    const char *ssid = "Network Name";
    const char *pass = "Network Password";
    const char *broker = "hivemq.dock.moxd.io";
    String baseTopic = "BasisTopic";

  5. Installiere die Libraries PubSubClient, ArduinoJSON, Gesture PAJ7620 und Grove - LCD RGB Backlight

  6. Öffne im Tab Libraries von PlatformIO den Ordner für die Library PubSubClient mit einem Klick auf Reveal

  7. Navigiere zum Ordner /PubSubClient_ID89 und öffne den Ordner /src

  8. Erhöhe nun in der Datei PubSubClient.h den Wert MQTT_MAX_PACKET_SIZE auf 2048

    /PubSubClient_ID89/src/PubSubClient.h

    #define MQTT_MAX_PACKET_SIZE 2048

  9. Verbinde alle Komponenten folgendermaße mit deinem ESP32 und schließe Ihn dann an deinen Computer an

  10. Spiele den Code nun mit Hilfe von PlatformIO auf den ESP32

    Nach dem Upload ist der ESP32 einsatzbereit und wartet darauf mittels des Dashboards eingerichtet zu werden

Setup des Backends

  1. Navigiere zum Ordner /backend und öffne Ihn in VS Code

    CMD

    cd backend && code .

  2. Erstelle im die Datei .env

    /backend

    backend/
    └─ .env

  3. Fülle die Datei .env mit Zugangsdaten zu einer mongoDB, dem Broker und deiner Basis Topic.

    Der Broker und die Topic müssen die selben sein, wie auf dem ESP32.

    .env

    MONGODB_CONNECTION = "Link zur MongoDB"
    MQTT_BROKER = hivemq.dock.moxd.io
    BASETOPIC = "BasisTopic"

  4. Installiere alle benötigten Libraries mit npm i

    CMD

    npm i

  5. Starte das backend mit npm run dev

    CMD

    npm run dev

Setup des Frontends

  1. Navigiere zum Ordner /frontend und öffne Ihn in VS Code

    CMD

    cd frontend && code .

  2. Installiere alle benötigten Libraries mit npm i

    CMD

    npm i

  3. Starte das frontend mit npm run serve

    CMD

    npm run serve

    Das Dashboard ist nun unter http://localhost:8080 erreichbar