Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Alexa-basierte Smart Home-Überwachung

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
Espressif ESP8266 ESP-01
× 1
DHT11 Temperatur- und Feuchtigkeitssensor (4 Pins)
× 1
ControlEverything.com 4-KANAL-RELAIS-CONTROLLER FÜR I2C
× 1
IR-Hindernissensor
× 1
Kamera
× 1
Jumper (generisch)
× 1

Apps und Onlinedienste

Arduino-IDE
Amazon Alexa Alexa Skills Kit
Amazon Alexa echosim.io
ThingSpeak API
Backendlos
Pushingbox

Über dieses Projekt

Einführung:

In der heutigen Welt verbringen die Menschen mehr Zeit am Arbeitsplatz als zu Hause. Daher besteht ein Bedarf an einem Heimüberwachungssystem, mit dem die Menschen die Bedingungen des Hauses während ihrer Arbeit kennen lernen können. Noch besser wäre es, wenn man während der Arbeitszeit einfach "jemanden" nach seiner Wohnung fragen könnte. Dies kann erreicht werden, indem Amazon Alexa als Assistent verwendet wird, der dem Benutzer die benötigten Informationen über sein Zuhause geben kann.

Nicht nur am Arbeitsplatz können die Benutzer den Hauszustand an jedem Ort der Welt kennenlernen, solange sie über eine Internetverbindung und ein Amazon Alexa-Gerät verfügen.

Die folgenden Funktionen sind in diesem Projekt implementiert:

1) Steuern Sie die Haushaltsgeräte wie Lüfter und Licht

2) Zeigt den Status der Geräte an

3) Zeigt den Wetterzustand des Hauses an (Temperatur und Luftfeuchtigkeit)

4) Sendet den Schnappschuss des Inneren des Hauses bei Bedarf über Gmail an den Benutzer.

5) Sendet eine Benachrichtigung im Fall von -

* Eindringling (sendet auch Foto)

* Feuer

* Gast (sendet auch Foto)

Projektschritte:

SCHRITT 1:Programmierung des Arduino und ESP8266

Laden Sie die Arduino-IDE von der offiziellen Website herunter:https://www.arduino.cc/en/Main/Software

Öffnen Sie die Arduino IDE und gehen Sie zu Datei-> Einstellungen-> im zusätzlichen Board-Manager-URL-Typ - http://arduino.esp8266.com/stable/package_esp8266com_index.json

Gehen Sie zu Tools -> Boards -> Board Manager --> und installieren Sie das zuletzt gefundene esp8266-Paket.

Arduino programmieren Schließen Sie einfach das USB-Kabel vom Arduino an den Computer an und wählen Sie Arduino/Genuino UNO in Tools-> Boards aus. Stellen Sie außerdem sicher, dass Sie unter Tools die richtigen COM-Ports auswählen (die COM-Portnummer finden Sie im Geräte-Manager). Schreiben Sie das erforderliche Programm, kompilieren Sie es und klicken Sie auf Hochladen, wenn keine Fehler aufgetreten sind.

So programmieren Sie ESP8266 Stellen Sie die Verbindung wie im Diagramm gezeigt her

Verbinden Sie den USB von Arduino mit dem Computer. In Tools-> Board-> Generic ESP8266 auswählen und auch den richtigen COM-Port auswählen. Schreiben Sie das erforderliche Programm, kompilieren Sie es und klicken Sie auf Hochladen, wenn keine Fehler aufgetreten sind. Stellen Sie sicher, dass Sie Arduino RST mit GND verbinden (arduino verhält sich wie ein Programmierer für ESP8266).

In diesem Projekt wird zuerst der ESP8266 programmiert und dann werden die Schaltungsverbindungen entfernt. Dann wird der Stromkreis wieder angeschlossen, wie in der Abbildung mit dem Namen "Stromkreisverbindungen" gezeigt. Und dann ist das Arduino programmiert

SCHRITT 2:Thingspeak.com konfigurieren

Erstellen Sie ein Konto auf thingspeak.com.

Wir verwenden Kanäle in Thingspeak, um die Gerätesteuerungsinformationen zu speichern und an arduino/alexa weiterzuleiten. wir speichern auch die Temperatur- und Feuchtigkeitswerte in den Kanälen. Es ist wie ein Speicherort für die Informationen.

Gehe zu Kanäle --> Meine Kanäle und erstelle einen neuen Kanal. Gib deinen Kanälen einen Namen und eine Beschreibung.

