Inhaltsverzeichnis:

Tür- und Temperatur-Status-Logger-Projekt - Gunook
Tür- und Temperatur-Status-Logger-Projekt - Gunook

Video: Tür- und Temperatur-Status-Logger-Projekt - Gunook

Video: Tür- und Temperatur-Status-Logger-Projekt - Gunook
Video: Garagentor mit Shelly PLUS 1 + Zustandsanzeige, Temperatur & Feuchtigkeit Shelly App, Home Assistant 2024, November
Anonim
Tür- und Temperatur-Status-Logger-Projekt
Tür- und Temperatur-Status-Logger-Projekt

Dieses Instructable zeigt Ihnen, wie Sie mit einem ESP8266 NodeMCU, einem DHT11 Temperatur- und Feuchtigkeitssensor, einem Tür- / Fenster-Reed-Schalter, einem 10K Ohm-Widerstand und einem Anschlusskabel einen einfachen Tür- und Temperaturstatus-Logger für unter 10,00 US-Dollar herstellen.

Die Entstehung dieses Projekts entstand aus meinem Wunsch, mehr Heimautomatisierung mit dem Arduino-Board zu machen. Da ich viel über die Arduino-kompatible EPS8266 NodeMCU gelesen hatte, entschied ich, dass dieses Board das perfekte kostengünstige Board zum Experimentieren wäre. Nachdem ich im Internet nach Heimautomatisierungsprojekten mit den ESP8266-Karten gesucht hatte, entschied ich mich für meinen ersten Versuch, einen Temperatur- und Türstatuslogger zu kombinieren. Schließlich wird dieses Projekt mit Servos, Feuchtigkeitssensoren und anderer Elektronik kombiniert, um ein kleines Gewächshaus zu automatisieren, das mein Großvater vor 50 Jahren entworfen und gebaut hat. Der Temperatursensor wird verwendet, um zu bestimmen, ob das Heizsystem ein- oder ausgeschaltet werden soll, und um den Servos zu signalisieren, das Entlüftungssystem bei Bedarf zu öffnen und zu schließen. Der Zustand des Entlüftungssystems wird durch die Verwendung der magnetischen Reedschalter überwacht. Schließlich werden die Feuchtigkeitssensoren verwendet, um ein Bewässerungssystem zu automatisieren.

Schritt 1: Haftungsausschluss

Nur ein kurzer Haftungsausschluss, um festzustellen, dass wir KEINE Verantwortung für alles übernehmen, was durch die Befolgung dieser Anleitung passiert. Es ist immer am besten, die Anweisungen und Sicherheitsblätter des Herstellers zu befolgen, wenn Sie etwas bauen. Lesen Sie also bitte diese Dokumente für alle Teile und Werkzeuge, die Sie zum Bauen Ihrer eigenen verwenden. Wir stellen lediglich Informationen über die Schritte zur Verfügung, mit denen wir unsere erstellt haben. Wir sind keine Profis. Tatsächlich sind 2 von 3 der Personen, die an diesem Build teilgenommen haben, Kinder.

Schritt 2: Ein kostenloses IFTTT-Konto einrichten

Kostenloses IFTTT-Konto einrichten
Kostenloses IFTTT-Konto einrichten

Wenn Sie noch keinen haben, ist es jetzt an der Zeit, ein kostenloses IFTTT-Konto einzurichten, indem Sie auf die Homepage gehen. IFTTT steht für If This Then That und ist eine kostenlose Plattform, die es Ihnen ermöglicht, internetbasierte Dienste auf neue Weise zu verbinden ermöglichen es Ihnen, diese Dienste auf neue Weise zu nutzen. Für dieses Projekt werden wir IFTTT verwenden, um einem ESP8266 zu ermöglichen, den Status einer Tür über einen Reedschalter sowie Temperatur und Luftfeuchtigkeit über den DHT11-Sensor in einem Google Sheets-Dokument zu protokollieren.

Schritt 3: Erstellen Sie ein IFTTT-Applet

Erstellen Sie ein IFTTT-Applet
Erstellen Sie ein IFTTT-Applet

Gehen Sie noch in IFTTT zum Abschnitt „Meine Applets“und erstellen Sie ein neues Applet, indem Sie auf die Schaltfläche „Neues Applet“klicken.

Schritt 4: Konfigurieren Sie den "diesen" Teil Ihres Applets

Konfigurieren Sie die
Konfigurieren Sie die

Klicken Sie auf das blaue Wort „dieses“– wie in der Abbildung oben hervorgehoben.

