Das Internet der Dinge (Internet of Things, IoT) besteht aus Mikrocontrollern, die über das Internet mit Server-Rechnern verbunden sind. Sie können Daten an den Server senden und Befehle von ihm empfangen.
Der Mikrocontroller ESP32 kann sich im Wlan anmelden und darüber ins Internet gehen.
Als IoT-Dienst verwenden wir Blynk. Diese Firma betreibt IoT-Server, die rund um die Uhr über das Internet erreichbar sind.
Die kostenlose Version hat einige Einschränkungen. Sie reicht aber für unsere Zwecke voll aus.
Über einen Datenstrom kann ein Typ von Information zwischen dem Mikrocontroller und dem Blynk-Server ausgetauscht werden. Bei unserem Aufbau benötigen wir einen Datenstrom für die Temperatur-Messwerte.
Klicke rechts oben auf Speichern, um die neu erstellte Vorlage Temperatur zu speichern.
// Konstanten für die Anbindung an blynk.io
#define BLYNK_TEMPLATE_NAME "" // Dein Wert von blynk.io
#define BLYNK_AUTH_TOKEN "" // Dein Wert von blynk.io
#define BLYNK_TEMPLATE_ID "" // Dein Wert von blynk.io
// Ermöglicht die Ausgabe von Nachrichten der blynk.io-Seite
// an die Serielle Schnittstelle.
// Kann auch gelöscht werden, um Daten zu sparen
#define BLYNK_PRINT Serial
// Bibliotheken einbinden
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Arduino.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Wifi Zugangsdaten
char ssid[] = ""; // Dein Netzwerk
char pass[] = ""; // Dein Kennwort
// Temperaturmessung
int tempPin=34;
OneWire oneWire(tempPin);
DallasTemperature sensors(&oneWire);
// Timer zum zeitgesteuerten Senden der Daten an blynk.io
BlynkTimer timer;
// Timer-Funktion
// Hier muss das Senden der Daten an blynk.io programmiert werden
void myTimerEvent()
{
// Sende Signal zum Abfragen der Temperatur
sensors.requestTemperatures();
// Lese den Wert des Sensors mit dem Index 0 (es können mehrere Sensoren angeschlossen werden)
float tempC = sensors.getTempCByIndex(0);
// Sendet den Messwert an den Virtuellen Pin V0
// von blynk.io
Blynk.virtualWrite(V0, tempC);
Serial.println(tempC);
}
void setup()
{
Serial.begin(115200);
// Baut die Verbindung zum blynk.io Server auf
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Legt fest, wie oft die Timer-Funktion myTimerEvent aufgerufen wird
// 5000L bedeutet 5000 ms als long-Wert
// d.h. die Daten werden alle 5 Sek. erfasst und an blynk.io gesendet
timer.setInterval(5000L, myTimerEvent);
}
void loop()
{
// Startet die Routinen für Blynk
Blynk.run();
// Startet dieTimerfunktion
// damit wird die Funktion myTimerEvent regelmäßig aufgerufen
// ACHTUNG: Es darf keine delay()-Funktion verwendet werden!
timer.run();
}