//Hier ist der Code den ihr kopieren könnt, und ein paar Änderungen vornehmen müsst. Darunter gehört das Wlan, und euere Thingspeak Keys.

//Wenn du ein Wlan mit einer SSID(Wlan Name) und einen Passwort sowie ein Benutzer benutzt, nehme folgenden Code:   (sonst nehme den unteren Code)
//------------------------------------------------------------------------------------------------------------------------------------------------
#include <Arduino.h> //Arduino Bibliothek #include <WiFi.h> //Wifi Bibliothek #include "esp_wpa2.h" //wpa2 Bibliothek #include <OneWire.h> //OneWire Bibliothek #include <DallasTemperature.h> //DallasTemperature Bibliothek #include <ThingSpeak.h> //ThingSpeak Bibliothek #define EAP_ANONYMOUS_IDENTITY "BENUTZERNAME HIER EINTRAGEN" #define EAP_IDENTITY "BENUTZERNAME HIER NOCHMALS EINTRAGEN" #define EAP_PASSWORD "PASSWORT HIER EINTRAGEN" const char *ssid = "SSID HIER EINTRAGEN"; // Wlan Name const char *THINGSPEAK_API_WRITE_KEY = "API WRITE KEY HIER EINTRAGEN"; unsigned long CHANNEL_ID = CHANNEL ID HIER EINTRAGEN; unsigned long CHANNEL_NUMBER = 1; //CHANNEL NUMMER HIER EINTRAGEN unsigned long CHANNEL_NUMBER2 = 2; //CHANNEL NUMMER HIER EINTRAGEN const int oneWireBus = 4; // GPIO wo der Temperatursensor DS18B20 verbunden ist OneWire oneWire(oneWireBus); // Setup a oneWire instance to communicate with any OneWire devices DallasTemperature sensors(&oneWire); // Pass our oneWire reference to Dallas Temperature sensor WiFiClient client; const int soilMoistPin = 36; //GPIO wo der Feuchtigkeitssensor verbunden ist const int soilMoistLevelLow = 3387; //Dieser Wert soll von euch entsprechend angepasst werden const int soilMoistLevelHigh = 1643; //Dieser Wert soll von euch entsprechend angepasst werden void setup() { pinMode(soilMoistPin, INPUT); // Wifi-Setup Serial.begin(9600); delay(10); Serial.println(); Serial.print(F("Connecting to network: ")); Serial.println(ssid); WiFi.disconnect(true); // disconnecten des wifis um zum neuen wifi eine Verbindung herzustellen WiFi.mode(WIFI_STA); // init wifi mode esp_wifi_sta_wpa2_ent_set_identity((uint8_t *)EAP_ANONYMOUS_IDENTITY, strlen(EAP_ANONYMOUS_IDENTITY)); esp_wifi_sta_wpa2_ent_set_username((uint8_t *)EAP_IDENTITY, strlen(EAP_IDENTITY)); esp_wifi_sta_wpa2_ent_set_password((uint8_t *)EAP_PASSWORD, strlen(EAP_PASSWORD)); esp_wifi_sta_wpa2_ent_enable(); WiFi.begin(ssid); // connect to wifi while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print(F(".")); } Serial.println(""); configTzTime("CET-1CEST,M3.5.0,M10.5.0/3", "pool.ntp.org", "time.nis.gov"); sensors.begin(); // Temperatur Setup/ Start des DS18B20 Sensors ThingSpeak.begin(client); // ThingSpeak Setup } void loop() { // Temperatursensor Daten anfragen sensors.requestTemperatures(); float temperatureC = sensors.getTempCByIndex(0); Serial.print(temperatureC); Serial.println("ºC"); ThingSpeak.setField(1, temperatureC); //Feld 1 in Thingspeak wird auf temperatureC zugewiesen ThingSpeak.writeFields(CHANNEL_NUMBER, THINGSPEAK_API_WRITE_KEY); //Channel Nummer und API key wird angegeben, sodass die Daten an Thingspeak gesendet werden delay(20000); // Bodenfeuchtigkeit Daten anfragen int soilMoist = analogRead(soilMoistPin); Serial.print("Analog Value: "); Serial.print(soilMoist); // Auswertung der Bodenfeuchtigkeit in Prozent int percentSoilMoist = map(soilMoist, soilMoistLevelHigh, soilMoistLevelLow, 100, 0); Serial.print("\t"); if(percentSoilMoist <= 0){ percentSoilMoist = 0; Serial.print(percentSoilMoist); } else{ Serial.print(percentSoilMoist); } Serial.println(" %"); ThingSpeak.setField(2, percentSoilMoist); //Feld 1 in Thingspeak wird auf temperatureC zugewiesen ThingSpeak.writeFields(CHANNEL_NUMBER2, THINGSPEAK_API_WRITE_KEY); //Channel Nummer 2 und API key wird angegeben, sodass die Daten an Thingspeak gesendet werden delay(20000); }
//----------------------------------------------------------------------------------------------------
//Wenn du ein Wlan nur mit einer SSID(Wlan Name) und einen Passwort benutzt, nehme folgenden Code:
//-----------------------------------------------------------------------------------------------------
#include <Arduino.h>           //Arduino Bibliothek
#include <WiFi.h>              //Wifi Bibliothek
#include "esp_wpa2.h"          //wpa2 Bibliothek
#include <OneWire.h>           //OneWire Bibliothek
#include <DallasTemperature.h> //DallasTemperature Bibliothek
#include <ThingSpeak.h>        //ThingSpeak Bibliothek

const char* ssid = "SSID HIER EINTRAGEN";
const char* passwort =  "PASSWORT HIER EINTRAGEN";

const char *THINGSPEAK_API_WRITE_KEY = "API WRITE KEY HIER EINTRAGEN";
unsigned long CHANNEL_ID = CHANNEL ID HIER EINTRAGEN;
unsigned long CHANNEL_NUMBER = 1; //CHANNEL NUMMER HIER EINTRAGEN
unsigned long CHANNEL_NUMBER2 = 2; //CHANNEL NUMMER HIER EINTRAGEN


const int oneWireBus = 4;            // GPIO wo der Temperatursensor DS18B20 verbunden ist
OneWire oneWire(oneWireBus);         // Setup a oneWire instance to communicate with any OneWire devices
DallasTemperature sensors(&oneWire); // Pass our oneWire reference to Dallas Temperature sensor
WiFiClient client;

const int soilMoistPin = 36;                //GPIO wo der Feuchtigkeitssensor verbunden ist
const int soilMoistLevelLow = 3387;    //Dieser Wert soll von euch entsprechend angepasst werden
const int soilMoistLevelHigh = 1643;   //Dieser Wert soll von euch entsprechend angepasst werden

void setup()
{
  pinMode(soilMoistPin, INPUT);
  // Wifi-Setup
  
  Serial.begin(9600);
  delay(10);
  Serial.println();
  Serial.print(F("Connecting to network: "));
  Serial.println(ssid); WiFi.disconnect(true); // disconnect von Wifi um zum neuen Wifi eine verbindung aufzubauen
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid,passwort); // connect to wifi
  while (WiFi.status() != WL_CONNECTED) { 
  delay(500);
  Serial.print(F("."));
  }

  Serial.println("");  
  Serial.println(F("WiFi is connected!"));
  Serial.print(F("IP address set: "));
  Serial.println(WiFi.localIP()); //print LAN IP
  Serial.print("my mac: ");
  Serial.println(WiFi.macAddress());
  Serial.print("Subnetzmaske: ");
  Serial.println(WiFi.subnetMask());
  configTzTime("CET-1CEST,M3.5.0,M10.5.0/3", "pool.ntp.org", "time.nis.gov");
 
  sensors.begin();          // Temperatur Setup/ Start des DS18B20 Sensors
  ThingSpeak.begin(client); // ThingSpeak Setup

}

void loop()
{
 
  // Temperatursensor Daten anfragen
  sensors.requestTemperatures();
  float temperatureC = sensors.getTempCByIndex(0);

  Serial.print(temperatureC);
  Serial.println("ºC");

  ThingSpeak.setField(1, temperatureC);                             //Feld 1 in Thingspeak wird auf temperatureC zugewiesen
  ThingSpeak.writeFields(CHANNEL_NUMBER, THINGSPEAK_API_WRITE_KEY); //Channel Nummer und API key wird angegeben, sodass die Daten an Thingspeak gesendet werden

  delay(20000);


  // Bodenfeuchtigkeit Daten anfragen
  int soilMoist = analogRead(soilMoistPin);
  Serial.print("Analog Value: ");
  Serial.print(soilMoist);  
 

  // Auswertung der Bodenfeuchtigkeit in Prozent
  int percentSoilMoist = map(soilMoist, soilMoistLevelHigh, soilMoistLevelLow, 100, 0);
  Serial.print("\t");
  if(percentSoilMoist <= 0){
    percentSoilMoist = 0;
    Serial.print(percentSoilMoist);
  }
  else{
    Serial.print(percentSoilMoist);
  }
 
  Serial.println(" %");


  ThingSpeak.setField(2, percentSoilMoist);                          //Feld 1 in Thingspeak wird auf temperatureC zugewiesen
  ThingSpeak.writeFields(CHANNEL_NUMBER2, THINGSPEAK_API_WRITE_KEY); //Channel Nummer 2 und API key wird angegeben, sodass die Daten an Thingspeak gesendet werden
 
  delay(20000);

}
Zuletzt geändert: Mittwoch, 31. Januar 2024, 14:14