Prof. J. Walter - Informationstechnik, Mikrocomputertechnik, Digitale Medien Ausgewählte Lösung
Hochschule Karlsruhe Logo Energy Efficient Microcontroller
8x8-MQTT
Wintersemester 2020
Davin Farrell Lukito (75420)
Muhammad Abiyyu Mufti Hanif (67050)

Ausgewählte Lösung

Endergebnis

In untenstehenden Link Video ist das Ergebnis unsere Projekt mit der Erklärung, wie man die 16 8x8-LED-Moduls durch die Website einstellen und spielen kann:

https://www.youtube.com/watch?v=5G5Kvf2i_dM

8x8 LEDs Endergebnis - Gruppe 8x8-MQTT (hamu1013 luda1013)

Einrichtung und Konfiguration des MQTT-Brokers am PC


Bei dieser Projekt wird die Mosquitto v. 1.6.12a verwendet und auf den Rechner 15  im Raum Li-041 installiert. Nach der Installation muss die config-datei noch eingestellt werden, weil bei dieser Projekt es sich auch um die Datenübertragung durch Internet oder Website handelt. Das heißt, ein zusätzliches Kommunikationsprotokoll zur Webseite/ Internet nämlich Websocket muss in Config-Datei der Mosquitto hinzugefügt werden.

mqtt-config

Die Config-Datei befindet sich unter dem Ordner "Program Files" oder unter einem beliebigen Ordner, wo das Programm installiert wurde.
Mithilfe Notepad++ lässt sich die Config-Datei leicht einstellen. Wie oben schon erwähnt wird, dass wegen der Website-Anwendung eine die Websocket zu Config-datei hinzugefügt werden. Websocket ermöglicht die Übertragung zwischen MQTT und Webbrowser oder Webseite. Websocket seblst ist ein (Netzwerk-)Kommunikationsprotokoll basierend auf TCP (Transmission Control Protocoll).

Quelle: http://www.steves-internet-guide.com/mqtt-websockets/

Die Abbildung oben stellt den Grund dar warum Websocket benötigt wird. Websocket ist wie den Briefumschlag oder die Verpackung. Und ohne Zusatzkonfiguration der mqtt-config-Datei kann der Umschlag nicht geöffnet und die Inhalt nicht gelesen werden. Das heißt, die MQTT-Nachricht oder Befehle wird nicht durchgeführt.

Zu der Config-Datei sind drei Zusatzkomponente hinzugefügt; sie sind Port, Protocol und Listener. Laut Mosquito-Webseite ist 8080 der Port für MQTT durch Websockets (unverschlüsselt). Zusatzprotokoll ist das Websockets und 1883 als Listener. 1883 ist der Port für MQTT (unverschlüsselt). Der Port 1883 sind zuständig für die ESPs. Nach der Einstellung wird die Dienste auf Rechner aus und wieder angeschaltet, damit die neue Konfiguration bei Asuführung der Mosquitto als lokaler MQTT-Broker wirkt.

mqtt_config_websockets
mqtt_config_8080
mqtt_config_1883

Bei der Probe wurde aufgefallen dass nach einiger Tage die IPv4 Adresse vom Rechner sich geändert hat. Deswegen wird zum Test die IPv4-Adresse eigener Rechner und des Rechner 15 im Raum Li-041 festgestellt. Ansonsten bei der Veränderung der IPv4-Adresse muss die neue Adresse in jedes Skript des ESP angepasst werden.

Einrichtung MQTT-Verbindung am ES32 Microcontroller

Für die Behandlung von WIFI- und MQTT-Vebindungen wird die EspMQTTClient Bibliothek verwendet. Dieser Bibliothek verwendet WIFI von ESP32 und PubSubClient Bibliothek und macht eine Einkapselung dafür. Man muss nur die WIFI und MQTT Informationen (SSID, Passworter, MQTT-Host und Port) angeben und dieser Bibliothek wird automatisch folgende Sachen verwalten:
- Verbinden mit einem WiFi-Netzwerk.
- Verbinden mit einem MQTT-Broker..
- Automatisches Erkennen von Verbindungsverlusten, entweder vom WiFi-Client oder vom MQTT-Broker, und es wird automatisch eine neue Verbindung versuchen..
- Subscribe/Unsubscribe von MQTT-Topics durch ein freundliches Rückrufsystem. (Callback))
- Unterstützt ein einmaliges Vorkommen eines '+' oder '#' Wildcards in Abonnementss
- Bereitstellung einer Callback-Behandlung, um mitzuteilen, wenn alles verbunden ist (Wifi und MQTT)..
- Bereitstellung einer Funktion, die das Drucken nützlicher Debug-Informationen in Bezug auf MQTT- und Wifi-Verbindungen ermöglicht..
- Bereitstellung einiger anderer nützlicher Hilfsprogramme für die MQTT- und Wifi-Verwaltung..
- Bereitstellung einer Funktion zum Aktivieren eines HTTP-Update-Servers, der durch ein Kennwort gesichert ist, um Remote-Updates zu ermöglichen.. 
 

Da jedes ESP einen eigenen und unterschiedlichen Client-Namen haben muss, wird der Name anhand des Standorts des ESP erstellt.
In den Bildern unten ist ein Beispiel für die Informationsangabe für WIFI- und MQTT-Verbindungen sowie für die Erstellung des Client-Namens.

WIFIMQTTInfos

EspCreating Client

MQTT Topics und MQTT-Message in JSON-Format

In der unten stehenden Tabelle stehen der verwendeten MQTT-Topic List und die Beispiele von den dazu gehörigen MQTT-Nachrichten in JSON Format.

Diese MQTT-Topics werden von ESP32 abonniert (subscribe) und von Web-Applikation veröffentlicht (publish)
TabelMQTTMessages

Dieses MQTT-Topic werden von ESP32 veröffentlicht (publish) und von Web-Applikation abonniert (subscribe)
Publish MQTT

Ansteuerung 8x8LED durch ESP32 Microcontroller

Um die Beleuchtung der 8x8 LEDs zu steuern, wird die Bibliothek FastLED_NeoMatrix verwendet. Diese Bibliothek basiert auf der FastLED-Bibliothek, erbt aber die GFX-Bibliothek von Adafruit. Somit ist diese Bibliothek in der Lage, sowohl die FastLED-Fähigkeiten als auch die Adafruit Primitves Graphics zu implementieren.

NeoMatrix_FastLED

Dieser Mikrocontroller arbeitet vor allem wie ein Zustandsautomat. Er verarbeitet 4 Hauptzustände: Start, Setup, LED Routine und Deep Sleep.
LED Routine
Zustand ist der Aktivzustand, der die 8x8 LED Beleuchtung direkt ansteuert. Dieser Zustand besteht aus 4 Subzustände, die in einer Endloseschleife ablaufen: Light Off, Text Generator, Tap To Light und Lightshow.


Abbildung: Vereinfachte Zustanddiagramm der 8x8LEDs im ESP32 Microcontroller





Betreut durch:
Gruppe - 8x8 App Ansteurung MQTT
Davin Farrell Lukito
 Muhammad Abiyyu Mufti Hanif

  Mit Unterstützung von Prof. J. Walter Wintersemester 2020