in unserem Projekt brauchen wir 8 Kanäle (Sie können die Arbeit mit weniger Kanälen erledigen, aber beim Programmieren wird es etwas kompliziert). Außerdem hat Thingspeak eine Zeitbeschränkung beim Aktualisieren eines Kanals. Zwischen aufeinanderfolgenden Aktualisierungen eines bestimmten Kanals muss eine Lücke von 10-15 Sekunden liegen.

Acht Kanäle mit ihren Werten und ihrer Bedeutung sind unten aufgeführt

Kanalname (Wert1-Bedeutung, Wert2-Bedeutung usw.):

1) Gerätesteuerung (0 -lightON, 1- lightOff, 2- Lüfter EIN, 3- Lüfter aus)

2) Lichtstatus (0- Licht aus, 1- Licht an)

3) Lüfterstatus (0- Lüfter aus, 1- Lüfter ein)

4) Luftfeuchtigkeit (Wert der Luftfeuchtigkeit)

5) Temperatur (Temperaturwert)

6) Einbruchbenachrichtigung (1- Einbruchalarm)

7) Feuerbenachrichtigung (1- Feueralarm)

8)Gastbenachrichtigung (1-Gastalarm)

Wenn Sie auf einen Kanal klicken, können Sie seine Kanal-ID sehen und API-Schlüssel in die Registerkarte API-Schlüssel schreiben. Die Kanal-ID ist erforderlich, um die Informationen/den Wert im Kanal zu erhalten. und Schreibtaste ist erforderlich, um einen Wert im Kanal zu speichern.

http-Anfrage zum Aktualisieren eines Kanals lautet:

https://api.thingspeak.com/update?api_key=&field1=

wird durch entsprechende Write-Tasten des Kanals ersetzt und der Wert kann (0/1 bei Gerätesteuerung oder Temperatur-/Feuchtigkeitswerten) sein

http-Anfrage zum Lesen von Werten aus einem Kanal lautet:

https://api.thingspeak.com/channels//field/field1/last.html

wird durch die jeweilige Channel-ID des Channels ersetzt, aus dem wir lesen möchten.

SCHRITT 3:Das Programm

Das Programm ist in 3 Teile gegliedert:

A) Programm für Arduino :das programm für arduino ist sehr einfach. Es empfängt die Daten vom ESP8266 seriell und basierend auf den empfangenen Daten werden die Geräte gesteuert. Weitere Informationen zum Programm finden Sie in den Kommentaren im Programm selbst.

B) Programm für ESP8266 : das Programm für ESP8266 beinhaltet 3 Dinge

1) Aktualisieren von Temperatur und Luftfeuchtigkeit mit http-Anfrage

client.print(String("GET") + "/update?key=&field1="+humidity+" HTTP/1.1\r\n" + "Host:" + host + " \r\n" + "Verbindung:schließen\r\n\r\n"); // Luftfeuchtigkeit aktualisieren client.print(String("GET") + "/update?key=&field1="+temperature+" HTTP/1.1\r\n" + "Host:" + host + "\r \n" + "Verbindung:schließen\r\n\r\n"); // Temperatur aktualisieren 

der wird durch den entsprechenden Write-Key ersetzt, der im Thingspeak-Kanal für Feuchtigkeit bzw. Temperatur zu finden ist. und Host ist api.thingspeak.com.

Laden Sie die DHT-Bibliothek herunter von:https://github.com/adafruit/DHT-sensor-library

2) Lesen von entsprechenden Kanälen von Thingspeak und Steuerung des Geräts basierend auf den erhaltenen Werten:

client.print(String("GET") + "/channels//field/field1/last.html HTTP/1.1\r\n" + "Host:" + host + " \r\n" + "Verbindung:schließen\r\n\r\n"); 

wobei durch die entsprechende Channel-ID aus Thingspeak ersetzt wird.

3) Senden eines Alarms bei hoher Temperatur über die Pushbox

String host1="api.pushingbox.com";client.print(String("GET") + "/pushingbox?devid= HTTP/1.1\r\n" + "Host :" + host1 + "\r\n" + "Verbindung:schließen\r\n\r\n"); 

wobei durch Ihre Geräte-ID in der Pushbox ersetzt wird.

SCHRITT 4:Konfigurieren von linkit smart 7688 duo und Webcam

Ich In diesem Projekt werden Webcam und Linkit Smart 7688 Duo verwendet, um das erforderliche Foto aufzunehmen und an den Benutzer zu senden. Sie können auch das Arduino-Kameramodul verwenden und es mit Arduino verbinden oder eine beliebige IP-Kamera verwenden.

