Innehållsförteckning:

Smart hemövervakning med Alexa och Arduino: 9 steg (med bilder)
Smart hemövervakning med Alexa och Arduino: 9 steg (med bilder)

Video: Smart hemövervakning med Alexa och Arduino: 9 steg (med bilder)

Video: Smart hemövervakning med Alexa och Arduino: 9 steg (med bilder)
Video: Local Voice Assistance with Wake Word in Home Assistant - Bye bye Alexa and Google Home 2024, November
Anonim
Image
Image
Samla material
Samla material

I den nuvarande världen tillbringar människor mer tid på arbetsplatsen än i sina hem. Därför finns det ett behov av hemövervakningssystem där människor kan lära känna husets förhållanden medan de är på jobbet. Det skulle vara ännu bättre om man bara kan fråga "någon" om sitt hem under arbetstid. Detta kan uppnås genom att använda Amazon Alexa som en assistent som kan ge användaren information om sitt hem.

Not Only Work Place kan användarna lära känna husets skick var som helst i världen så länge de har en internetuppkoppling och Amazon Alexa.

Följande funktioner implementeras i detta projekt:

1) Kontrollera hushållsapparater som fläkt och ljus

2) Berättar status för enheterna

3) Berättar husets väderförhållanden (temperatur och luftfuktighet)

4) Skickar ögonblicksbilden av husets interiör till användaren via Gmail vid behov.

5) Skickar meddelande vid -

* Inkräktare (skickar även foto)

* Eld

* Gäst (skickar även foto)

Steg 1: Samla material

Samla material
Samla material
Samla material
Samla material
Samla material
Samla material

Material som krävs

Arduino Uno

ESP8266 Wifi -modul

Linkit Smart 7688 Duo

DHT11

Reläer

IR hinder sensor

Webbkamera

Amazon Echo Dot

Brödbräda och bygeltrådar

Programvara och onlinetjänster:

Thingspeak.com

Arduino IDE

Amazon Alexa Skill Set

Amazon Alexa Echosim.io (för testning av skicklighet)

Backendless

PushingBox

Steg 2: Programmering av Arduino och ESP8266

Programmering av Arduino och ESP8266
Programmering av Arduino och ESP8266
Programmering av Arduino och ESP8266
Programmering av Arduino och ESP8266

Ladda ner Arduino IDE Från den officiella webbplatsen:

Öppna Arduino IDE och gå till fil-> preferenser-> i ytterligare styrelsehanterarens URL-typ-https://arduino.esp8266.com/stable/package_esp8266…

Gå till verktyg -> tavlor -> Board Manager och installera esp8266 -paketet som hittades till sist.

För att programmera arduino kopplar du bara in USB-kabeln från arduino till datorn och väljer Arduino/Genuino UNO i verktygs-> kort. Se också till att du väljer rättigheter COM -portar i Verktyg (COM -portnummer finns i Enhetshanteraren). Skriv det program som krävs, kompilera det och klicka på ladda upp om det inte finns några fel.

För att programmera ESP8266 gör anslutningen enligt diagrammet. anslut usb från arduino till dator. I verktygs-> kort-> välj Generisk ESP8266 och välj även höger COM-port. Skriv det program som krävs, kompilera det och klicka på ladda upp om det inte finns några fel. Se till att du ansluter Arduino RST till GND (arduino fungerar som en programmerare till ESP8266).

I detta projekt programmeras först ESP8266 och sedan tas kretsanslutningarna bort. Sedan återkopplas kretsen som visas i figuren med namnet "Kretsanslutningar". Och sedan är arduino programmerad.

Steg 3: Konfigurera Thingspeak.com

Konfigurera Thingspeak.com
Konfigurera Thingspeak.com

Skapa ett konto på thingspeak.com.

vi använder kanaler i thingspeak för att lagra enhetens kontrollinformation och dirigera den till arduino/alexa. vi lagrar också värdena för temperatur och luftfuktighet i kanalerna. Det är som en lagringsplats för informationen.

Logga in på thingspeak, gå till kanaler mina kanaler och skapa ny kanal. Ge dina kanaler namn och beskrivning. I vårt projekt behöver vi 8 kanaler (du kan göra jobbet med mindre kanaler men det blir lite komplicerat när du programmerar). Thingspeak har också en tidsbegränsning när du uppdaterar en kanal. Det måste vara ett mellanrum på 10-15 sekunder mellan successiv uppdatering av en viss kanal.

Åtta kanaler med deras värderingar och betydelse ges nedan

