· 6 years ago · Mar 07, 2020, 10:50 AM
1// CREDITS TO www.bastelgarage.ch!
2/************************( Importieren der genutzten Bibliotheken )************************/
3#include "ThingSpeak.h"
4#include "RunningMedian.h"
5#include <ESP8266WiFi.h>
6#include "DHT.h"
7
8
9
10
11/********************( Definieren der Globale Variablen und Konstanten)********************/
12float t; // Variable zum Speichern der Temperatur
13float h; // Variable zum Speichern der Luftfeuchtigkeit
14
15
16#define DHTPIN 5 // Hier die Pin Nummer eintragen wo der Sensor angeschlossen ist
17#define DHTTYPE DHT22 // Hier wird definiert was für ein Sensor ausgelesen wird. In
18DHT dht(DHTPIN, DHTTYPE); // unserem Beispiel möchten wir einen DHT11 auslesen, falls du
19 // ein DHT22 hast einfach DHT22 eintragen
20
21
22unsigned long ThingspeakLastLogTime = 0;
23unsigned long SensorenLetzteAktualisierung; // Hilfsvariable für Zeitmessung
24int ThingspeakSampleTime = 60000; // Die schnellste Sample Time ist 15s ich empfehle
25 // 60s zu verwenden oder 300 Sekunden
26
27int SensorenSampleTime = 1; // Zeit in s für Aktualisierung der
28
29RunningMedian Mediant = RunningMedian(10);// Initialisieren von Median mit Anzahl Messwerten
30RunningMedian Medianh = RunningMedian(10);
31
32WiFiClient client;
33int status = WL_IDLE_STATUS;
34/**********************************(Thingspeak Eistellungen)*******************************/
35unsigned long myChannelNumber = XXXXX; // Deine ThingSpeak Kanal Nummer
36const char * myWriteAPIKey = "XXXXX"; // Dein ThingSpeak API Key
37
38/************************************(Wifi Einstellungen)**********************************/
39char ssid[] = "XXXXX"; // Deine Wlan SSID (name)
40char pass[] = "XXXXX"; // Dein Wlan Passwort
41
42/*******************************************(setup)****************************************/
43void setup() {
44
45 WiFi.begin(ssid, pass); // Wlan Aktivieren und mit definiertem Netzwerk verbinden
46 ThingSpeak.begin(client); // ThingSpeak Client starten
47
48 Serial.begin(9600); // Serial Monitor starten
49 Serial.println("DHT11 Testprogramm");
50 dht.begin(); // DHT11 Library starten
51}
52
53/*************************************(Hauptprogramm)**************************************/
54void loop() {
55
56 if (millis() - SensorenLetzteAktualisierung > (SensorenSampleTime*1000)) {
57 Mediant.add(dht.readTemperature()); // Messwert hinzufügen
58 t = Mediant.getAverage(); // Mittelwert auslesen
59
60 Medianh.add(dht.readHumidity()); // Messwert hinzufügen
61 h = Medianh.getAverage(); // Mittelwert auslesen
62 }
63
64
65/*********************( Überprüfen ob alles richtig Ausgelesen wurde )*********************/
66 if (isnan(h) || isnan(t)) {
67 Serial.println("Fehler beim auslesen des Sensors!");
68 return;
69 }
70
71 // Nun senden wir die gemessenen Werte an den PC diese werden wir im Seriellem Monitor sehen
72 Serial.print("Luftfeuchtigkeit: ");
73 Serial.print(h); // Ausgeben der Luftfeuchtigkeit
74 Serial.print("%\t"); // Tabulator
75 Serial.print("Temperatur: ");
76 Serial.print(t); // Ausgeben der Temperatur
77 Serial.write('°'); // Schreiben des ° Zeichen
78 Serial.println("C");
79 SensorenLetzteAktualisierung=millis(); // Letzte Aktualisierung speichern
80 MesswerteSenden(); // Funktion zum Senden der Messwerte aufrufen
81 delay(2000);
82}
83
84/*********************(Funktion um Daten an Thingspeak zu senden)**************************/
85void MesswerteSenden() {
86
87 if (millis() - ThingspeakLastLogTime > ThingspeakSampleTime) {
88 ThingSpeak.setField(1, t);
89 ThingSpeak.setField(2, h);
90 ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
91 ThingspeakLastLogTime = millis();
92 }
93}