Halten Sie die WLAN-Taste am Linkit Smart 7688 20 Sekunden lang gedrückt, um das Board zurückzusetzen. Nachdem die WLAN-Einstellung zurückgesetzt wurde, können Sie den Namen des Zugangspunkts in den drahtlosen Netzwerkverbindungen sehen. Verbinden Sie nun den Computer mit diesem Netzwerk.

Nachdem Sie es verbunden haben, öffnen Sie den Browser und geben Sie 192.168.100.1 in die Adressleiste ein. Sie können das Portal sehen.

Legen Sie ein Passwort fest, um sich bei seinem Portal anzumelden.

Nachdem Sie sich angemeldet haben, gehen Sie zum Netzwerk-Tab und wählen Sie den Stationsmodus (wir brauchen ihn (linkit smart 7688 duo), um auf das Internet zuzugreifen) und verbinden Sie ihn mit Ihrem Wifi-Netzwerk und drücken Sie Konfigurieren und neu starten.

Nach dem Neustart des Boards wird ihm eine lokale IP-Adresse zugewiesen. Finden Sie die Adresse mit einem beliebigen IP-Tool oder Ihrem Router-Portal heraus. In meinem Fall war es 192.168.1.4.

Geben Sie nun die lokale IP-Adresse in die Adressleiste des Browsers ein. Stellen Sie sicher, dass der Computer mit dem gleichen Netzwerk wie der linkit smart verbunden ist. Sie werden aufgefordert, sich erneut anzumelden.

Um das Streaming von der Webcam zu aktivieren, sollten Sie den MJPG-Streamer aktivieren (mjpg-streamer ist eine Befehlszeilenanwendung, die JPEG-Frames von einem oder mehreren Eingabe-Plugins in mehrere Ausgabe-Plugins kopiert). Gehen Sie dazu im Portal oben rechts auf den OpenWrt-Standort. Sie müssen sich erneut anmelden.

Nachdem Sie sich angemeldet haben, gehen Sie zum Service-Tab und aktivieren Sie MJPG-Streamer aktivieren und weisen Sie diesem Service eine Portnummer zu. Ich habe 4440 zugewiesen. Klicken Sie auf Speichern und anwenden.

Nach der Einrichtung können Sie Ihre Webcam über ein OTG-Kabel mit dem linkit smart 7688 Duo-USB-Host verbinden.

Um nun den Stream zu sehen, öffnen Sie den Browser und geben Sie : in die Adressleiste ein. in meinem Fall ist es 192.168.1.4:4400

Um den Schnappschuss aufzunehmen, geben Sie den Befehl :?action=snapshot

. ein

Dieses Bild ist jetzt lokal verfügbar, aber wir müssen es dem Push-Box-Dienst zur Verfügung stellen. Um dies zu erreichen, müssen wir eine Portweiterleitung durchführen Die Portweiterleitung kann im Router-Portal erfolgen. Die Prozess-ID ist für verschiedene Router unterschiedlich. Google einfach, um zu erfahren, wie man für einen bestimmten Router weiterleitet. Es ist normalerweise unter dem NAT-Dienst verfügbar.

Nachdem Sie die Portweiterleitung verwendet haben, können Sie von Ihrer externen IP auf diesen Port (zB 4440) zugreifen. externe IP kann gefunden werden, indem man "whats my ip" in Google einbindet.

Sie müssen diese Adresse zB http://:?action=snapshot in die pushbox eingeben (was im nächsten Schritt erklärt wird), damit die pushbox auf dieses Bild zugreifen und es an die Mail anhängen kann und senden Sie es Ihnen bei Bedarf zu.

Sie können das Bild auch auf einer SD-Karte speichern, da Linkit Smart 7688 Duo auch über einen SD-Kartensteckplatz zum Speichern von Informationen verfügt.

weitere Informationen dazu finden Sie unter:https://docs.labs.mediatek.com/resource/linkit-smart-7688/en/get-started/get-started-with-the-linkit-smart-7688-duo -Entwicklungsboard/

SCHRITT 5:PushingBox konfigurieren

Pushbox wird verwendet, um Benachrichtigungen über verschiedene Warnungen im Projekt an Google Mail zu senden.

Melden Sie sich mit dem Google-Konto bei Pushbox an:https://www.pushingbox.com/

Gehe zu meinen Diensten --> Dienst hinzufügen. Es stehen viele Dienste zur Auswahl wie Gmail, Twitter, Push-Benachrichtigungen für Android usw...

Wählen Sie Google Mail aus (da wir ein Foto als Anhang senden müssen) und geben Sie die entsprechende Google Mail-Namenskonfiguration und die Google Mail-ID des Benutzers ein, an den die Benachrichtigung gesendet werden soll.

Gehen Sie zu meinen Szenarien und erstellen Sie ein neues Szenario. Geben Sie dem Szenario einen Namen (zB:ALERT) Fügen Sie den zuvor erstellten Dienst hinzu.

Schreiben Sie den passenden Betreff und den Text der E-Mail und geben Sie die URL ein, um den Screenshot der Webcam zum Anhängen eines Fotos zu erstellen. Erstellen Sie verschiedene Szenarien für verschiedene Warnungen.

api zum Ausführen eines Push-Box-Szenarios ist:http://api.pushingbox.com/pushingbox?devid=

SCHRITT 6:Alexa Skill mit Backendless erstellen

backendless wird verwendet, um den Alexa-Skill zu erstellen. Es ist eine einfache Drag-and-Drop-Programmierung Wird verwendet, um einen Alexa-Skill (oder andere Programme) zu erstellen, auf die über eine Backendless-API zugegriffen werden kann.

Erstellen Sie ein Konto in Backendless:https://backendless.com/

  • Melden Sie sich bei Ihrem Konto in einem Backendless-Konto an. Klicken Sie auf App erstellen und geben Sie Ihrer App einen Namen/
  • Klicken Sie in der Symbolleiste auf der linken Seite auf das Symbol für die Geschäftslogik. Sie sehen den API-DIENSTE-Bildschirm.
  • Klicken Sie auf das „+“-Symbol, um einen neuen Dienst zu erstellen. Stellen Sie sicher, dass Sie im Popup-Fenster „Neuer Dienst“ CODELESS auswählen. Geben Sie als Dienstnamen „AlexaService“ ein. Klicken Sie auf die Schaltfläche SPEICHERN:
  • Backendless erstellt den API-Dienst und fordert Sie auf, eine Methode für den Dienst zu erstellen. Dies ist die Methode, die Anfragen von Alexa verarbeitet. Geben Sie als Methodennamen „handleRequest“ ein. Stellen Sie sicher, dass Sie POST für den REST-Vorgang auswählen, und deklarieren Sie ein Argument mit dem Namen „req“ und geben Sie „Any Object“ wie unten gezeigt ein:

Backendless erstellt einen Platzhalter für die codelose Logik der Methode. Klicken Sie auf die Schaltfläche BEARBEITEN, um zum Codeless Logic Designer zu wechseln.

Klicken Sie im erstellten Funktionsplatzhalterblock auf den Bereich mit der Aufschrift „doSomething“ und ändern Sie ihn in „sendAlexaResponse“. Diese Funktion wird verwendet, damit Alexa etwas sagt, das als Argument übergeben werden kann. Klicken Sie auf die Schaltfläche SPEICHERN, um die Funktion zu speichern:

Klicken Sie auf das Zahnradsymbol im violetten Block direkt neben dem Wort „Funktion“. Fügen Sie zwei Argumente hinzu, indem Sie die Eingabeblöcke ziehen, wie in der Abbildung unten gezeigt. Vergeben Sie die Namen der Argumente als „whatToSay“ und „waitForResponse“. Beachten Sie, dass beim Hinzufügen von Argumenten der Bereich Kontextblöcke automatisch mit den Blöcken gefüllt wird, die Argumentwerte darstellen:

Ändern Sie die Logik der Funktion so, dass sie wie in der Abbildung unten aussieht. Für die Blöcke „Objekte erstellen“ verwenden Sie das Zahnradsymbol, um den Namen der Objekteigenschaften zu ändern. Vergessen Sie nicht, Ihre Arbeit zu speichern, indem Sie auf die Schaltfläche SPEICHERN klicken.

Nachdem die benutzerdefinierte Funktion erstellt wurde, wechseln Sie zurück zur handleRequest-Methode des AlexaService-Dienstes. Klicken Sie in der Symbolleiste links auf die Kategorie Benutzerdefinierte Funktionen und ziehen Sie den sendAlexaResponse-Block, um eine Verbindung mit dem Rückgabekonnektor Ihrer Dienstmethode herzustellen:

die obigen Schritte finden Sie auch auf deren Website:https://backendless.com/developing-alexa-skill-without-writing-any-code-part1-codeless-in-backendless-mbaas/

https://backendless.com/developing-an-alexa-skill-without-writing-any-code-part2-slots/

Klicken Sie im Abschnitt BROWSER unter Funktionen auf den Knoten „Neu hinzufügen“. Klicken Sie im erstellten Funktionsplatzhalterblock auf den Bereich mit der Aufschrift „doSomething“ und ändern Sie ihn in „getIntentName“

Ändern Sie die Blöcke so, dass die Funktion wie folgt aussieht:

Dadurch wird der Absichtsname basierend auf Beispieläußerungen abgerufen. Gehen Sie zurück zu API-Diensten->-->Anfrage bearbeiten im Browserbereich. Variablen und Logik werden aus dem Systemabschnitt erstellt. Erstellen Sie die folgenden Variablen:

Als nächstes speichern wir den Namen der Absicht, um die Variable anzufordern. Und dann vergleichen Sie mit den Absichten. Wenn die Anfrage zum Beispiel "Introduction" lautet, wird die Antwortvariable auf "Hi! I can control......." gesetzt und diese Antwort wird endlich von Alexa vorgelesen.

Ändern Sie den Block wie unten gezeigt:

Wenn die Anfrage LightsOn-Intention ist, aktualisieren wir den Thingspeak-Kanal mithilfe der HTTP-Get-Anfrage auf '0' und aktualisieren gleichzeitig den Gerätestatus (1/0 je nach On/Off). Das gleiche wird für LightsOff, FanOn und FanOff wiederholt.

Für das Wetter lesen wir aus dem Temperatur- und Feuchtigkeitskanal und speichern das Ergebnis in der Reaktionsvariablen. Da der Kanal nur Werte liefert, fügen wir Texte an, um die Antwort sinnvoll zu machen:

für den Schnappschuss des Wohnzimmers führen wir das Pushbox-Szenario aus:

für den Gerätestatus lesen wir Informationen aus dem Statuskanal von Thingspeak:

für Benachrichtigungen und Warnungen lesen wir von Alarmkanälen (Feuer, Eindringling und Gast):

Basierend auf den Werten, die wir aus dem Benachrichtigungsfeld erhalten, werden entsprechende Warnmeldungen in der Variablen response0 gespeichert. wenn keine Benachrichtigung vorliegt, wird keine Benachrichtigungsnachricht gespeichert.

Sobald die Benachrichtigung ausgelesen wurde, wird die '0' in den Benachrichtigungskanälen aktualisiert, damit Alexa dieselbe Benachrichtigung nicht erneut liest. Dann wird endlich basierend auf der Anfrage die Variable response0/respond vorgelesen.

PS :Nachdem Sie das erforderliche Modell in Backendless erstellt haben, klicken Sie oben rechts im Codeless-Bildschirm auf Modell bereitstellen, um das Modell bereitzustellen.

SCHRITT 7:Konfigurieren des Alexa-Skills in der Amazon Developer Console:

Gehen Sie zur Amazon-Entwicklerkonsole und melden Sie sich mit dem Amazon-Konto an. https://developer.amazon.com/

Gehen Sie zur Entwicklerkonsole und klicken Sie auf die Registerkarte ALEXA. Klicken Sie auf Alexa Skills Kit, um loszulegen.

Erstellen Sie einen benutzerdefinierten Skilltyp, geben Sie dem Skill einen Namen und einen Aufrufnamen.

die jeweiligen Absichten und Beispieläußerungen sind im folgenden Code angegeben.

{ "languageModel":{ "intents":[ { "name":"AMAZON.CancelIntent", "samples":[] }, { "name":"AMAZON.HelpIntent", "samples" :[] }, { "name":"AMAZON.StopIntent", "samples":[] }, { "name":"Camera", "samples":[ "bitte sende einen Schnappschuss von meinem Wohnzimmer", " Bitte senden Sie einen Schnappschuss von meinem Zuhause", "Bitte senden Sie ein Foto von meinem Wohnzimmer", "Bitte senden Sie ein Foto von meinem Zuhause" ], "slots":[] }, { "name":"FanOff", "samples ":[ "Lüfter ausschalten", "Lüfter ausschalten", "Lüfter ausschalten", "Lüfter ausschalten" ], "Slots":[] }, { "Name":"FanOn", "Samples" :[ "Lüfter einschalten", "Lüfter einschalten", "Lüfter einschalten", "Lüfter einschalten" ], "Slots":[] }, { "Name":"Introduction", "Samples":[ "was kannst du tun", "was kannst du tun", "was kannst du für mich tun" ], "slots":[] }, { "name":"LightsOff", "samples":[ "ausschalten Lichter", "Lichter ausschalten", "Lichter ausschalten", "Lichter ausschalten" ], "Slots":[] }, { "Name":"LightsOn", "Beispiele":[ "Lichter einschalten ", "Licht einschalten", "Licht einschalten", "Schalte das Licht ein" ], "Slots":[] }, { "name":"Benachrichtigung", "Beispiele":[ "Was sind meine Benachrichtigungen", "Gibt es Benachrichtigungen", "Gibt es Updates" , "meine Benachrichtigungen vorlesen" ], "slots":[] }, { "name":"Status", "samples":[ "wie ist mein Gerätestatus", "wie ist der Status meiner Geräte" ], "slots":[] }, { "name":"Wetter", "samples":[ "Wie ist das Wetter in meinem Haus", "Wie ist das Wetter in meinem Haus", "Wie ist das Wetter", "wie ist die Temperatur in meinem Zuhause", "wie ist die Temperatur" ], "slots":[] } ], "invocationName":"mein Zuhause" }} 

