Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Surveillance de la maison intelligente basée sur Alexa

Composants et fournitures

Arduino UNO
× 1
Espressif ESP8266 ESP-01
× 1
Capteur de température et d'humidité DHT11 (4 broches)
× 1
ControlEverything.com CONTRLEUR DE RELAIS 4 CANAUX POUR I2C
× 1
Capteur d'obstacle IR
× 1
caméra
× 1
Câbles de raccordement (générique)
× 1

Applications et services en ligne

Arduino IDE
Kit de compétences Amazon Alexa Alexa
Amazon Alexa echosim.io
API ThingSpeak
Backend
Pushingbox

À propos de ce projet

Présentation :

Dans le monde actuel, les gens passent plus de temps sur leur lieu de travail qu'à la maison. Par conséquent, il existe un besoin d'un système de surveillance à domicile où les gens peuvent connaître les conditions de la maison pendant qu'ils sont au travail. Ce serait encore mieux si l'on pouvait simplement demander à « quelqu'un » au sujet de sa maison pendant les heures de travail. Cela peut être accompli en utilisant Amazon Alexa comme assistant qui peut donner à l'utilisateur les informations nécessaires sur sa maison.

Non seulement le lieu de travail, les utilisateurs peuvent connaître l'état de la maison à n'importe quel endroit dans le monde tant qu'ils disposent d'une connexion Internet et d'un appareil Amazon Alexa.

Les fonctions suivantes sont implémentées dans ce projet :

1) Contrôlez les appareils ménagers comme le ventilateur et la lumière

2) Indique l'état des appareils

3) Indique les conditions météorologiques de la maison (température et humidité)

4) Envoie l'instantané de l'intérieur de la maison à l'utilisateur via Gmail si nécessaire.

5) Envoie une notification en cas de -

* Intrus (envoie également une photo)

* Feu

* Invité (envoie également une photo)

Étapes impliquées dans le projet :

ÉTAPE 1 :Programmation de l'Arduino et de l'ESP8266

Téléchargez l'IDE Arduino à partir du site officiel :https://www.arduino.cc/en/Main/Software

Ouvrez Arduino IDE et accédez à fichier-> préférences-> dans le type d'URL du gestionnaire de carte supplémentaire - http://arduino.esp8266.com/stable/package_esp8266com_index.json

Allez dans outils -> cartes -> Board Manager -> et installez le package esp8266 enfin trouvé.

Pour programmer arduino Branchez simplement le câble USB de l'arduino à l'ordinateur et sélectionnez Arduino/Genuino UNO dans outils-> cartes. Assurez-vous également de sélectionner les droits des ports COM dans Outils (le numéro de port COM peut être trouvé dans le Gestionnaire de périphériques). Écrivez le programme requis, compilez-le et cliquez sur télécharger s'il n'y a pas d'erreurs.

Pour programmer ESP8266 faire la connexion comme indiqué sur le schéma

connectez l'usb de l'arduino à l'ordinateur. Dans outils-> carte-> sélectionnez Generic ESP8266 et sélectionnez également le bon port COM. Écrivez le programme requis, compilez-le et cliquez sur télécharger s'il n'y a pas d'erreurs. Assurez-vous de connecter Arduino RST à GND (arduino agit comme un programmeur à ESP8266).

Dans ce projet, l'ESP8266 est d'abord programmé, puis les connexions du circuit sont supprimées. Ensuite, le circuit est reconnecté comme indiqué dans la figure intitulée « Connexions du circuit ». Et puis l'arduino est programmé

ÉTAPE 2 :Configuration de Thingspeak.com

Créez un compte sur Thingspeak.com.

nous utilisons des canaux dans le langage des choses pour stocker les informations de contrôle de l'appareil et les acheminer vers arduino/alexa. nous stockons également les valeurs de température et d'humidité dans les canaux. C'est comme un lieu de stockage pour les informations.

allez dans les chaînes -> mes chaînes et créez une nouvelle chaîne. Donnez un nom et une description à vos chaînes.

dans notre projet, nous avons besoin de 8 canaux (vous pouvez faire le travail en utilisant moins de canaux mais ce sera un peu compliqué lors de la programmation). De plus, Thingspeak a une contrainte de temps lors de la mise à jour d'un canal. Il doit y avoir un intervalle de 10 à 15 secondes entre les mises à jour successives d'un canal particulier.

Huit canaux avec leurs valeurs et leur signification sont donnés ci-dessous

nom du canal (valeur1-sens, valeur2-sens, etc.) :

1) Contrôle de l'appareil (0 -lightON, 1- lightOff, 2- fan ON, 3- Fan Off)

2) état du voyant (0- voyant éteint, 1- voyant allumé)

3) état du ventilateur (0- ventilateur éteint, 1- ventilateur allumé)

4) humidité (valeur de l'humidité)

5) température (valeur de la température)

6) notification d'intrus (1-alerte d'intrus)

7) notification d'incendie (1- alerte d'incendie)

8) notification d'invité (1- alerte d'invité)

lorsque vous cliquez sur n'importe quel canal, vous pouvez voir son identifiant de canal et écrire des clés API dans l'onglet Clés API. L'identifiant du canal est requis pour obtenir les informations/valeurs dans le canal. et la clé d'écriture est requise pour stocker une valeur dans le canal.

La requête http pour la mise à jour d'un canal est :

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

La est remplacée par les touches d'écriture correspondantes du canal et la valeur peut être (0/1 en cas de contrôle de l'appareil ou des valeurs de température/humidité)

La requête http pour lire la valeur d'un canal est :

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

est remplacé par l'identifiant de canal particulier du canal à partir duquel nous voulons lire.

ÉTAPE 3 :Le programme

Le programme est divisé en 3 parties :

A) Programme pour Arduino :le programme pour arduino est très simple. Il reçoit les données de l'ESP8266 en série et sur la base des données reçues, les appareils sont contrôlés. Vous trouverez plus d'informations sur le programme dans les commentaires du programme lui-même.

B) Programme pour ESP8266  : le programme pour ESP8266 implique 3 choses

1) mise à jour de la température et de l'humidité à l'aide d'une requête http

client.print(String("GET ") + "/update?key=&field1="+humidity+" HTTP/1.1\r\n" + "Host :" + host + " \r\n" + "Connexion :fermer\r\n\r\n"); //mettre à jour l'humidité client.print(String("GET ") + "/update?key=&field1="+temperature+" HTTP/1.1\r\n" + "Host:" + host + "\r \n" + "Connexion :fermer\r\n\r\n"); // mettre à jour la température 

la est remplacée par la touche d'écriture correspondante trouvée dans le canal Thingspeak pour l'humidité et la température respectivement. et l'hôte est api.thingspeak.com.

téléchargez la bibliothèque dht à partir de :https://github.com/adafruit/DHT-sensor-library

2) lecture à partir des canaux correspondants de Thingspeak et dispositif de contrôle en fonction des valeurs obtenues :

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

est remplacé par l'identifiant de canal correspondant trouvé dans Thingspeak.

3) Envoi d'alerte en cas de température élevée via push box

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

est remplacé par l'identifiant de votre appareil dans pushbox.

ÉTAPE 4 :Configuration du linkit smart 7688 duo et de la webcam

Je Dans ce projet, la webcam et le linkit smart 7688 duo sont utilisés pour capturer la photo requise et l'envoyer à l'utilisateur. Vous pouvez également utiliser le module de caméra arduino et l'interfacer avec arduino ou utiliser n'importe quelle caméra IP.

appuyez et maintenez enfoncé le bouton wifi sur le linkit smart 7688 pendant 20 secondes pour réinitialiser la carte. Ensuite, une fois les paramètres wifi réinitialisés, vous pourrez voir le nom de son point d'accès dans les connexions réseau sans fil. Connectez maintenant l'ordinateur à ce réseau.

une fois connecté, ouvrez le navigateur et tapez 192.168.100.1 dans la barre d'adresse. Vous pourrez voir son portail.

définir un mot de passe pour se connecter à son portail.

Après vous être connecté, allez dans l'onglet réseau et sélectionnez le mode Station (nous en avons besoin (linkit smart 7688 duo) pour accéder à Internet) et connectez-le à votre réseau Wifi et appuyez sur Configurer et redémarrer.

Après le redémarrage de la carte, une adresse IP locale lui sera attribuée. Découvrez l'adresse à l'aide de n'importe quel outil IP ou du portail de votre routeur. Dans mon cas, c'était 192.168.1.4.

Tapez maintenant l'adresse IP locale dans la barre d'adresse du navigateur. assurez-vous que l'ordinateur est connecté au même réseau que le linkit smart. Il vous sera demandé de vous connecter à nouveau.

Pour activer le streaming depuis la webcam, vous devez activer le streamer MJPG (mjpg-streamer est une application en ligne de commande qui copie les images JPEG d'un ou plusieurs plugins d'entrée vers plusieurs plugins de sortie). Pour ce faire, dans le portail, accédez à l'emplacement OpenWrt en haut à droite. vous devez vous reconnecter.

Après vous être connecté, allez dans l'onglet service et cochez activer le streamer MJPG et attribuez un numéro de port pour ce service. J'ai attribué 4440. Cliquez sur Enregistrer et appliquer.

Après la configuration, vous pouvez connecter votre webcam à l'hôte usb linkit smart 7688 duo via un câble OTG.

Maintenant, pour voir le flux, ouvrez le navigateur et tapez : dans la barre d'adresse. dans mon cas c'est 192.168.1.4:4400

pour prendre l'instantané, tapez la commande :?action=snapshot

Maintenant, cette image est disponible localement, mais nous devons la rendre disponible pour le service push box. Pour y parvenir, nous devons effectuer une redirection de port. La redirection de port peut être effectuée dans le portail du routeur. L'identifiant de processus est différent pour les différents routeurs. Il suffit de google pour savoir comment transférer le port pour un routeur spécifique. Il est généralement disponible sous le service NAT.

Après avoir utilisé la redirection de port, vous pouvez accéder à ce port (c.-à-d. 4440) à partir de votre IP externe. L'adresse IP externe peut être trouvée en saisissant "Whats my IP" dans Google.

Vous devez mettre cette adresse, c'est-à-dire http://:?action=snapshot dans le pushbox (qui est expliqué à l'étape suivante) afin que pushbox puisse accéder à cette image et la joindre au courrier et vous l'envoyez chaque fois que vous en avez besoin.

Vous pouvez également stocker l'image sur une carte SD car Linkit smart 7688 duo est également livré avec un emplacement pour carte SD pour stocker des informations.

plus d'informations à ce sujet peuvent être trouvées sur :https://docs.labs.mediatek.com/resource/linkit-smart-7688/en/get-started/get-started-with-the-linkit-smart-7688-duo -développement-carte/

ÉTAPE 5 :Configuration de PushingBox

pushbox est utilisé pour envoyer une notification sur les différentes alertes du projet à gmail.

connectez-vous à pushbox en utilisant le compte google :https://www.pushingbox.com/

aller à mes services--> ajouter un service. il existe de nombreux services parmi lesquels choisir comme Gmail, twitter, notification push pour android etc...

sélectionnez Gmail (car nous devons envoyer une photo en pièce jointe) et remplissez la configuration appropriée du nom Gmail et l'identifiant Gmail de l'utilisateur à qui l'alerte doit être envoyée.

allez dans mes scénarios et créez un nouveau scénario. donner un nom au scénario( ex :ALERT) ajouter le service précédemment créé.

écrivez le sujet et le corps du courrier appropriés et entrez l'URL pour prendre la capture d'écran de la webcam pour joindre une photo. Créez différents scénarios pour différentes alertes.

api pour exécuter un scénario de boîte de poussée est :http://api.pushingbox.com/pushingbox?devid=

ÉTAPE 6 : création d'une compétence Alexa à l'aide de Backendless

backendless est utilisé pour créer la compétence alexa. Il s'agit d'une programmation simple par glisser-déposer utilisé pour créer une compétence alexa (ou tout autre programme) accessible par une API backendless.

créer un compte en backendless :https://backendless.com/

  • Connectez-vous à votre compte dans le compte backendless. cliquez sur Créer une application et donnez un nom à votre application/
  • Cliquez sur l'icône Business Logic située dans la barre d'icônes à gauche. Vous verrez l'écran SERVICES API.
  • Cliquez sur l'icône « + » pour créer un nouveau service. Assurez-vous de sélectionner SANS CODE dans la fenêtre contextuelle « Nouveau service ». Entrez "AlexaService" pour le nom du service. Cliquez sur le bouton ENREGISTRER :
  • Backendless crée le service API et vous invite à créer une méthode pour le service. Ce sera la méthode qui traitera les demandes d'Alexa. Entrez "handleRequest" pour le nom de la méthode. Assurez-vous de sélectionner POST pour l'opération REST, et déclarez un argument avec le nom de « req » et tapez « Any Object » comme indiqué ci-dessous :

Backendless crée un espace réservé pour la logique sans code de la méthode. Cliquez sur le bouton MODIFIER pour commencer à basculer vers Codeless Logic Designer.

Dans le bloc d'espace réservé de fonction créé, cliquez sur la zone qui dit « faire quelque chose » et remplacez-la par « envoyerAlexaResponse ». Cette fonction est utilisée pour faire dire à Alexa quelque chose qui peut être passé en argument. Cliquez sur le bouton ENREGISTRER pour que la fonction soit enregistrée :

Cliquez sur l'icône d'engrenage située dans le bloc violet juste à côté du mot « Fonction ». Ajoutez deux arguments en faisant glisser les blocs d'entrée comme indiqué dans l'image ci-dessous. Attribuez les noms des arguments comme « whatToSay » et « waitForResponse ». Notez que lorsque vous ajoutez des arguments, la zone Blocs de contexte est automatiquement renseignée avec les blocs représentant les valeurs d'argument :

Modifiez la logique de la fonction pour qu'elle ressemble à l'image ci-dessous. Pour les blocs « Créer des objets », utilisez l'icône d'engrenage pour modifier le nom des propriétés de l'objet. N'oubliez pas d'enregistrer votre travail en cliquant sur le bouton ENREGISTRER.

Maintenant que la fonction personnalisée est créée, revenez à la méthode handleRequest du service AlexaService. Cliquez sur la catégorie Fonctions personnalisées dans la barre d'outils à gauche et faites glisser le bloc sendAlexaResponse pour vous connecter au connecteur de retour de votre méthode de service :

les étapes ci-dessus peuvent également être trouvées sur leur site Web :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/

Cliquez sur le nœud "Ajouter un nouveau" sous Fonctions dans la section NAVIGATEUR. Dans le bloc d'espace réservé de fonction créé, cliquez sur la zone qui dit "faire quelque chose" et remplacez-la par "getIntentName"

modifiez les blocs pour que la fonction ressemble à ceci :

cela obtiendra le nom d'intention basé sur des exemples d'énoncés. Revenez aux services api->-->traiter la demande dans la section du navigateur. Les variables et la logique sont créées à partir de la section système. Créez les variables suivantes :

Ensuite, nous stockons le nom de l'intention pour demander la variable. Et puis comparer avec les intentions. par exemple, si la demande est "introduction", alors la variable de réponse est définie sur "salut! Je peux contrôler......." et cette réponse est enfin lue à haute voix par Alexa.