kanalnamn (värde1-mening, värde2-betydelse, etc):

1) Enhetskontroll (0 -ljus, 1 ljus av, 2 fläkt PÅ, 3 fläkt av)

2) ljusstatus (0- ljus släckt, 1- ljus tänt)

3) fläktstatus (0- fläkt av, 1 fläkt på)

4) luftfuktighet (värde av luftfuktighet)

5) temperatur (temperaturvärde)

6) inkräktare på inkräktare (1- varning för inkräktare)

7) brandavisering (1- brandvarning)

8) gästmeddelande (1- gästvarning)

när du klickar på någon kanal kan du se dess kanal -id och skriva API -nycklar på fliken API -nycklar. kanal -id krävs för att få informationen/ värdet i kanalen. Och skrivnyckel krävs för att lagra ett värde i kanalen.

http -begäran för att uppdatera en kanal är:

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

ersätts med motsvarande skrivknappar för kanalen och kan vara (0/1 vid enhetskontroll eller temp/fuktighetsvärden)

http -begäran för läsvärde från en kanal är:

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

ersätts av kanalens specifika kanal -id som vi vill läsa från.

Steg 4: Programmet

Programmet är uppdelat i 3 delar:

A) Program för Arduino: programmet för arduino är väldigt enkelt. Den tar emot data från ESP8266 i serie och baserat på mottagna data styrs enheterna. Mer information om programmet finns i kommentarerna i själva programmet.

B) Program för ESP8266: programmet för ESP8266 innefattar 3 saker

1) uppdatera temperatur och luftfuktighet med http -begäran

client.print (String ("GET") + "/update? key = & field1 =" + fuktighet + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Connection: close / r / n / r / n "); // uppdatera luftfuktigheten

client.print (String ("GET") + "/update? key = & field1 =" + temperatur + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Anslutning: stäng / r / n / r / n "); // uppdatera temperaturen

den ersätts av motsvarande skrivnyckel som finns i thingspeak -kanalen för fuktighet respektive temperatur. och värden är api.thingspeak.com.

ladda ner dht-bibliotek från:

2) läsning från motsvarande kanaler för thingspeak och styrenhet baserat på de erhållna värdena: client.print (String ("GET") + "/channels//field/field1/last.html HTTP/1.1 / r / n" + " Host: " + host +" / r / n " +" Connection: close / r / n / r / n ");

där ersätts med motsvarande kanal -ID som finns i thingspeak.

3) Skicka varning vid hög temperatur via skjutbox

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 ");

var ersätts av ditt enhets -id i pushingbox.

Steg 5: Konfigurera Linkit Smart 7688 Duo och webbkamera

Konfigurera Linkit Smart 7688 Duo och webbkamera
Konfigurera Linkit Smart 7688 Duo och webbkamera
Konfigurera Linkit Smart 7688 Duo och webbkamera
Konfigurera Linkit Smart 7688 Duo och webbkamera
Konfigurera Linkit Smart 7688 Duo och webbkamera
Konfigurera Linkit Smart 7688 Duo och webbkamera

I detta projekt används webbkamera och linkit smart 7688 duo för att ta nödvändigt foto och skicka det till användaren. Du kan också använda arduino kameramodul och koppla den med arduino eller använda vilken IP -kamera som helst.

Håll ned wifi -knappen på linkit smart 7688 i 20 sekunder för att återställa kortet. Efter att wifi -inställningen har återställts kommer du att kunna se dess åtkomstpunkts namn i de trådlösa nätverksanslutningarna. Anslut nu datorn till det nätverket. När du har anslutit den öppnar du webbläsaren och skriver 192.168.100.1 i adressfältet. Du kommer att kunna se dess portal. ange ett lösenord för att logga in på portalen.

När du har loggat in går du till nätverksfliken och väljer Station -läge (vi behöver det (linkit smart 7688 duo) för att komma åt internet) och ansluter det till ditt Wifi -nätverk och trycker på Konfigurera och starta om.

Efter att kortet startades om kommer det att tilldelas en lokal IP -adress. Ta reda på adressen med alla IP -verktyg eller din routerportal. I mitt fall var det 192.168.1.4. Skriv nu den lokala IP -adressen i webbläsarens adressfält. se till att datorn är ansluten till samma nätverk som linkit smart. Du kommer att bli ombedd att logga in igen.

För att aktivera streaming från webbkamera bör du aktivera -j.webp

När du har loggat in går du till fliken service och markerar aktivera -j.webp

