/**************************************************
Übung: ESP32 (Teil 3) - Aufgabe 2 (Vorlage)
***************************************************/
//-----------------------------------------------------------
#include <WiFi.h>
#include <MQTT.h>
//-----------------------------------------------------------
// BBWAS1:
const int PIN_ADC_POTENTIOMETER = 33;
//-----------------------------------------------------------
// WiFi:
const char WIFI_SSID[] = "m126";
const char WIFI_PASSWORD[] = "M126M126";
// MQTT: Client ID (frei wählbar)
const char MQTT_CLIENT_ID[] = "BBW_ESP32_IHRNAME";
// MQTT: Angaben für public-Broker von shiftr.io
const char MQTT_BROKER_USER_NAME[] = "public";
const char MQTT_BROKER_USER_PASSWORD[] = "public";
// Objekte:
WiFiClient wifinetwork;
MQTTClient mqttclient;
// Variablen:
uint32_t zeitStempel = 0;
//-----------------------------------------------------------
void setup() {
//---
// UART starten (115200 Baud)
Serial.begin(115200);
//---
// WiFi verbinden
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Verbinde mit ");
Serial.print(WIFI_SSID);
// Warten bis mit WiFi verbunden...
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(250);
}
Serial.println(" Verbunden!");
//---
// MQTT: Client starten
mqttclient.begin(wifinetwork);
// MQTT: Init Broker-Name
mqttclient.setHost("public.cloud.shiftr.io");
Serial.print("Verbinde mit MQTT-Broker ");
// MQTT: Mit Broker verbinden...
while (mqttclient.connect(MQTT_CLIENT_ID, MQTT_BROKER_USER_NAME, MQTT_BROKER_USER_PASSWORD) == false) {
Serial.print(".");
delay(250);
}
Serial.println(" Verbunden!");
}
//-----------------------------------------------------------
void loop() {
//---
// MQTT: CPU-Zeit für Client (senden und empfangen)
mqttclient.loop();
//---
// T=500ms (2 Hz)
if ((millis() - zeitStempel) > 500) {
zeitStempel = millis();
// MQTT: Nachricht publizieren
// - Topic: /BBW/IHRNAME/AUFGABE2/POTENTIOMETER
// - Payload: ADC-Wert vom Potentiometer 0...4095
mqttclient.publish("/BBW/IHRNAME/AUFGABE2/POTENTIOMETER", String(analogRead(PIN_ADC_POTENTIOMETER)) );
Serial.println("Nachricht wurde publiziert :-)");
}
}