Schritt 5: Fügen Sie Ihrem Applet den WebHooks-Dienst hinzu

Fügen Sie Ihrem Applet den WebHooks-Dienst hinzu
Fügen Sie Ihrem Applet den WebHooks-Dienst hinzu

Suchen Sie in der Suchleiste nach dem Dienst „Webhooks“und wählen Sie das Webhooks-Symbol aus.

Wenn Sie den Dienst "Webhooks" gefunden haben, klicken Sie darauf.

Schritt 6: Richten Sie den Trigger zum Empfangen einer Webanforderung ein

Richten Sie den Trigger zum Empfangen einer Webanforderung ein
Richten Sie den Trigger zum Empfangen einer Webanforderung ein

Wählen Sie den Trigger "Webanfrage erhalten".

Schritt 7: Geben Sie einen Ereignisnamen an

Geben Sie einen Ereignisnamen an
Geben Sie einen Ereignisnamen an

Geben Sie im Textfeld Ihrem neuen Applet einen Ereignisnamen an. Ich habe "Datenlogger" ausgewählt, aber Sie können wählen, was Sie möchten.

Schritt 8: Konfigurieren Sie den "diesen" Teil Ihres Applets

Konfigurieren Sie die
Konfigurieren Sie die

Klicken Sie auf das blaue Wort „das“– wie in der Abbildung oben hervorgehoben.

Schritt 9: Einen Aktionsdienst einrichten

Einen Aktionsdienst einrichten
Einen Aktionsdienst einrichten

Suchen Sie im Suchfeld nach dem Dienst "Google Tabellen" und klicken Sie auf das Google Tabellen-Symbol.

Schritt 10: Verbinden Sie sich mit Google Tabellen

Mit Google Tabellen verbinden
Mit Google Tabellen verbinden

Falls noch nicht geschehen, müssen Sie Ihr IFTTT-Konto nicht mit Google Sheets verbinden. Drücken Sie die oben gezeigte Schaltfläche Verbinden und befolgen Sie die Anweisungen auf dem Bildschirm.

Schritt 11: Wählen Sie eine Aktion

Wähle eine Aktion
Wähle eine Aktion

Klicken Sie auf "Zeile zur Tabelle hinzufügen".

Schritt 12: Einrichten der Aktion

Richten Sie die Aktion ein
Richten Sie die Aktion ein

Geben Sie im Textfeld "Tabellenkalkulationsname" einen Namen ein. Ich wähle "Data_Logger" aus Konsistenzgründen. Lassen Sie den Rest der Einstellung in Ruhe (Sie können diese Einstellung zu einem anderen Zeitpunkt ausprobieren) und klicken Sie dann auf die Schaltfläche "Aktion erstellen" am unteren Bildschirmrand.

Schritt 13: Überprüfen und finalisieren Sie Ihr Applet

Überprüfen und finalisieren Sie Ihr Applet
Überprüfen und finalisieren Sie Ihr Applet

Wenn Sie mit Ihrer Applet-Konfiguration zufrieden sind, klicken Sie auf die Schaltfläche "Fertig stellen".

Schritt 14: Abrufen der später benötigten Konfigurationsinformationen

Rufen Sie später benötigte Konfigurationsinformationen ab
Rufen Sie später benötigte Konfigurationsinformationen ab

Klicken Sie wie oben hervorgehoben auf "Webhooks".

Schritt 15: Fahren Sie mit der Webhooks-Dokumentation für den API-Schlüssel fort

Fahren Sie mit der Webhooks-Dokumentation für den API-Schlüssel fort
Fahren Sie mit der Webhooks-Dokumentation für den API-Schlüssel fort

Es mag seltsam erscheinen, aber klicken Sie oben rechts auf den Link Dokumentation, um zur Seite mit Ihrem einzigartigen API-Schlüssel zu gelangen.

Schritt 16: Speichern Sie den API-Schlüssel

Speichern Sie den API-Schlüssel
Speichern Sie den API-Schlüssel
Speichern Sie den API-Schlüssel
Speichern Sie den API-Schlüssel

In der ersten Zeile des Dokumentationsbildschirms wird Ihr eindeutiger API-Schlüssel angezeigt. Kopieren und speichern Sie diesen Schlüssel zur späteren Verwendung.