Efter installationen kan du ansluta din webbkamera till linkit smart 7688 duo usb -värden via en OTG -kabel. Nu ser du Stream öppna webbläsaren och skriver: i adressfältet. i mitt fall är det 192.168.1.4:4400

för att ta snapshotet, skriv kommandot:? action = snapshot

Nu är den här bilden tillgänglig lokalt, men vi måste göra den tillgänglig för pushbox -tjänsten. För att uppnå detta måste vi göra port forwarding. Port vidarebefordran kan göras i routerportalen. Process -id olika för olika routrar. Googla bara för att veta hur du portar fram för en specifik router. Det är vanligtvis tillgängligt under NAT -tjänsten. Efter att du har flyttat framåt kan du komma åt den här porten (dvs. 4440) från din externa IP. Extern IP kan hittas genom att knyta "whats my ip" i google.

Du måste ange den här adressen

dvs.. https://::? action = ögonblicksbild

i pushboxen (som förklaras i nästa steg) så att pushingbox kan komma åt den här bilden och bifoga den till posten och skicka den till dig när det behövs.

Du kan också lagra bilden på sd -kort eftersom Linkit smart 7688 duo också levereras med en sd -kortplats för lagring av information. Mer information om detta finns på:

docs.labs.mediatek.com/resource/linkit-sm…

Steg 6: Konfigurera PushingBox

Konfigurera PushingBox
Konfigurera PushingBox

pushingbox används för att skicka aviseringar om olika varningar i projektet till gmail.

logga in på pushingbox med Google -konto:

gå till mina tjänster lägg till tjänst. det finns många tjänster att välja mellan som Gmail, twitter, push -avisering för Android etc …

välj Gmail (eftersom vi behöver skicka foto som bilaga) och fyll i lämplig gmail -namnkonfiguration och gmail -id för användaren som varningen måste skickas till.

gå till mina scenarier och skapa ett nytt scenario. ge scenariot namn (ex: ALERT) lägg till den tidigare skapade tjänsten.

skriv lämpligt ämne och brödtext i e -postmeddelandet och ange webbadressen för att ta skärmdumpen av webbkameran för att bifoga foto. Skapa olika scenarier för olika alerts.api för att köra ett pushbox -scenario är:

Steg 7: Skapa Alexa Skill med Backendless

Skapa Alexa Skill med Backendless
Skapa Alexa Skill med Backendless
Skapa Alexa Skill med hjälp av Backendless
Skapa Alexa Skill med hjälp av Backendless
Skapa Alexa Skill med hjälp av Backendless
Skapa Alexa Skill med hjälp av Backendless

backendless används för att skapa alexa -färdigheten. Det är en enkel dra -och -släpp -programmering som används för att skapa alexa -skicklighet (eller några program) som kan nås med ett backendless API.