modifiez le bloc comme indiqué ci-dessous :

si la demande est une intention LightsOn, nous mettons à jour le canal Thingspeak à « 0 » à l'aide de la demande http get et en même temps nous mettons à jour l'état de l'appareil (1/0 selon On/Off). La même chose se répète pour LightsOff, FanOn et FanOff.

Pour la météo, nous lisons dans le canal Température et humidité et stockons le résultat dans la variable de réponse. Comme le canal ne donne que des valeurs, nous ajoutons des textes pour rendre la réponse significative :

pour l'instantané du salon, nous exécutons le scénario de pushbox :

pour l'état de l'appareil, nous lisons les informations du canal d'état de Thingspeak :

pour les notifications et les alertes que nous lisons à partir des canaux d'alerte (incendie, intrus et invité) :

sur la base des valeurs que nous obtenons du champ de notification, les messages d'alerte correspondants sont stockés dans la variable response0. s'il n'y a pas de notification, aucun message de notification n'est stocké.

une fois la notification lue, le « 0 » est mis à jour dans les canaux de notification afin qu'Alexa ne lise plus la même notification. Enfin, en fonction de la demande, la variable response0/respond est lue à haute voix.

PS :Après avoir créé le modèle requis en backendless, cliquez sur déployer le modèle en haut à droite de l'écran sans code pour déployer le modèle.

ÉTAPE 7 :Configuration de la compétence Alexa dans Amazon Developer Console :

accédez à la console de développement amazon et connectez-vous à l'aide du compte amazon. https://developer.amazon.com/

allez dans la console développeur et cliquez sur l'onglet ALEXA. Cliquez sur le kit de compétences Alexa pour commencer.

créer un type de compétence personnalisé, donner un nom et un nom d'invocation à la compétence.

les intentions respectives et les exemples d'énoncés sont donnés dans le code ci-dessous.

{ "languageModel":{ "intents":[ { "name":"AMAZON.CancelIntent", "samples":[] }, { "name":"AMAZON.HelpIntent", "samples" :[] }, { "name":"AMAZON.StopIntent", "samples":[] }, { "name":"Camera", "samples":[ "veuillez envoyer un instantané de mon salon", " veuillez envoyer un instantané de ma maison", "veuillez envoyer une photo de mon salon", "veuillez envoyer une photo de ma maison" ], "slots":[] }, { "name":"FanOff", "samples ":[ "éteindre le ventilateur", "éteindre le ventilateur", "éteindre le ventilateur", "éteindre le ventilateur" ], "slots":[] }, { "name":"FanOn", "samples" :[ "allumer le ventilateur", "allumer le ventilateur", "allumer le ventilateur", "allumer le ventilateur" ], "slots":[] }, { "name":"Introduction", "samples":[ "ce que vous pouvez faire", "que pouvez-vous faire", "que pouvez-vous faire pour moi" ], "slots":[] }, { "name":"LightsOff", "samples":[ "éteindre lights", "éteindre les lumières", "éteindre les lumières", "éteindre les lumières" ], "slots":[] }, { "name":"LightsOn", "samples":[ "allumer les lumières ", "allumer les lumières", "allumer les lumières", "allumer les lumières" ], "slots":[] }, { "nom":"Notification", "samples":[ "quelles sont mes notifications", "y a-t-il des notifications", "y a-t-il des mises à jour" , "read out my notifications" ], "slots":[] }, { "name":"Status", "samples":[ "quel est l'état de mon appareil", "quel est l'état de mes appareils" ], "slots":[] }, { "name":"Weather", "samples":[ "quelle est la météo de ma maison", "quelle est la météo de ma maison", "quelle est la météo", "quelle est la température de ma maison", "quelle est la température" ], "slots":[] } ], "invocationName":"ma maison" }} 