Es ist auch eine gute Idee, das Applet hier zu testen. Denken Sie daran, {event} in Data_Logger oder wie auch immer Sie Ihr Ereignis benannt haben, zu ändern und einige Daten zu den 3 leeren Werten hinzuzufügen. Klicken Sie dann auf die Schaltfläche "Testen" unten auf der Seite. Sie sollten eine grüne Nachricht mit der Meldung "Ereignis wurde ausgelöst" sehen. Fahren Sie in diesem Fall mit Google Docs fort und bestätigen Sie, dass die Daten, die Sie auf der Testseite eingegeben haben, im Google Tabellen-Dokument angezeigt werden.

Schritt 17: Sammeln Sie die Komponenten

Sammeln Sie die Komponenten
Sammeln Sie die Komponenten
Sammeln Sie die Komponenten
Sammeln Sie die Komponenten
Sammeln Sie die Komponenten
Sammeln Sie die Komponenten

Sie benötigen nur wenige Teile.

1) ESP8266 NodeMcu-Entwicklungsboard

2) DHT11 Temperatur-/Feuchtigkeitssensor

3) Tür-/Fenster-Reed-Schalter

4) 10k Ohm Widerstand

5) Anschlusskabel

Schritt 18: Montieren Sie die Komponenten

1) Verbinden Sie einen der 3v3-Pins des ESP8266 mit dem vcc-Pin des DHT11.

2) Verbinden Sie einen der Erdungsstifte des ESP8266 mit dem Erdungsstift des DHT11.

3) Verbinden Sie Pin D4 (alias Pin 2 in der IDE) des ESP8266 mit dem Datenpin des DHT11.

4) Verbinden Sie einen weiteren 3v3-Pin des ESP8266 mit der einen Seite des Tür- / Fenster-Reedschalters.

5) Verbinden Sie Pin D5 (alias Pin 14 in der IDE) des ESP8266 mit der anderen Seite des Tür- / Fenster-Reedschalters und verbinden Sie ihn auch mit einer Seite des 10k Ohm Widerstands.

6) Verbinden Sie die andere Seite des 10k-Ohm-Widerstands mit einem anderen Massestift des ESP8266.

Informationen zur Auswahl der ESP8266-Pins finden Sie in diesem hilfreichen Diagramm oder dem sehr hilfreichen Video.

Schritt 19: Schreiben Sie den Arduino-Code

Schreiben Sie den Arduino-Code
Schreiben Sie den Arduino-Code

Kopieren Sie den folgenden Code und fügen Sie ihn in Ihre Arduino-IDE ein.

#include #include #include "DHT.h"

#define DHTPIN 2 // mit welchem digitalen Pin wir verbunden sind

#define DOORPIN 14 // Auf welchem digitalen Pin der Türschalter ist.

#define DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE);

int-Zählung = 1;

const char* ssid = "some_ssid"; // ändern Sie dies, um Ihre ssid zu verwenden const char* password = "some_password"; // ändern Sie dies, um Ihr Passwort zu verwenden int sleepTime = 100;

// Maker-Webhooks IFTTT

const char* server = "maker.ifttt.com";

// IFTTT-URL-Ressource

const char* resource = "/trigger/SOME_SERVICE_NAME/with/key/SOME_API_KEY"; //Stellen Sie sicher, dass Sie Ihren Dienstnamen und Ihren API-Schlüssel verwenden.

String doorStatus = "Geschlossen";

volatile bool stateChanged = false;

// Wenn du stundenlang schläfst, dann setze das Intervall auf Std * 60 Minuten * 60 Sekunden * 1000 Millisekunden

const langes Intervall = 1,0 * 60 * 60 * 1000; // 1 Stunde unsigned long previousMillis = 0 - (2 * Intervall);

Leere Einrichtung () {

Serial.begin(115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); pinMode (TÜRPIN, EINGANG); // Türsensor dht.begin (); WiFi.begin(ssid, Passwort);

Serial.print("\nVerbinden..");

Während (WiFi.status () != WL_CONNECTED) { Verzögerung (1000); Serial.print("."); } Serial.print("\n"); }