skapa ett konto i backendless:

  • Logga in på ditt konto på ett konto utan gränser. klicka på Skapa app och ge appen ett namn
  • Klicka på Business Logic -ikonen i ikonfältet till vänster. Du kommer att se skärmen API -TJÄNSTER.
  • Klicka på "+" -ikonen för att skapa en ny tjänst. Var noga med att välja KODLÖS i popup -fönstret "Ny tjänst". Ange "AlexaService" för tjänstens namn. Klicka på SPARA -knappen:
  • Backendless skapar API -tjänsten och uppmanar dig att skapa en metod för tjänsten. Detta kommer att vara den metod som kommer att behandla förfrågningar från Alexa. Ange "handleRequest" för metodnamnet. Var noga med att välja POST för REST -operationen och deklarera ett argument med namnet "req" och skriv "Any Object" enligt bilden:
  • Backendless skapar en platshållare för metodens kodlösa logik. Klicka på EDIT -knappen för att börja växla till Codeless Logic Designer. I det skapade funktionsplatshållarblocket klickar du på området där det står "doSomething" och ändrar det till "sendAlexaResponse". Denna funktion används för att få alexa att säga något som kan skickas som argument. Klicka på SPARA -knappen så att funktionen sparas.
  • Klicka på kugghjulsikonen i det lila blocket bredvid ordet "Funktion". Lägg till två argument genom att dra inmatningsblocken enligt bilden nedan. Tilldela namnen på argumenten som "whatToSay" och "waitForResponse". Observera att när du lägger till argument fylls området Context Block automatiskt med blocken som representerar argumentvärden.
  • Ändra funktionens logik så att den ser ut som på bilden. För blocken "Skapa objekt" använder du kugghjulsikonen för att ändra namnet på objektegenskaperna. Glöm inte att spara ditt arbete genom att klicka på SPARA -knappen.
  • Nu när den anpassade funktionen är byggd, växla tillbaka till handleRequest -metoden för AlexaService -tjänsten. Klicka på kategorin Anpassade funktioner i verktygsfältet till vänster och dra blocket sendAlexaResponse för att ansluta till returkontakten för din servicemetod
  • Stegen ovan finns också på deras webbplats: https://backendless.com/developing-alexa-skill-wi…
  • Klicka på "Lägg till ny" -noden under Funktioner i avsnittet BLÄSARE. I det skapade funktionsplatshållarblocket, klicka på området som säger "doSomething" och ändra det till "getIntentName" ändra blocken så att funktionen ser ut som bilden som visas. Detta får avsiktsnamnet baserat på exempeluttalanden. Gå tillbaka till api-tjänster-> hantera begäran i webbläsaravsnittet. Variabler och logik skapas från systemavsnittet. Skapa följande variabler som visas i bilder.
  • därefter lagrar vi avsändningsnamnet för att begära variabel. Och jämför sedan med avsikterna. till exempel om förfrågan är "introduktion" är svarsvariabeln inställd på "hej! Jag kan styra ……." och detta svar läses upp av alexa äntligen. ändra blocket enligt bilden.
  • om förfrågan är LightsOn -avsikt uppdaterar vi thingspeak -kanalen till '0' med hjälp av http get -begäran och samtidigt uppdaterar vi enhetens status (1/0 beroende på På/Av). Samma sak upprepas för LightsOff, FanOn och FanOff.
  • För väder läser vi från kanal för temperatur och fuktighet och lagrar resultatet i svarsvariabel. Eftersom kanalen bara ger värden lägger vi till texter för att göra svaret meningsfullt
  • för ögonblicksbild av vardagsrummet kör vi pushingbox -scenario
  • för enhetsstatus läser vi information från statuskanalen för thingspeak:
  • för aviseringar och varningar som vi läser från varningskanaler (brand, inkräktare och gäst):
  • baserat på de värden som vi får från meddelandefältet motsvarande varningsmeddelanden lagras i variabeln respons0. om det inte finns någon avisering lagras inget aviseringsmeddelande.
  • när meddelandet har lästs upp uppdateras "0" i aviseringskanalerna så att alexa inte läser samma meddelande igen. Sedan äntligen, baserat på begäran, läses variabeln respons0/svar högt.

Steg 8: Konfigurera Alexa Skill i Amazon Developer Console:

Konfigurera Alexa Skill i Amazon Developer Console
Konfigurera Alexa Skill i Amazon Developer Console
Konfigurera Alexa Skill i Amazon Developer Console
Konfigurera Alexa Skill i Amazon Developer Console
Konfigurera Alexa Skill i Amazon Developer Console
Konfigurera Alexa Skill i Amazon Developer Console

gå till amazon utvecklarkonsol och logga in med amazon -konto.

gå till utvecklarkonsolen och klicka på fliken ALEXA. Klicka på alexa skills kit för att komma igång.

skapa anpassad färdighetstyp, ge färdighetens namn och anropsnamn. respektive avsikter och exempeluttalanden anges i koden.

på konfigurationsfliken väljer du HTTPS som tjänstens slutpunktstyp, fyller standardadressen med API -URL från backendless. Välj det andra alternativet i Certifikat för standard slutpunkt i SSL -certifikat. Du kan också testa färdigheten med hjälp av testsimulator.

När testet är klart kan du publicera färdigheten med nödvändig publiceringsinformation.

Steg 9: Slutlig installation och slut

Slutlig installation och slut!
Slutlig installation och slut!
Slutlig installation och slut!
Slutlig installation och slut!

Gör kretsanslutningen enligt bilden.

Ibland fungerar ESP8266 på grund av otillräcklig ström. Så även om det inte nämns i kretsen rekommenderas det att man driver ESP8266 från en separat 3.3v -källa. Om du använder en powerbank, se till att minska spänningen från 5v till 3.3v med en 3.3v spänningsregulator. Ladda upp programmet till ESP8266 och arduino. Jag har visat anslutningen till lampan, samma sak kan utökas till fläkt eller andra enheter. Slutligen använd amazon echo eller echosim.io för att testa din skicklighet.

Du måste aktivera färdigheten med anropsnamnet (som i mitt fall - "myhome"). Ibland fungerar det inte om det används utan anropsnamn som jag har visat ett par gånger i min video

Hoppas du tyckte om handledningen!

Tack!

Rekommenderad: