Code
//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