void eventTriggered(){

stateChanged = wahr; Serial.println ("Überprüfe die Tür!"); if (digitalRead (DOORPIN) = = HIGH) // Überprüfen Sie, ob die Tür offen ist { Serial.println ("Tür ist geschlossen!"); TürStatus = "Geschlossen"; } else { Serial.println ("Tür ist offen!"); TürStatus = "Geöffnet"; } }

void checkStatus(){

if (WiFi.status() == WL_CONNECTED) { //WLAN-Verbindungsstatus prüfen // Das Auslesen von Temperatur oder Luftfeuchtigkeit dauert ca. 250 Millisekunden! // Sensormesswerte können auch bis zu 2 Sekunden alt sein (es ist ein sehr langsamer Sensor) float h = dht.readHumidity (); // Temperatur als Celsius lesen (Standard) float t = dht.readTemperature (); // Temperatur als Fahrenheit lesen (isFahrenheit = true) float f = dht.readTemperature (true); // Prüfen, ob Lesevorgänge fehlgeschlagen sind und vorzeitig beenden (um es erneut zu versuchen). if (isnan (h) || isnan (t) || isnan (f)) { Serial.println ("Fehler beim Lesen vom DHT-Sensor!"); //Seriendruck("."); // Fehler beim Lesen vom DHT-Sensor! Rückkehr; } // Wärmeindex in Fahrenheit berechnen (Standard) float hif = dht.computeHeatIndex(f, h); // Wärmeindex in Celsius berechnen (isFahreheit = false) float hic = dht.computeHeatIndex(t, h, false);

Serial.print("\n");

Serial.print ("Temperatur: "); Seriendruck (f); Serial.print("*F ("); Serial.print(t); Serial.print("*C)"); Serial.print("\t"); Serial.print ("Heatindex: "); Serial.print (hif); Serial.print (" * F ("); Serial.print (hic); Serial.print (" * C) %"); Serial.print("\t"); Serial.print ("Luftfeuchtigkeit:"); Serial.println (h);

if (digitalRead(DOORPIN)==HIGH) // Überprüfen Sie, ob die Tür geöffnet ist

{ Serial.println ("Tür ist geschlossen!"); TürStatus = "Geschlossen"; } else { Serial.println ("Tür ist offen!"); TürStatus = "Geöffnet"; } String jsonObject = String("{"value1\":\"") + f +"*F (" + t + "*C) / "+ hif +"*F (" + hic + "*C) " + "\", \"value2\":\"" + h + "\", \"value3\":\"" + doorStatus + " \"}"; HTTPClient-http; String completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin(completeUrl); // http.begin(server); http.addHeader("Content-Type", "application/json"); http. POST(jsonObject); http.writeToStream(&Seriell); http.ende(); //Verbindung schließen

stateChanged = false;

int sleepTimeInMinutes = Intervall / 1000 / 60; Serial.print("\n\nSchlafen Sie für "); Serial.print (sleepTimeInMinutes); Serial.println("Minute(n) …"); } }

Leere Schleife () {

unsigned long currentMillis = millis(); Verzögerung (4000); // Wenn wir die verstrichene Zeit überschritten haben, erzwingen Sie eine Überprüfung der Tür und der Temperatur. if(currentMillis - previousMillis >= Intervall){ stateChanged = true; vorherigeMillis = aktuelleMillis; Serial.print (Anzahl ++); Serial.println (") Überprüfung wegen verstrichener Zeit!"); } Sonst wenn (stateChanged) {Serial.print (count ++); Serial.println (") Prüfung wegen Zustandsänderung!"); }

// Wenn sich der Zustand geändert hat, überprüfen Sie die Tür und die Temperatur.

if(stateChanged){checkStatus(); }

Verzögerung (sleepTime);

}

Schritt 20: Ergebnisse

Ergebnisse
Ergebnisse

Nachdem Sie den Quellcode im vorherigen Schritt hochgeladen haben, sollten Sie Ergebnisse wie im oben gezeigten Beispiel erhalten.

Schritt 21: Credits

Ich habe viele hilfreiche Hinweise und Tipps von Random Nerd Tutorials gefunden und möchte ihnen für all ihre Hilfe danken. Vor allem ihr ausgezeichnetes Tutorial zu ESP32 ESP8266 Publish Sensor Readings to Google Sheets, auf denen Hauptteile dieses Instructable basieren.

Darüber hinaus half mir das DHT11 Instructable von TheCircuit zu verstehen, wie man diesen sehr preiswerten, aber interessanten kleinen Sensor verwendet.

Darüber hinaus gibt es viele Tutorials, die sich mit der Überwachung Ihrer Türen befassen, wie den Garagentormonitor und ein weiteres von Random Nerd Tutorials. Ich habe Teile davon verwendet, um zu verstehen, wie mein Reed-Schalter richtig funktioniert.

Mit diesen Informationen und anderen Details, die ich im Internet gefunden habe, konnte ich schließlich ein System erstellen, das meinen Anforderungen entspricht. Ich hoffe, Sie finden dieses Instructable nützlich und bauen eines Ihrer eigenen.

Empfohlen: