Programmierung und Code
Im folgenden ist der Code für die Sprachsteuerung dargestellt. Diesen Code könnt Ihr einfach kopieren und bei euch einfügen.
Damit jedoch alles funktioniert fehlen noch wichtige Daten in eurem Code. Ihr müsst folgende Codezeilen verändern:
#define WLAN_SSID "xxx" // tragt hier euer WLAN Namen (SSID) ein
#define WLAN_PASS "1234" // hier das WLAN Passwort
In diese Codezeilen tragt Ihr euren WLAN Namen und darunter das zugehörige Passwort ein.
Damit sich der ESP32 mit dem Adafruit Server verbinden kann fehlen noch die folgenden Informationen:
#define AIO_USERNAME
"max_mustermann"
// Benutzername Adafruit IO Server eintragen
#define AIO_KEY "sdfgjhdfgtzkjgzh" // Key eintragen
Unter Nutzername tragt Ihr eure Anmeldenamen vom
Adafruit IO Server ein. Jetzt geht ihr auf die Adafruit IO Seite und Klickt bei
eurem Dashboard auf MyKey.
Abbildung: Key für den Arduino Code ermitteln Quelle:Welcome to Adafruit IO
/****************************************************/
#include <WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
/**********************************************************/
#define PIN 12
#define WLAN_SSID "xxx" // WLAN Name eintrage
#define WLAN_PASS "1234" // WLAN Passwort eintragen
/************************* Adafruit.io Setup *********************************/
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883 // use 8883 for SSL
#define AIO_USERNAME "max_mustermann" // Benutzername Adafruit eintragen
#define AIO_KEY "sdfgjhdfgtzkjgzh" // Key eintragen
/**********************************************************/
WiFiClient client;
/*************login Data*****************/
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
/****************************** Feeds ***************************************/
Adafruit_MQTT_Subscribe LED = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/led");
/*************************** Sketch Code ************************************/
void MQTT_connect();
void setup() {
Serial.begin(9600); //Serieller monitor Baud Rate definieren
delay(10);
pinMode(26, OUTPUT); //Pins für die Leds definieren
pinMode(25, OUTPUT); //Pins für die Leds definieren
pinMode(33, OUTPUT); //Pins für die Leds definieren
pinMode(32, OUTPUT); //Pins für die Leds definieren
Serial.println(F("Xplorer Garage DEMO")); //Ausgabe auf dem Seriellen Monitor
// Connect to WiFi access point.
Serial.println(); Serial.println();
Serial.print("Verbindet mit");
Serial.println(WLAN_SSID);
WiFi.begin(WLAN_SSID, WLAN_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi verbunden"); //Ausgabe WLAN verbunden
Serial.println("IP Adresse: "); Serial.println(WiFi.localIP()); //Ausgabe der vergebenen IP Adresse des EPS32
// Setup MQTT subscription for onoff feed.
mqtt.subscribe(&LED);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
MQTT_connect(); //aufrufen des Konstruktors MQTT_connect() zum verbinden des ESP32 mit dem Adafruit IO Server
//Abfragen des Zustandes der Leds (ob an oder aus)
Adafruit_MQTT_Subscribe *subscription;
while ((subscription = mqtt.readSubscription(5000))) {
if (subscription == &LED) {
Serial.print(F("Got: "));
Serial.println((char *)LED.lastread);
int led_State = atoi((char *)LED.lastread);
switch(led_State) { //schalten der Leds
case 0:
digitalWrite(26, LOW); // turn the LED off by making the voltage LOW
digitalWrite(25, LOW);
digitalWrite(33, LOW);
digitalWrite(32, LOW);
break;
case 1:
digitalWrite(26, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(25, HIGH);
digitalWrite(33, HIGH);
digitalWrite(32, HIGH);
break;
}
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Konstruktor zum verbinden des Adafruit IO Servers mit dem ESP32
void MQTT_connect() {
int8_t ret;
if (mqtt.connected()) {
return;
}
Serial.print("Connecting to MQTT... ");
uint8_t retries = 3;
while ((ret = mqtt.connect()) != 0) {
Serial.println(mqtt.connectErrorString(ret));
Serial.println("Nochmal MQTT verbinden in 5 sek...");
mqtt.disconnect();
delay(5000);
retries--;
if (retries == 0) {
while (1);
}
}
Serial.println("MQTT Connected!");
}