dans l'onglet de configuration, sélectionnez HTTPS comme type de point de terminaison de service, remplissez l'URL par défaut avec l'URL de l'API de backendless.

sélectionnez la 2ème option dans Certificat pour le point de terminaison par défaut dans le certificat SSL. Vous pouvez également tester la compétence en utilisant le simulateur de test.

Une fois le test terminé, vous pouvez publier la compétence avec les informations de publication requises.

ÉTAPE 8 :Configuration finale et finition !

faire la connexion du circuit comme indiqué ci-dessous

Parfois ESP8266 sera dysfonctionnement parce que de insuffisant actuel. Alors, bien pas mentionné dans le circuit, ça est recommandé pour alimenter l'ESP8266 à partir de 3.3v séparé source. Si vous sont en utilisant un pouvoir banque assurez-vous de réduire la tension de 5 v à 3,3 v à l'aide d'un régulateur de tension de 3,3 v.

Téléchargez le programme sur ESP8266 et arduino. J'ai montré la connexion à l'ampoule, la même chose peut être étendue au ventilateur ou à tout autre appareil.

Enfin, utilisez amazon echo ou echosim.io pour tester vos compétences.

Vous doit activer le compétence en utilisant le appel nom ( comme est mon cas - "mon accueil"). Parfois ça ne le fera pas travailler si ça est utilisé sans appel nom comme Je avoir montré couple de fois dans mon vidéo.

J'espère que vous avez apprécié le tutoriel !

Merci !

Code

  • Smart_bell_ESP8266.ino
  • Home_monitor_arduino.ino
  • Home_Monitor_ESP8266.ino
Smart_bell_ESP8266.inoArduino
Code pour ESP8266 pour être alerté des intrus et des invités
/* * Ce croquis est la mise en œuvre de la cloche intelligente et de la sécurité domestique * */#include #include//----- ------------------------------------// variables//-------- ----------------------------------int intrus=0,guest=2; // pin 0 comme alerte d'intrusion et pin2 comme guest alertconst char* ssid ="SSID"; //votre SSID de WIFIconst char* password ="password"; // mot de passe du Wifi//------------------------------------------- -const char* host ="api.thingspeak.com";void setup() { Serial.begin(115200); retard(10) ; // On commence par se connecter à un réseau WiFi Serial.println(); Serial.println(); Serial.print("Connexion à "); Serial.println(ssid); /* Définissez explicitement l'ESP8266 comme client WiFi, sinon, par défaut, il essaierait d'agir à la fois comme client et point d'accès et pourrait causer des problèmes de réseau avec vos autres appareils WiFi sur votre réseau WiFi. */ WiFi.mode(WIFI_STA); WiFi.begin(ssid, mot de passe); while (WiFi.status() !=WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("Wi-Fi connecté"); Serial.println("Adresse IP :"); Serial.println(WiFi.localIP());}int value =0;int x,y=0,z,k=0;void loop() { delay(1000); ++valeur ; Serial.print("connexion à "); Serial.println(hôte); // Utiliser la classe WiFiClient pour créer des connexions TCP WiFiClient client ; const int httpPort =80 ; if (!client.connect(host, httpPort)) { Serial.println("la connexion a échoué"); retourner; } Serial.print("URL de demande :"); //============================================================================================================// alerte d'intrus //===========================================================================================================x=digitalRead(intrus);//Serial.println(x); si(x==0) { y=0; } if(x==1&&y==0) { Serial.println("Envoi de l'alerte Veuillez patienter....."); retard(1000); Chaîne host1="api.pushingbox.com" ; client.print(String("GET ") + "/pushingbox?devid= HTTP/1.1\r\n" + "Host :" + host1 + "\r\n" + "Connexion :close\r\ n\r\n"); // exécution de la boîte de poussée api client.print(String("GET ") + "/update?api_key=&field1=1 HTTP/1.1\r\n" + "Host:" + host + "\r\n " + "Connexion :fermer\r\n\r\n"); //mise à jour du délai de notification d'intrusion (1000); y=1 ; } //============================================================================================================// Fin de l'alerte intrus//=============================================================================================================//============================================================================================================// alerte invité //============================================================================================================long t1 ; z=digitalRead(invité); if(z==0 &&(millis()>=t1+300000)) // attendez 5 min pour éviter l'envoi d'alertes multiples en raison de plusieurs sonnettes appuyez sur { k=0; } if(x==1&&k==0) { t1=millis(); // stockage de l'horodatage actuel dans t1 Serial.println("Envoi d'alerte Pls Wait....."); retard(1000); //délai d'envoi de l'alerte et de l'anti-rebond String host1="api.pushingbox.com" ; client.print(String("GET ") + "/pushingbox?devid= HTTP/1.1\r\n" + "Host :" + host1 + "\r\n" + "Connexion :close\r\ n\r\n"); // exécution de la boîte de poussée api client.print(String("GET ") + "/update?api_key=&field1=1 HTTP/1.1\r\n" + "Host:" + host + "\r\n " + "Connexion :fermer\r\n\r\n"); //mise à jour du délai de notification des invités (1000); k=1 ; } //============================================================================================================// Fin de l'alerte invité//=============================================================================================================délai d'attente long non signé =millis(); while (client.available() ==0) { if (millis() - timeout> 5000) { Serial.println(">>> Client Timeout !"); client.stop(); retourner; } } //Serial.println("fermeture de la connexion");}
Home_monitor_arduino.inoArduino
Code pour Arduino pour contrôler les appareils
//Ce croquis dans la mise en œuvre de la domotique #include // importer la bibliothèque série #include//--------- ------------------// définitions des broches//------------ -----------------------------#define Light 2 // broche 2 pour contrôler la lumière#define fan 3 // broche 3 pour contrôler ventilateur//------------------------------------------// variables// ------------------------------------------char e;int p=0, q=0; //ces variables empêchent l'activation/désactivation d'appareils déjà activés/désactivésSoftwareSerial home_monitor(10, 11); // RX, TXchar control_data; // les données transmises via Bluetoothvoid setup() { // mettez votre code de configuration ici, à exécuter une fois :home_monitor.begin(115200); Serial.begin(9600); pinMode(13,OUTPUT);}void loop() { // mettez votre code principal ici, pour l'exécuter à plusieurs reprises :if (home_monitor.available()){ control_data=home_monitor.read(); // obtenir les informations de contrôle d'ESP8266 en série e=control_data; Serial.print(control_data); //============================================================================================================// Contrôle de l'appareil //============================================================================================================// Exécution des opérations requises en fonction de la valeur du canal //------------- ------------------------------------------------ // LUMIÈRE //----------------------------------------------- -------------- if(e=='0'&&p==0) //Light ON { digitalWrite(Light,LOW); p=1 ; } if(e=='1'&&p==1) //Éteint { digitalWrite(Light,HIGH); p=0 ; } //------------------------------------------------------------ -------------- // Heater //------------------------------- ------------------------------ 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(); Serial.begin(115200); retard(10) ; // We start by connecting to a WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); 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, password); while (WiFi.status() !=WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("Wi-Fi connecté"); 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"); retourner; } 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......."); retard(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(); retourner; } } // 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");}

Schémas


Processus de fabrication

  1. Applications de la domotique
  2. Utilisation de balises RFID pour la surveillance de la sécurité à domicile
  3. Surveillance intelligente de la qualité de l'air en ville basée sur LoRa
  4. Capteur de température multiple
  5. Surveillance du CO2 avec le capteur K30
  6. Alexa, allume cette lampe :capteur 3D intelligent pour Amazon Echo
  7. Système d'arrosage des plantes domestiques
  8. Contrôleur domestique Arduino activé par Alexa
  9. Surveillance SMART de la température pour les écoles