Wählen Sie auf der Registerkarte "Konfiguration" HTTPS als Typ des Dienstendpunkts aus. Füllen Sie die Standard-URL mit der API-URL von Backendless aus.

Wählen Sie die zweite Option in Zertifikat für Standardendpunkt im SSL-Zertifikat. Sie können die Fertigkeit auch mit dem Testsimulator testen.

Nach Abschluss des Tests können Sie den Skill mit den erforderlichen Veröffentlichungsinformationen veröffentlichen.

SCHRITT 8:Endgültige Einrichtung und Fertigstellen!

Stellen Sie die Stromkreisverbindung wie unten gezeigt her

Manchmal ESP8266 wird Fehlfunktion weil von unzureichend aktuell. Also, aber nicht erwähnt in die Schaltung, es ist empfohlen, den ESP8266 über separate 3,3 V mit Strom zu versorgen Quelle. Wenn du sind mit ein Kraft Bank Stellen Sie sicher, dass Sie die Spannung mit einem 3,3-V-Spannungsregler von 5 V auf 3,3 V reduzieren.

Laden Sie das Programm auf ESP8266 und Arduino hoch. Ich habe die Verbindung zur Glühbirne gezeigt, dasselbe kann auf Lüfter oder andere Geräte ausgedehnt werden.

Verwenden Sie schließlich amazon echo oder echosim.io, um Ihre Fähigkeiten zu testen.

Du muss aktivieren die Fähigkeit mit die Aufruf Name ( als ist mein Fall - "mein Zuhause"). Manchmal es nicht Arbeit wenn es ist gebraucht ohne Aufruf Name als Ich haben angezeigt Paar von mal in mein Video.

Ich hoffe, Ihnen hat das Tutorial gefallen!

Danke!

Code

  • Smart_bell_ESP8266.ino
  • Home_monitor_arduino.ino
  • Home_Monitor_ESP8266.ino
Smart_bell_ESP8266.inoArduino
Code für ESP8266, um Benachrichtigungen über Eindringlinge und Gäste zu erhalten
/* * Diese Skizze ist eine Implementierung von Smart Bell und Home Security * */#include #include//----- --------------------------------------// Variablen//-------- ----------------------------------int Eindringling=0, Gast=2; // Pin 0 als Einbruchalarm und Pin2 als Gastalarmconst char* ssid ="SSID"; //Ihre SSID von WIFIconst char* password ="password"; // Wifi-Passwort //------------------------------------------------------ -const char* host ="api.thingspeak.com";void setup () { Serial.begin (115200); Verzögerung(10); // Wir beginnen mit der Verbindung zu einem WiFi-Netzwerk Serial.println (); Serial.println(); Serial.print ("Verbinden mit"); Serial.println (ssid); /* Stellen Sie den ESP8266 explizit als WiFi-Client ein, sonst würde er standardmäßig versuchen, sowohl als Client als auch als Access-Point zu fungieren und könnte Netzwerkprobleme mit Ihren anderen WiFi-Geräten in Ihrem WiFi-Netzwerk verursachen. */ WiFi.mode(WIFI_STA); WiFi.begin(ssid, Passwort); Während (WiFi.status () !=WL_CONNECTED) { Verzögerung (500); Serial.print("."); } Serial.println(""); Serial.println ("WiFi verbunden"); Serial.println("IP-Adresse:"); Serial.println (WiFi.localIP());}int Wert =0;int x,y=0,z,k=0;void loop() { delay(1000); ++Wert; Serial.print("Verbindung zu"); Serial.println (Host); // Verwenden Sie die WiFiClient-Klasse, um TCP-Verbindungen zu erstellen WiFiClient-Client; const int httpPort =80; if (!client.connect(host, httpPort)) {Serial.println("Verbindung fehlgeschlagen"); Rückkehr; } Serial.print ( "Anfordernde URL:"); //=========================================================================================================// Einbruchalarm //=========================================================================================================x=digitalRead (Eindringling); // Serial.println (x); wenn (x==0) { y=0; } if (x ==1 &&y ==0) {Serial.println ( "Senden der Warnung, bitte warten ...."); Verzögerung (1000); String host1="api.pushingbox.com"; client.print(String("GET") + "/pushingbox?devid= HTTP/1.1\r\n" + "Host:" + host1 + "\r\n" + "Verbindung:close\r\ n\r\n"); // Push-Box-API ausführen client.print(String("GET") + "/update?api_key=&field1=1 HTTP/1.1\r\n" + "Host:" + host + "\r\n " + "Verbindung:schließen\r\n\r\n"); // Aktualisieren der Benachrichtigungsverzögerung für Eindringlinge (1000); y=1; } //========================================================================================================// Ende der Einbruchswarnung//=========================================================================================================//==========================================================================================================// Gastalarm //========================================================================================================lange t1; z=digitalRead(Gast); if(z==0 &&(millis()>=t1+300000)) // 5 min warten, um zu vermeiden, dass mehrere Benachrichtigungen aufgrund mehrerer Türklingeln gesendet werden { k =0; } if(x==1&&k==0) { t1=millis(); // Speichern des aktuellen Zeitstempels in t1 Serial.println ( "Sending Alert Pls Wait ....."); Verzögerung (1000); //Verzögerung für das Senden von Warnungen und Schalterentprellung String host1="api.pushingbox.com"; client.print(String("GET") + "/pushingbox?devid= HTTP/1.1\r\n" + "Host:" + host1 + "\r\n" + "Verbindung:close\r\ n\r\n"); // Push-Box-API ausführen client.print(String("GET") + "/update?api_key=&field1=1 HTTP/1.1\r\n" + "Host:" + host + "\r\n " + "Verbindung:schließen\r\n\r\n"); // Aktualisieren der Verzögerung der Gastbenachrichtigung (1000); k=1; } //========================================================================================================// Ende der Gastwarnung//=========================================================================================================lange Zeitüberschreitung ohne Vorzeichen =millis(); while (client.available() ==0) { if (millis() - timeout> 5000) { Serial.println(">>> Client Timeout!"); client.stop(); Rückkehr; } } //Serial.println("Verbindung wird geschlossen");}
Home_monitor_arduino.inoArduino
Code für Arduino zur Steuerung von Geräten
//Diese Skizze in der Implementierung der Heimautomatisierung #include // Import der seriellen Bibliothek#include//--------- --------------------------------- // Pin-Definitionen //------------ ------------------------------#Define Light 2 // Pin 2 zum Steuern des Lichts#define Fan 3 // Pin 3 zum Steuern Lüfter//-----------------------------------------------------// Variablen// ------------------------------------------char e;int p=0, q=0; // diese Variablen verhindern das Ein-/Ausschalten bereits eingeschalteter GeräteSoftwareSerial home_monitor (10, 11); // RX, TXchar control_data; // die über Bluetoothvoid übertragenen Daten setup () { // Geben Sie Ihren Setup-Code hier ein, um ihn einmal auszuführen:home_monitor.begin (115200); Serial.begin (9600); pinMode(13,OUTPUT);}void loop() {// fügen Sie Ihren Hauptcode hier ein, um ihn wiederholt auszuführen:if (home_monitor.available()){ control_data=home_monitor.read(); // Steuerinformationen vom ESP8266 seriell abrufen e=control_data; Serial.print (control_data); //=========================================================================================================// Gerätesteuerung //==========================================================================================================// Durchführen der erforderlichen Operationen basierend auf dem Wert des Kanals //------------- ------------------------------------------------ // HELL //----------------------------------------------- -------------- if (e=='0'&&p==0) //Licht EIN { DigitalWrite (Licht, LOW); p=1; } if (e=='1'&&p==1) // Licht aus { DigitalWrite (Light, HIGH); p =0; } //----------------------------------------------------------- -------------- // Heizung //------------------------------ ------------------------------ if(e=='2'&&q==0) { digitalWrite(fan,HIGH); q=1; aufrechtzuerhalten. Wenn (e=='3'&&q==1) { DigitalWrite (Lüfter, LOW); q=0; } }}
Home_Monitor_ESP8266.inoArduino
Code For ESP8266 to update humidity and temperature in thingspeak and also retrieve control information from thingspeak
/* * This sketch updates wheather information in thingspeak.com and also retrieve control information from thingspeak.com * It send the control information to arduino serially */#include #include#include "DHT.h" // including the library of DHT11 temperature and humidity sensor#define DHTTYPE DHT11 // DHT 11#define dht_dpin 2 // define GPIO2 as data input DHT dht(dht_dpin, DHTTYPE); //------------------------------------------// variables//------------------------------------------//dht DHT;char c,e; // stores the bytes coming from the serverfloat temp,h; //stores float value of temp and humididtyString humidity,temperature,line; //stores string value of temp and humididtyint co=0; //control the sending of Alertconst char* ssid ="SSID"; //your SSID of WIFIconst char* password ="password"; // password of Wifi//--------------------------------------------const char* host ="api.thingspeak.com";void setup() { dht.begin(); Serial.begin(115200); Verzögerung(10); // We start by connecting to a WiFi network Serial.println(); Serial.println(); Serial.print ("Verbinden mit"); Serial.println (ssid); /* Explicitly set the ESP8266 to be a WiFi-client, otherwise, it by default, would try to act as both a client and an access-point and could cause network-issues with your other WiFi-devices on your WiFi-network. */ WiFi.mode(WIFI_STA); WiFi.begin(ssid, Passwort); Während (WiFi.status () !=WL_CONNECTED) { Verzögerung (500); Serial.print("."); } Serial.println(""); Serial.println ("WiFi verbunden"); Serial.println("IP address:"); Serial.println(WiFi.localIP());}int value =0;void loop() { delay(1000); ++value; Serial.print("connecting to "); Serial.println(host); // Use WiFiClient class to create TCP connections WiFiClient client; const int httpPort =80; if (!client.connect(host, httpPort)) { Serial.println("connection failed"); Rückkehr; } Serial.print("Requesting URL:"); //============================================================================================================// Mini Weather Station //============================================================================================================h =dht.readHumidity(); //reads humidity and temperature temp =dht.readTemperature(); if(temp<50.0) { co=0; } if(temp>
=50.0&&co==0) // send alert if temperature is above 50 degrees and co is used to avoid multiple alert sending { Serial.println("Sending Alert please wait......."); Verzögerung (1000); String host1="api.pushingbox.com"; client.print(String("GET ") + "/pushingbox?devid= HTTP/1.1\r\n" + "Host:" + host1 + "\r\n" + "Connection:close\r\n\r\n"); //pushingbox api to send alert delay(1000); client.print(String("GET ") + "/update?key=&field1=1 HTTP/1.1\r\n" + "Host:" + host + "\r\n" + "Connection:close\r\n\r\n"); //updating thingspeak fire alert channel co=1; } humidity=String(h); temperature=String(temp); Serial.println (h); Serial.println(temp); client.print(String("GET ") + "/update?key=&field1="+humidity+" HTTP/1.1\r\n" + "Host:" + host + "\r\n" + "Connection:close\r\n\r\n"); //update humidity in thingspeak channel client.print(String("GET ") + "/update?key=&field1="+temperature+" HTTP/1.1\r\n" + "Host:" + host + "\r\n" + "Connection:close\r\n\r\n"); ////update temperature in thingspeak channel //============================================================================================================// End of Weather Station//============================================================================================================//============================================================================================================// Sending Control info to arduino Serially//============================================================================================================// This will send the request to the server client.print(String("GET ") + "/channels//field/field1/last.html HTTP/1.1\r\n" + "Host:" + host + "\r\n" + "Connection:close\r\n\r\n"); // get information about device control unsigned long timeout =millis(); while (client.available() ==0) { if (millis() - timeout> 5000) { Serial.println(">>> Client Timeout !"); client.stop(); Rückkehr; } } // Read all the lines of the reply from server and print them to Serial while(client.available()){ String line =client.readStringUntil('\r'); } Serial.print(line); // received by arduino serially //Serial.println("closing connection");}

Schaltpläne


Herstellungsprozess

  1. Anwendungen der Heimautomatisierung
  2. Verwendung von RFID-Tags für die Überwachung der Heimsicherheit
  3. LoRa-basierte Smart City-Luftqualitätsüberwachung
  4. Multi-Temperatursensor
  5. CO2-Überwachung mit K30-Sensor
  6. Alexa, schalte DIESE Lampe ein:Intelligenter 3D-Sensor für Amazon Echo
  7. Bewässerungssystem für Heimpflanzen
  8. Arduino Home Controller aktiviert von Alexa
  9. SMART-Temperaturüberwachung für Schulen
  10. Lokale Wetterstation