Netzteil Weidmüller PROeco


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Meine Smartphone Schalt- und Meldezentrale


Smartphone Zentrale

Die „Meine Smartphone Schalt- und Meldezentrale“-Schaltung stellt eine Erweiterung der davongegangenen Schaltung „LEDs mit ESP32 via WLAN schalten“ dar. Auch hier spielen der ESP32-Mikrocontroller und die Blynk.app die Hauptrolle. Die Schaltung kann unter

LEDs via WLAN schalten

abgerufen werden.
In der folgenden Zusammenstellung werden über die Blynk.app nicht nur ein, sondern gleich drei ESP32-Mikrocontroller angesprochen. Eine solche Komposition soll zeigen, wie man via WLAN eine eigene kleine Hausteuerung zusammenstellen kann. Selbstgemacht. Gartenpumpe ein- oder ausschalten, Heizung regulieren, Fensterkontakte abfragen, Temperatur messen und vieles mehr ist hier möglich. In unserem Versuch werden nur einige einfache Funktionen ausprobiert. Alles andere überlassen wir dem ambitionierten Bastler.

Wir stellen uns vor, dass die Mikrocontroller jeweils in einem anderen Raum untergebracht wurden und andere Aufgaben haben. Im „Keller“ wird nur ein Lichtkreis ein- und ausgeschaltet. In der "Küche" kann ebenfalls ein Lichtkreis ein- und ausgeschaltet werden. Zusätzlich kann ein anderer Lichtkreis gedimmt werden. In beiden Fällen handelt es sich um Geräte, die später auf Signale von Smartphones reagieren sollen. Im „Wohnzimmer“ befindet sich der letzte ESP32, der selbst Signale zu dem Smartphone verschicken soll. Er fragt also Sensoren ab und meldet die Zustände an das Smartphone.

Wir haben hier sozusagen mit drei unabhängigen Schaltungen zu tun, die erstmals auf dem Smartphone Bildschirm zu einer Einheit zusammengeführt werden.

