#include <ESP32Servo.h>     // Bibliothek für die Steuerung des Servos
#include <SoftwareSerial.h> // Bibliothek SoftwareSerial.h
#include <ThingSpeak.h>     // Bibliothek ThingSpeak.h
#include <WiFi.h>           // Bibliothek WiFi.h

const char* NETZWERK = "";  // Netzwerkname
const char* PASSWORT = "";  // Netzwerk-Passwort

const int CHANNEL_ID = ;                  // Channel ID
const char* CHANNEL_API_WRITE_KEY = "";   // Write API Key
const char* CHANNEL_API_READ_KEY = "";    // Read API Key

String inhalt = "";             // Variable für den Inhalt des QR-Codes nach dem Auslesen
long zeit = 0;                  // Variable zur Zwischenspeicherung der Programmlaufzeit

WiFiClient client;              // client
SoftwareSerial QR_Port(16,17);  // Rx, Tx
Servo garagentor;               // Servo-Name definieren

void InternetverbindungHerstellen()
{
  WiFi.begin(NETZWERK, PASSWORT);       // Aufbau der Internetverbindung
  while (WiFi.status() != WL_CONNECTED) // Warten bis mit Internet (Router) verbunden
  {
    
  }
  Serial.println("Verbunden mit IP-Adresse: " + WiFi.localIP().toString()); // Ausgabe, dass Internetverbindung besteht
                                                                            // Ausgabe der zugewiesenen IP-Adresse im Netz
}

int leseThingSpeak()
{
  return (ThingSpeak.readIntField(CHANNEL_ID, 1, CHANNEL_API_READ_KEY));  // Daten lesen und zurückgeben
}

void schreibeThingSpeak(int wertField1)
{
  ThingSpeak.setField(1, wertField1);                         // Wert in Feld 1 schreiben
  ThingSpeak.writeFields(CHANNEL_ID, CHANNEL_API_WRITE_KEY);  // Daten senden
}

void oeffneGarage()
{
  for(int i=120; i >= 10; i--)                      
  {
    garagentor.write(i);         // Servo-Schritte steuern
    delay(30);                   // Verzögerung
  }
}

void schliesseGarage()
{
  for(int i=10; i <= 120; i++)                      
  {
    garagentor.write(i);         // Servo-Schritte steuern
    delay(30);                   // Verzögerung
  }
}

void setup() {
  Serial.begin(9600);                   // Verbindung zum PC
  QR_Port.begin(9600);                  // Verbindung zum QR-Port-Scanner-Modul
  InternetverbindungHerstellen();       // öffnen der Methode für die Internetverbindung

  ThingSpeak.begin(client); // Starten des Clients
  garagentor.attach(13);    // Pin 13 für PWM definieren
}

void loop() {
  if(QR_Port.available())                 // Abfrage, ob QR-Code-Daten vorhanden sind
  {
    zeit = millis();                      // Programmlaufzeit zwischenspeichern
    while(millis() <= (zeit+500))         // eine halbe Sekunde warten
    {
      if(QR_Port.available())             // Abfrage, ob QR-Code-Daten vorhanden sind
      {
        inhalt += (char)QR_Port.read();   // Daten in Variable inhalt speichern
      }
    }
    Serial.println(inhalt);               // Daten ausgeben
    inhalt = "";                          // Inhalt löschen für erneutes Einlesen
  }
}
Zuletzt geändert: Mittwoch, 7. Juli 2021, 11:02