Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Alexa-gebaseerde Smart Home Monitoring

Componenten en benodigdheden

Arduino UNO
× 1
Espressief ESP8266 ESP-01
× 1
DHT11 temperatuur- en vochtigheidssensor (4 pinnen)
× 1
ControlEverything.com 4-KANAALS RELAISCONTROLLER VOOR I2C
× 1
IR obstakelsensor
× 1
camera
× 1
Jumperdraden (algemeen)
× 1

Apps en online services

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

Over dit project

Inleiding:

In de huidige wereld brengen mensen meer tijd door op het werk dan thuis. Daarom is er behoefte aan een huisbewakingssysteem waarmee mensen de omstandigheden van het huis kunnen leren kennen terwijl ze aan het werk zijn. Het zou nog beter zijn als men gewoon tijdens werkuren "iemand" naar zijn huis kan vragen. Dit kan worden bereikt door gebruik te maken van Amazon Alexa als assistent die de gebruiker de benodigde informatie over zijn huis kan geven.

Niet alleen werkplek de gebruikers kunnen de staat van het huis overal ter wereld leren kennen, zolang ze een internetverbinding en een Amazon Alexa-apparaat hebben.

De volgende functies zijn geïmplementeerd in dit project:

1) Bedien het huishouden Apparaten zoals ventilator en licht

2) Vertelt de status van de apparaten

3) Vertelt de weersomstandigheden van het huis (temperatuur en vochtigheid)

4) Stuurt indien nodig een snapshot van het interieur van het huis naar de gebruiker via Gmail.

5) Stuurt een melding in het geval van -

* Indringer (stuurt ook foto)

* Brand

* Gast (stuurt ook foto)

Stappen betrokken bij het project:

STAP 1:Programmeren van de Arduino en ESP8266

Download de Arduino IDE Van de officiële website:https://www.arduino.cc/en/Main/Software

Open Arduino IDE en ga naar bestand-> voorkeuren-> in extra bordmanager-URL-type - http://arduino.esp8266.com/stable/package_esp8266com_index.json

Ga naar tools -> boards -> Board Manager -> en installeer het eindelijk gevonden esp8266-pakket.

Arduino programmeren steek gewoon de USB-kabel van de arduino naar de computer en selecteer Arduino/Genuino UNO in tools-> boards. Zorg er ook voor dat u COM-poorten met rechten selecteert in Tools (COM-poortnummer is te vinden in Apparaatbeheer). Schrijf het vereiste programma, compileer het en klik op uploaden als er geen fouten zijn.

Om ESP8266 te programmeren maak de verbinding zoals weergegeven in het diagram

sluit de usb van arduino naar computer. In tools-> board-> selecteer Generic ESP8266 en selecteer ook de juiste COM-poort. Schrijf het vereiste programma, compileer het en klik op uploaden als er geen fouten zijn. Zorg ervoor dat je Arduino RST verbindt met GND (arduino werkt als een programmeur voor ESP8266).

In dit project wordt eerst de ESP8266 geprogrammeerd en daarna worden de circuitverbindingen verwijderd. Vervolgens wordt het circuit opnieuw aangesloten zoals weergegeven in de afbeelding met de naam "Circuitaansluitingen". En dan is de Arduino geprogrammeerd

STAP 2:Thingspeak.com configureren

Maak een account aan op thingspeak.com.

we maken gebruik van kanalen in thingspeak om de apparaatbesturingsinformatie op te slaan en naar arduino/alexa te leiden. ook slaan we de temperatuur- en vochtigheidswaarden op in de kanalen. Het is als een opslaglocatie voor de informatie.

ga naar kanalen--> mijn kanalen en maak een nieuw kanaal aan. Geef een naam en beschrijving aan je kanalen.

in ons project hebben we 8 kanalen nodig (u kunt het werk doen met minder kanalen, maar het zal een beetje ingewikkeld zijn tijdens het programmeren). Ook thingspeak heeft een tijdsbeperking tijdens het updaten van een kanaal. Er moet een pauze van 10-15 seconden zitten tussen opeenvolgende updates van een bepaald kanaal.

Hieronder vindt u acht kanalen met hun waarden en betekenis

kanaalnaam (waarde1-betekenis, waarde2-betekenis, enz.):

1) Apparaatbediening (0 -lightON, 1-lightOff, 2- fan ON, 3- Fan Off)

2) lichtstatus (0- licht uit, 1- licht aan)

3) ventilatorstatus (0- ventilator uit, 1- ventilator aan)

4) vochtigheid (waarde van vochtigheid)

5) temperatuur (waarde van temperatuur)

6) inbraakmelding (1- indringerwaarschuwing)

7) brandmelding (1- brandwaarschuwing)

8)gastmelding (1-gastmelding)

wanneer u op een kanaal klikt, kunt u de kanaal-ID zien en API-sleutels schrijven op het tabblad API-sleutels. kanaal-ID is vereist om de informatie/waarde in het kanaal te krijgen. en schrijfsleutel is vereist om een ​​waarde in het kanaal op te slaan.

http-verzoek voor het bijwerken van een kanaal is:

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

wordt vervangen door corresponderende schrijftoetsen van het kanaal en de waarde kan zijn (0/1 in geval van apparaatbesturing of temperatuur-/vochtigheidswaarden)

http-verzoek voor het lezen van waarde van een kanaal is:

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

wordt vervangen door de specifieke kanaal-ID van het kanaal waarvan we willen lezen.

STAP 3:Het programma

Het programma is verdeeld in 3 delen:

A) Programma voor Arduino :het programma voor arduino is heel eenvoudig. Het ontvangt de gegevens van de ESP8266 serieel en op basis van de ontvangen gegevens worden de apparaten aangestuurd. Meer informatie over het programma is te vinden in de opmerkingen in het programma zelf.

B) Programma voor ESP8266 : het programma voor ESP8266 omvat 3 dingen

1) de temperatuur en vochtigheid bijwerken met behulp van http-verzoek

client.print(String("GET ") + "/update?key=&field1="+humidity+" HTTP/1.1\r\n" + "Host:" + host + " \r\n" + "Verbinding:sluiten\r\n\r\n"); //update vochtigheid client.print(String("GET") + "/update?key=&field1="+temperature+" HTTP/1.1\r\n" + "Host:" + host + "\r \n" + "Verbinding:sluiten\r\n\r\n"); // update temperatuur 

de wordt vervangen door de corresponderende schrijftoets in het thingspeak-kanaal voor respectievelijk vochtigheid en temperatuur. en host is api.thingspeak.com.

download dht-bibliotheek van:https://github.com/adafruit/DHT-sensor-library

2) lezen van corresponderende kanalen van thingspeak en besturingsapparaat op basis van de verkregen waarden:

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

waarbij wordt vervangen door de corresponderende kanaal-ID die gevonden is in thingspeak.

3) Alarm verzenden in geval van hoge temperatuur via pushbox

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

waarbij wordt vervangen door uw apparaat-ID in pushbox.

STAP 4:Linkit smart 7688 duo en webcam configureren

Ik n deze projectwebcam en linkit smart 7688 duo worden gebruikt om de vereiste foto te maken en naar de gebruiker te sturen. Je kunt ook een Arduino-cameramodule gebruiken en deze koppelen aan Arduino of je kunt elke IP-camera gebruiken.

houd de wifi-knop op de linkit smart 7688 20 seconden ingedrukt om het bord te resetten. Nadat de wifi-instelling is gereset, kunt u de naam van het toegangspunt zien in de draadloze netwerkverbindingen. Verbind nu de computer met dat netwerk.

nadat u het hebt aangesloten, opent u de browser en typt u 192.168.100.1 in de adresbalk. Je zult zijn portaal kunnen zien.

stel een wachtwoord in om in te loggen op de portal.

Nadat u bent ingelogd, gaat u naar het tabblad Netwerk en selecteert u Stationsmodus (we hebben het nodig (linkit smart 7688 duo) om toegang te krijgen tot internet) en verbindt u het met uw wifi-netwerk en drukt u op Configureren en opnieuw opstarten.

Nadat het bord opnieuw is opgestart, krijgt het een lokaal IP-adres toegewezen. Ontdek het adres met behulp van IP-tools of uw routerportaal. In mijn geval was het 192.168.1.4.

Typ nu het lokale IP-adres in de adresbalk van de browser. zorg ervoor dat de computer is aangesloten op hetzelfde netwerk als de linkit smart. U wordt gevraagd om opnieuw in te loggen.

Om streaming vanaf de webcam in te schakelen, moet u MJPG-streamer inschakelen (mjpg-streamer is een opdrachtregeltoepassing die JPEG-frames kopieert van een of meer invoerplug-ins naar meerdere uitvoerplug-ins). Ga hiervoor in de portal naar OpenWrt-locatie in de rechterbovenhoek. u moet opnieuw inloggen.

Nadat u bent ingelogd, gaat u naar het servicetabblad en vinkt u MJPG-streamer inschakelen aan en wijst u een poortnummer toe voor deze service. Ik heb 4440 toegewezen. Klik op opslaan en toepassen.

Na de installatie kunt u uw webcam aansluiten op de linkit smart 7688 duo usb-host via een OTG-kabel.

Om de Stream te zien, opent u de browser en typt u : in de adresbalk. in mijn geval is het 192.168.1.4:4400

typ het commando :?action=snapshot

. om de snapshot te maken

Nu is deze afbeelding lokaal beschikbaar, maar we moeten deze beschikbaar maken voor de pushbox-service. Om dit te bereiken moeten we port forwarding doen. Port forwarding kan worden gedaan in het routerportaal. De proces-ID verschilt voor verschillende routers. Google gewoon om te weten hoe je moet port forwarden voor een specifieke router. Het is meestal beschikbaar onder NAT-service.

Nadat u port forward gebruikt, heeft u toegang tot deze poort (dwz.. 4440) vanaf uw externe IP. externe IP kan worden gevonden door "wat is mijn ip" in google te binden.

U moet dit adres, bijv. http://:?action=snapshot in de pushbox plaatsen (wat in de volgende stap wordt uitgelegd), zodat pushbox toegang heeft tot deze afbeelding en deze aan de e-mail kan toevoegen en stuur het naar u wanneer nodig.

Je kunt de afbeelding ook op een SD-kaart opslaan, aangezien de Linkit smart 7688 duo ook wordt geleverd met een SD-kaartsleuf voor het opslaan van informatie.

meer informatie hierover is te vinden op:https://docs.labs.mediatek.com/resource/linkit-smart-7688/en/get-started/get-started-with-the-linkit-smart-7688-duo -ontwikkelingsbord/

STAP 5:PushingBox configureren

Pushbox wordt gebruikt om meldingen over verschillende waarschuwingen in het project naar Gmail te sturen.

aanmelden bij Pushbox met behulp van een Google-account:https://www.pushingbox.com/

ga naar mijn diensten--> dienst toevoegen. er zijn veel services om uit te kiezen, zoals Gmail, Twitter, pushmeldingen voor Android enz...

selecteer Gmail (omdat we een foto als bijlage moeten verzenden) en vul de juiste Gmail-naamconfiguratie en Gmail-ID in van de gebruiker naar wie de waarschuwing moet worden verzonden.

ga naar mijn scenario's en maak een nieuw scenario aan. geef het scenario een naam (bijv. ALERT) voeg de eerder gemaakte service toe.

schrijf een geschikt onderwerp en hoofdtekst van de e-mail en voer de url in om de schermafbeelding van de webcam te maken voor het bijvoegen van een foto. Maak verschillende scenario's voor verschillende waarschuwingen.

api voor het uitvoeren van een pushbox-scenario is:http://api.pushingbox.com/pushingbox?devid=

STAP 6:Alexa-vaardigheid creëren met Backendless

backendless wordt gebruikt om de alexa-vaardigheid te creëren. Het is een eenvoudige drag-and-drop-programmering gebruikt om alexa-vaardigheid (of andere programma's) te maken die toegankelijk zijn via een backendless API.

maak een account aan in backendless:https://backendless.com/

  • Log in op uw account in een backendless-account. klik op App maken en geef je app een naam/
  • Klik op het Business Logic-pictogram in de pictogrammenbalk aan de linkerkant. U ziet het scherm API SERVICES.
  • Klik op het pictogram '+' om een ​​nieuwe service te maken. Zorg ervoor dat u CODELESS selecteert in de pop-up "Nieuwe service". Voer "AlexaService" in voor de servicenaam. Klik op de OPSLAAN-knop:
  • Backendless maakt de API-service aan en zal u vragen om een ​​methode voor de service te maken. Dit zal de methode zijn die verzoeken van Alexa zal verwerken. Voer "handleRequest" in voor de naam van de methode. Zorg ervoor dat u POST selecteert voor de REST-bewerking en declareer een argument met de naam "req" en typ "Any Object" zoals hieronder weergegeven:

Backendless creëert een tijdelijke aanduiding voor de codeloze logica van de methode. Klik op de EDIT-knop om over te schakelen naar de Codeless Logic Designer.

Klik in het gemaakte functie-placeholder-blok op het gebied met de tekst "doSomething" en verander het in "sendAlexaResponse". Deze functie wordt gebruikt om alexa iets te laten zeggen dat als argument kan worden doorgegeven. Klik op de knop OPSLAAN zodat de functie wordt opgeslagen:

Klik op het tandwielpictogram in het paarse blok naast het woord 'Functie'. Voeg twee argumenten toe door de invoerblokken te slepen zoals weergegeven in de onderstaande afbeelding. Wijs de namen van de argumenten toe als "whatToSay" en "waitForResponse". Merk op dat wanneer u argumenten toevoegt, het gebied Contextblokken automatisch wordt gevuld met de blokken die argumentwaarden vertegenwoordigen:

Pas de logica van de functie aan zodat deze eruitziet als in de onderstaande afbeelding. Gebruik voor de blokken "Objecten maken" het tandwielpictogram om de naam van de objecteigenschappen te wijzigen. Vergeet niet uw werk op te slaan door op de knop OPSLAAN te klikken.

Nu de aangepaste functie is gebouwd, schakelt u terug naar de handleRequest-methode van de AlexaService-service. Klik op de categorie Aangepaste functies in de werkbalk aan de linkerkant en sleep het sendAlexaResponse-blok om verbinding te maken met de retourconnector van uw servicemethode:

de bovenstaande stappen zijn ook te vinden op hun 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/

Klik op het knooppunt "Nieuwe toevoegen" onder Functies in de BROWSER-sectie. Klik in het gemaakte functie-placeholder-blok op het gebied met de tekst "doSomething" en verander dit in "getIntentName"

pas de blokken aan zodat de functie er als volgt uitziet:

dit krijgt de intentienaam op basis van voorbeelduitingen. Ga terug naar api-services->-->verzoek verwerken in het browsergedeelte. Variabelen en logica worden gemaakt vanuit de systeemsectie. Maak de volgende variabelen:

vervolgens slaan we de intentienaam op om variabele aan te vragen. En vergelijk dan met de bedoelingen. als het verzoek bijvoorbeeld "introductie" is, wordt de variabele response ingesteld op "hi! I can control......." en dit antwoord wordt eindelijk hardop voorgelezen door Alexa.

wijzig het blok zoals hieronder getoond:

als het verzoek de bedoeling van LightsOn is, updaten we het thingspeak-kanaal naar '0' met behulp van http get-verzoek en werken we tegelijkertijd de apparaatstatus bij (1/0 afhankelijk van Aan/Uit). Hetzelfde wordt herhaald voor LightsOff, FanOn en FanOff.

Voor het weer lezen we uit het kanaal Temperatuur en vochtigheid en slaan het resultaat op in de variabele reageren. Omdat het kanaal alleen waarden geeft, voegen we teksten toe om de reactie zinvol te maken:

voor een momentopname van de woonkamer gebruiken we het pushbox-scenario:

voor apparaatstatus lezen we informatie uit het statuskanaal van thingspeak:

voor meldingen en waarschuwingen die we lezen van waarschuwingskanalen (brand, indringer en gast):

op basis van de waarden die we uit het meldingsveld krijgen, worden overeenkomstige waarschuwingsberichten opgeslagen in de variabele respond0. als er geen melding is, wordt er geen meldingsbericht opgeslagen.

zodra de melding is uitgelezen, wordt de '0' bijgewerkt in de meldingskanalen, zodat Alexa dezelfde melding niet opnieuw zal lezen. Dan wordt, op basis van het verzoek, de variabele respond0/respond hardop voorgelezen.

PS:Nadat u het vereiste model in backendless hebt gemaakt, klikt u op model implementeren in de rechterbovenhoek van het codeloze scherm om het model te implementeren.

STAP 7:Alexa-vaardigheid configureren in Amazon Developer Console:

ga naar de amazon-ontwikkelaarsconsole en meld u aan met een amazon-account. https://developer.amazon.com/

ga naar de ontwikkelaarsconsole en klik op het ALEXA-tabblad. Klik op alexa skills kit aan de slag.

maak een aangepast vaardigheidstype, geef de vaardigheid een naam en aanroepnaam.

de respectievelijke intenties en voorbeelduitingen worden gegeven in de onderstaande code.

{ "languageModel":{ "intents":[ { "name":"AMAZON.CancelIntent", "samples":[] }, { "name":"AMAZON.HelpIntent", "samples" :[] }, { "name":"AMAZON.StopIntent", "samples":[] }, { "name":"Camera", "samples":[ "stuur een foto van mijn woonkamer", " stuur een momentopname van mijn huis", "stuur een foto van mijn woonkamer", "stuur een foto van mijn huis" ], "slots":[] }, { "name":"FanOff", "samples ":[ "ventilator uitschakelen", "ventilator uitschakelen", "ventilator uitschakelen", "ventilator uitschakelen" ], "slots":[] }, { "name":"FanOn", "samples" :[ "ventilator inschakelen", "ventilator inschakelen", "ventilator inschakelen", "ventilator inschakelen" ], "slots":[] }, { "name":"Inleiding", "samples":[ "wat u kunt doen", "wat kunt u doen", "wat kunt u voor mij doen" ], "slots":[] }, { "naam":"LightsOff", "samples":[ "uitschakelen lichten", "lichten uit", "doof de lichten", "doof de lichten" ], "slots":[] }, { "name":"LightsOn", "samples":[ "doe lichten aan" ", "licht aan", "licht aan", "schakel de lichten in" ], "slots":[] }, { "naam":"Melding", "samples":[ "wat zijn mijn meldingen", "zijn er meldingen", "zijn er updates" , "lees mijn meldingen voor" ], "slots":[] }, { "name":"Status", "samples":[ "wat is de status van mijn apparaat", "wat is de status van mijn apparaten" ], "slots":[] }, { "name":"Weer", "samples":[ "wat is de weersomstandigheden van mijn huis", "wat is het weer van mijn huis", "wat is het weer", "wat is de temperatuur van mijn huis", "wat is de temperatuur" ], "slots":[] } ], "invocationName":"mijn huis" }} 

selecteer in het configuratietabblad HTTPS als type service-eindpunt vul de standaard-URL met de API-URL van backendless.

selecteer de 2e optie in Certificaat voor standaard eindpunt in SSL-certificaat. Je kunt de vaardigheid ook testen met een testsimulator.

Nadat de test is voltooid, kunt u de vaardigheid publiceren met de vereiste publicatie-informatie.

STAP 8:Definitieve installatie en afwerking!

maak de circuitaansluiting zoals hieronder weergegeven

Soms ESP8266 zal storing omdat van onvoldoende huidig. Dus, hoewel niet vermeld in de circuit, het is aanbevolen om de ESP8266 van aparte 3.3v te voorzien bron. Als jij zijn met behulp van een kracht bank zorg ervoor dat je de spanning verlaagt van 5v naar 3,3v met behulp van een 3,3v spanningsregelaar.

Upload programma naar ESP8266 en arduino. Ik heb de verbinding met de lamp laten zien, hetzelfde kan worden uitgebreid naar ventilator of andere apparaten.

Gebruik ten slotte amazon echo of echosim.io om je vaardigheden te testen.

Jij moeten activeren de vaardigheid met behulp van de aanroep naam ( als is mijn case - "mijn thuis"). Soms het niet werk als het is gebruikt zonder aanroep naam als Ik hebben weergegeven paar van tijden in mijn video.

Ik hoop dat je de tutorial leuk vond!

Bedankt!

Code

  • Smart_bell_ESP8266.ino
  • Home_monitor_arduino.ino
  • Home_Monitor_ESP8266.ino
Smart_bell_ESP8266.inoArduino
Code voor ESP8266 om waarschuwingen te krijgen over indringers en gasten
/* * Deze schets is een implementatie van slimme bel en huisbeveiliging * */#include #include//----- -------------------------------------// variabelen//-------- ----------------------------------int indringer=0,gast=2; // pin 0 als indringerwaarschuwing en pin2 als gastwaarschuwingconst char* ssid ="SSID"; // uw SSID van WIFIconst char * wachtwoord ="wachtwoord"; // wachtwoord van Wifi//------------------------------------------- -const char* host ="api.thingspeak.com";void setup() {Serial.begin(115200); vertraging(10); // We beginnen door verbinding te maken met een WiFi-netwerk Serial.println(); Serieel.println(); Serial.print("Verbinding maken met "); Serieel.println(ssid); /* Stel de ESP8266 expliciet in als een WiFi-client, anders zou deze standaard proberen op te treden als zowel een client als een toegangspunt en netwerkproblemen veroorzaken met uw andere WiFi-apparaten op uw WiFi-netwerk. */ WiFi.modus (WIFI_STA); WiFi.begin(ssid, wachtwoord); while (WiFi.status() !=WL_CONNECTED) { delay(500); Serieel.print("."); } Serieel.println(""); Serial.println("WiFi verbonden"); Serial.println("IP-adres:"); Serial.println(WiFi.localIP());}int waarde =0;int x,y=0,z,k=0;void loop() { delay(1000); ++waarde; Serial.print("verbinden met "); Serieel.println(host); // Gebruik WiFiClient-klasse om TCP-verbindingen te maken WiFiClient-client; const int httpPort =80; if (!client.connect(host, httpPort)) { Serial.println("verbinding mislukt"); opbrengst; } Serial.print("Verzoekende URL:"); //============================================================================================================// indringerwaarschuwing //============================================================================================================x=digitalRead (indringer);//Serial.println(x); if(x==0) { y=0; } if(x==1&&y==0) { Serial.println("Verzendwaarschuwing Pls wacht....."); vertraging (1000); String host1="api.pushingbox.com"; client.print(String("GET") + "/pushingbox?devid= HTTP/1.1\r\n" + "Host:" + host1 + "\r\n" + "Verbinding:close\r\ n\r\n"); // uitvoeren van push box api client.print(String("GET") + "/update?api_key=&field1=1 HTTP/1.1\r\n" + "Host:" + host + "\r\n " + "Verbinding:close\r\n\r\n"); // updaten indringer melding vertraging (1000); y=1; } //============================================================================================================// Einde inbraakalarm//============================================================================================================//============================================================================================================// gast alert //============================================================================================================lange t1; z=digitalRead(gast); if(z==0 &&(millis()>=t1+300000)) // wacht 5 minuten om te voorkomen dat meerdere waarschuwingen worden verzonden vanwege het indrukken van meerdere deurbellen { k=0; } if(x==1&&k==0) { t1=millis(); // het opslaan van de huidige tijdstempel in t1 Serial.println ("Sending Alert Pls Wait ..."); vertraging (1000); //vertraging voor het verzenden van waarschuwingen en switch-debouncing String host1="api.pushingbox.com"; client.print(String("GET") + "/pushingbox?devid= HTTP/1.1\r\n" + "Host:" + host1 + "\r\n" + "Verbinding:close\r\ n\r\n"); // uitvoeren van push box api client.print(String("GET") + "/update?api_key=&field1=1 HTTP/1.1\r\n" + "Host:" + host + "\r\n " + "Verbinding:close\r\n\r\n"); //vertraging voor gastmeldingen bijwerken (1000); k=1; } //============================================================================================================// Einde van gastwaarschuwing//============================================================================================================ongetekende lange time-out =millis(); while (client.available() ==0) { if (millis() - time-out> 5000) { Serial.println(">>> Client time-out!"); klant.stop(); opbrengst; } } //Serial.println("sluit verbinding");}
Home_monitor_arduino.inoArduino
Code voor Arduino om apparaten te bedienen
//Deze schets in de implementatie van domotica #include // import the serial library#include//--------- --------------------------------// pindefinities//------------ ---------------------------- #define Light 2 // pin 2 om licht te regelen #define fan 3 // pin 3 om te regelen ventilator//------------------------------------------// variabelen// ------------------------------------------char e;int p=0, q=0; // deze variabelen voorkomen het AAN/UIT schakelen van reeds AAN/UIT apparaten SoftwareSerial home_monitor (10, 11); // RX, TXchar control_data; // de gegevens verzonden via Bluetoothvoid setup () {// plaats hier uw setup-code om een ​​keer uit te voeren:home_monitor.begin (115200); Serieel.begin(9600); pinMode(13,OUTPUT);}void loop() {// plaats hier uw hoofdcode om herhaaldelijk uit te voeren:if (home_monitor.available()){ control_data=home_monitor.read(); // het verkrijgen van besturingsinformatie van ESP8266 serieel e=control_data; Serial.print(control_data); //============================================================================================================// Apparaatbesturing //============================================================================================================// Vereiste bewerkingen uitvoeren op basis van de waarde van kanaal //------------- ------------------------------------------------ // LICHT //----------------------------------------------- -------------- if (e=='0'&&p==0) //Licht AAN {digitalWrite (Licht, LAAG); p=1; } if(e=='1'&&p==1) //Licht uit {digitalWrite(Light,HIGH); p=0; } //----------------------------------------------- -------------- // Verwarming //------------------------------- ------------------------------ if(e=='2'&&q==0) {digitalWrite(fan,HIGH); q=1; } if(e=='3'&&q==1) { digitalWrite(fan,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(); Serieel.begin(115200); vertraging(10); // We start by connecting to a WiFi network Serial.println(); Serieel.println(); Serial.print("Verbinding maken met "); Serieel.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, wachtwoord); while (WiFi.status() !=WL_CONNECTED) { delay(500); Serieel.print("."); } Serieel.println(""); Serial.println("WiFi verbonden"); Serial.println("IP-adres:"); 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"); opbrengst; } 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......."); vertraging (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); Serieel.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 !"); klant.stop(); opbrengst; } } // 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");}

Schema's


Productieproces

  1. Toepassingen van domotica
  2. RFID-tags gebruiken voor het bewaken van huisbeveiliging
  3. LoRa-gebaseerde Smart City-luchtkwaliteitsbewaking
  4. Multitemperatuursensor
  5. CO2-monitoring met K30-sensor
  6. Alexa, zet deze lamp aan:slimme 3D-sensor voor Amazon Echo
  7. Bewateringssysteem voor planten voor thuis
  8. Arduino Home Controller geactiveerd door Alexa
  9. SMART temperatuurbewaking voor scholen
  10. Lokaal weerstation
  11. SmartWristband