Die Vorgehensweise bei allen drei Komponenten ist gleich:
Das Projekt gestalten wir auf der Online-Plattform Blynk (https://www.blynk.io/). Die wichtigsten Schritte dabei sind:

  • Registrierung. Zuerst muss man sich bei Blynk registrieren. Für einfache Projekte mit einer begrenzten Anzahl an Geräten, Vorlagen und Datenströmen ist die Nutzung der Plattform kostenlos. Bei großen Projekten können Gebühren anfallen.
  • Vorlage. Auf der Blynk.Console im Bereich „Developer Zone -- > Meine Vorlagen“ durch Betätigen der Schaltfläche „+ Neue Vorlage“ eine neue Vorlage anlegen.
  • Die neue Vorlage bekommt einen Namen. Zusätzlich werden die Hardware (ESP32) und der Verbindungstyp (WiFi) bestimmt.
  • Nachdem die Vorlage geöffnet und Bearbeitungsmodus aktiviert wurde, werden Datenströme angelegt. Ein Datenstrom kann als eine elektrische Leitung, die für eine Funktion vorgesehen ist, verstanden werden. Um mit einem Schalter eine Lampe ein- bzw. auszuschalten, wird ein „Datenstrom“ benötigt. Um auf einem Display die Temperatur von einem Sensor anzuzeigen, wird ebenfalls ein „Datenstrom“ benötigt.
    In unserem Fall wird bei jedem Datenstrom „Virtual Pin“ gewählt. Nachdem alle Datenströme angelegt wurden, werden die Einstellungen gespeichert.
  • Im nächsten Schritt wird für die vorgewählte Vorlage Web-Dashboard eingerichtet. Hier kann man die zu den Datenströmen passenden Widgets einfügen. Jedem Widget wird ein Datenstrom zugeordnet. Nachdem der Schritt abgeschlossen wurde, sind die Einstellungen zu speichern.
  • Im Bereich „Geräte“ werden neue Geräte eingefügt. In unserem Fall sind es drei. Jedem Gerät wird jeweils eine Vorlage, die soeben angelegt wurde, zugeordnet.
  • Bei Anlegen der Geräte werden von der Software wichtige Daten generiert. Diese werden zu einem späteren Zeitpunkt in die Programme der drei ESP32-Mikrocontroller eingefügt. Es handelt sich um „BLYNK_TEMPLATE_ID", BLYNK_TEMPLATE_NAME" und „BLYNK_AUTH_TOKEN“. Sie werden in folgender Form in das ESP32-Programm eingefügt:

    #define BLYNK_TEMPLATE_ID "TMPL4dfeg-znX"
    #define BLYNK_TEMPLATE_NAME "ESP32 Name"
    #define BLYNK_AUTH_TOKEN "123456789oUpSnJGoM3N5Aob1YWzFDPe".

    Für jedes Gerät werden andere Daten generiert.

An unserem Versuch sind drei ESP32 beteiligt. Dementsprechend werden drei Vorlagen und drei Geräte angelegt. Das Ergebnis dieser Vorarbeit könnte wie folgt aussehen:

Vorlagen

(Vorlagen) Jeder Vorlage werden entsprechend der Aufgabe virtuelle Pin-Datenströme zugeordnet.
Keller: Datenstrom V22 (Lichtkreis Ein/Aus)
Küche: Datenstrom V14 (Lichtkreis 1 Ein/Aus) / Datenstrom V22 (Lichtkreis 2 dimmen)
Wohnzimmer: Datenstrom V25 – Status Lichtkreis An oder Aus / Datenstrom V26 – Status Heizung (OK oder Störung) / Datenstrom V27 – Status Wetter (Regen oder Sonne)


Geräte

(Geräte) Jedem Gerät wird eine auf ihn zugeschnittene Vorlage zugewiesen.


Schaltplan Keller

Schaltzentrale Keller

Im „Keller“ wird nur ein Lichtkreis geschaltet. Er wird durch die LED1 symbolisiert. Die endgültige Verbindung zwischen einem Widget in der Web-Console oder in der Smartphone App erfolgt im ESP32-Programm, das unten folgt. Dort wird der virtueller Pin V22, der einem Datenstrom zugeordnet wurde, mit dem Ausgangspin 22 des Mikrocontrollers verbunden. Die Nummerierung des virtuellen Pins ist dabei allerdings irrelevant. Der hier gemeinte Datenstrom könnte auch einfach „Lichtkreis Keller“ heißen und dem virtuellen Pin V10 zugeordnet werden.

Datenstrom-Verbindungen

Im „Keller“-Fall wird der zuständige Datenstrom mit fünf Objekten verbunden. Zwei Widgets im Web-Dashboard (PC), zwei Widgets in der Blynk.App (Smartphone) und dank eines passenden Programms mit dem Pin 22 des Mikrocontrollers.

Programm Keller

//***************************************************************************************
// Meine Smartphone Schalt- und Meldezentrale
// Teil 1: Keller (Ein/Aus-Funktion)
// ESP32-Dev-KitC V4
// Arduino IDE 2.3.7
//***************************************************************************************

#define BLYNK_PRINT Serial
                                                 // Die folgenden Daten werden bei Erstellung  
                                                 // eines neuen Gerätes generiert und müssen 
                                                 // hier eingegeben werden.
#define BLYNK_TEMPLATE_ID     "TMPL4Tq7WIAAA"
#define BLYNK_TEMPLATE_NAME   "ESP32 Keller"
#define BLYNK_AUTH_TOKEN      "123456789DT4RODL0bqfItRcEVgUwCdb"

#include <WiFi.h>                                // Bibliotheken
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
                                                 // Zugang zu dem Heim-Funknetz.
char ssid[] = "FRITZ!Box 7590";                  // Dein Funknetz-SSID
char pass[] = "12345678902516646863";            // Dein Passwort

// **************************************************************************************
    int PIN_LED = 22;                            // Pin ESP32
    BLYNK_WRITE(V22) {                           // Blynk virtueller Pin
    int pinValue = param.asInt();                // Wert aus der App lesen (0 oder 1)
    if (pinValue == 1) {
        digitalWrite(PIN_LED, HIGH);             // Pin 22 (Ausgang) am ESP32 einschalten
    } else {
        digitalWrite(PIN_LED, LOW);              // Pin 22 (Ausgang) am ESP32 ausschalten
    }
}

// **************************************************************************************
void setup() {

    Serial.begin(9600);                          // Anzeige vom WiFi-Verbindungsstatus
    Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
    pinMode(PIN_LED, OUTPUT);                    // ESP32-Pin 22 als Ausgang
}

// **************************************************************************************
void loop() {

    Blynk.run();
}

// **************************************************************************************  
        


Schaltplan Küche

Schaltplan Küche


Programm Küche

//***************************************************************************************
// Meine Smartphone Schalt- und Meldezentrale
// Teil 2: Küche (Ein/Aus-Funktion / Dimmen)
// ESP32-Dev-KitC V4
// Arduino IDE 2.3.7
//***************************************************************************************

#define BLYNK_PRINT Serial
                                            // Die folgenden Daten werden bei Erstellung  
                                            // eines neuen Gerätes generiert und müssen 
                                            // hier eingegeben werden.
#define BLYNK_TEMPLATE_ID     "TMPL4Tq7WIAAA"
#define BLYNK_TEMPLATE_NAME   "ESP32 Küche"
#define BLYNK_AUTH_TOKEN      "123456789DT4RODL0bqfItRcEVgUwCdb"

#include <WiFi.h>                                // Bibliotheken
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
                                                 // Zugang zu dem Heim-Funknetz.
char ssid[] = "FRITZ!Box 7590";                  // Dein Funknetz-SSID
char pass[] = "12345678902516646863";            // Dein Passwort

// **************************************************************************************
    int PIN_LED = 14;                            // Pin ESP32
    BLYNK_WRITE(V14) {                           // Blynk virtueller Pin
        int pinValue = param.asInt();            // Wert aus der App lesen (0 oder 1)
        if (pinValue == 1) {
            digitalWrite(PIN_LED, HIGH);         // Pin 14 (Ausgang) am ESP32 einschalten
        } else {
            digitalWrite(PIN_LED, LOW);          // Pin 14 (Ausgang) am ESP32 ausschalten
        }
    }

//***************************************************************************************
    int LED_Dimm = 22;                            // Pin ESP32
    BLYNK_WRITE(V22) {                            // Blynk virtueller Pin
        int sliderValue = param.asInt();          // Wert von Schieber empfangen
        ledcWrite (0, sliderValue);               // Dimmen
    }

// **************************************************************************************
void setup() {

    Serial.begin(9600);                          // Anzeige Verbindungsstatus
    Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
    pinMode(PIN_LED, OUTPUT);                    // ESP32-Pin 14 als Ausgang definiert
    ledcSetup (0, 5000, 8);                      // Kanal 0, Frequenz 5kHz, Auflösung 8 Bit
    ledcAttachPin (LED_Dimm, 0);                 // GPIO 22, Kanal 0
}

// **************************************************************************************
void loop() {

    Blynk.run();
}

// ************************************************************************************** 
        


Schaltplan Wohnzimmer

Schaltplan Wohnzimmer


Programm Wohnzimmer

//***************************************************************************************
// Meine Smartphone Schalt- und Meldezentrale
// Teil 3: Wohnzimmer (Status Abfragen)
// ESP32-Dev-KitC V4
// Arduino IDE 2.3.7
//***************************************************************************************

#define BLYNK_PRINT Serial
                                            // Die folgenden Daten werden bei Erstellung  
                                            // eines neuen Gerätes generiert und müssen 
                                            // hier eingegeben werden.
#define BLYNK_TEMPLATE_ID     "TMPL4Tq7WIAAA"
#define BLYNK_TEMPLATE_NAME   "ESP32 Wohnzimmer"
#define BLYNK_AUTH_TOKEN      "123456789DT4RODL0bqfItRcEVgUwCdb"

                                                 // Bibliotheken
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
                                                 // Zugang zu dem Heim-Funknetz.
char ssid[] = "FRITZ!Box 7590";                  // Dein Funknetz-SSID
char pass[] = "12345678902516646863";            // Dein Passwort

// **************************************************************************************
const int Schalter_Licht = 25;                   // ESP32 Pin 25 (Status Licht)
const int Schalter_Heizung = 26;                 // ESP32 Pin 26 (Status Heizung)
const int Schalter_Wetter = 27;                  // ESP32 Pin 25 (Status Wetter)
int Status_Licht = -1;                           // Vorbelegung
int Status_Heizung = -1;
int Status_Wetter = -1;
BlynkTimer timer;

// **************************************************************************************
void Pruefe_Licht() {
  
    int Status_Licht_Aktuell = digitalRead(Schalter_Licht);     // Digitales Signal lesen
    if (Status_Licht_Aktuell != Status_Licht) {                 // Bei Änderung senden
        Blynk.virtualWrite(V25, Status_Licht_Aktuell);
        Status_Licht = Status_Licht_Aktuell;                    // Status aktualisieren
    }
}

// **************************************************************************************
void Pruefe_Heizung() {
  
    int Status_Heizung_Aktuell = digitalRead(Schalter_Heizung); // Digitales Signal lesen
    if (Status_Heizung_Aktuell != Status_Heizung) {             // Bei Änderung senden
        Blynk.virtualWrite(V26, Status_Heizung_Aktuell);
        Status_Heizung = Status_Heizung_Aktuell;                // Status aktualisieren
    }
}

// **************************************************************************************
void Pruefe_Wetter() {
  
    int Status_Wetter_Aktuell = digitalRead(Schalter_Wetter);   // Digitales Signal lesen
    if (Status_Wetter_Aktuell != Status_Wetter) {               // Bei Änderung senden
        Blynk.virtualWrite(V27, Status_Wetter_Aktuell);
        Status_Wetter = Status_Wetter_Aktuell;                  // Status aktualisieren
    }
}

// **************************************************************************************
void setup() {

    Serial.begin(9600);
    Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);

    pinMode(Schalter_Licht, INPUT_PULLUP);       // Pins als Eingänge deklalieren
    pinMode(Schalter_Heizung, INPUT_PULLUP); 
    pinMode(Schalter_Wetter, INPUT_PULLUP);     
  
    timer.setInterval(500L, Pruefe_Licht);       // Prüf-Funktion alle 500 ms aufrufen
    timer.setInterval(600L, Pruefe_Heizung);     // Prüf-Funktion alle 600 ms aufrufen
    timer.setInterval(700L, Pruefe_Wetter);      // Prüf-Funktion alle 700 ms aufrufen
}

// **************************************************************************************
void loop() {

    Blynk.run();
    timer.run();
}

// **************************************************************************************  
        

Die Sensoren, die bestimmte Zustände an das Smartphone senden, werden in der „Wohnzimmer“-Schaltung durch drei einfache Schließer S1, S2 und S3 symbolisiert. Im Programm werden die Stellungen der Schalter in vorgegebenen Zeitabständen abgefragt. Wenn ein Schalter seinen Zustand geändert hat, wird die Information an das Smartphone gesendet.

Nachdem die Programme in ESP32-Mikrocontroller geladen wurden, kann auf dem seriellen Monitor der Verbindungsstatus eingesehen werden. Wenn die Verbindung mit dem Heimnetz steht, bekommt man folgende Meldung (ggf. muss der Reset-Knopf betätigt werden):

Status der Verbindung


„Blynk IoT“-App

Sobald alle oben beschriebenen Schritte abgeschlossen sind, kann man sich dem Smartphone oder Tablet widmen.
Im ersten Schritt muss natürlich die „Blynk IoT“-App aus dem Google Play Store oder App Store heruntergeladen und installiert werden.
Nachdem man sich eingeloggt hat, erscheinen auf dem Startbildschirm die angelegten Geräte. Wenn die auf dem Web-Dashboard angelegten Widgets hier nicht erscheinen, müssen sie neu eingefügt werden. Dies geschieht, indem man auf „Bearbeitung“ geht und das „+“-Symbol anklickt. Es wird eine Widget-Auswahl geöffnet. Durch Anklicken wird das gewählte Widget eingefügt. Man klickt das Widget an und verbindet es mit einem im Web-Dashboard vorgefertigten Datenstrom. Anschließend verlässt man die „Bearbeitung“-Ebene und kann die ESP32-Mikrocontroller steuern. Nachdem die Widgets eingefügt und bearbeitet wurden, sehen unsere Steuer- und Meldeseiten auf dem Smartphone wie folgt aus:

Smartphone Schaltflächen


Testschaltung

Testschaltung




Kurzvideo

Kurzvideo


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz