Comment créer une alarme avec notification sur mobile : Différence entre versions

De HATLAB
(Page créée avec « {{Tuto Details |Type=Création |Area=Maison |Tags=domotique, esp, nodemcu, alarme, |Description=Nous allons voir comment créer une alarme à détection de mouvement avec... »)
 
Ligne 86 : Ligne 86 :
 
{{Tuto Step
 
{{Tuto Step
 
|Step_Title=Collez le code suivant
 
|Step_Title=Collez le code suivant
|Step_Content=#include <ESP8266WiFi.h>
+
|Step_Content=<source lang="php">
 +
#include <ESP8266WiFi.h>
 
WiFiClient client;
 
WiFiClient client;
 
String MakerIFTTT_Key ;
 
String MakerIFTTT_Key ;
 
;String MakerIFTTT_Event;
 
;String MakerIFTTT_Event;
char *append_str(char *here, String s) { int i=0; while (*here++ = s[i]){i++;};return here-1;}
+
char *append_str(char *here, String s) { int i=0; while (*here++ = s[i]){i++;};return here-1;}
 
char *append_ul(char *here, unsigned long u) { char buf[20]; return append_str(here, ultoa(u, buf, 10));}
 
char *append_ul(char *here, unsigned long u) { char buf[20]; return append_str(here, ultoa(u, buf, 10));}
 
char post_rqst[256];char *p;char *content_length_here;char *json_start;int compi;
 
char post_rqst[256];char *p;char *content_length_here;char *json_start;int compi;
 
int sensor = 13; // Pin D7
 
int sensor = 13; // Pin D7
 
void setup() {
 
void setup() {
// connect to the wifi
+
  // connect to the wifi
Serial.begin(9600);
+
  Serial.begin(9600);
WiFi.disconnect();
+
  WiFi.disconnect();
delay(3000);
+
  delay(3000);
Serial.println("START");
+
  Serial.println("START");
WiFi.begin("Nom de votre réseau wifi","Mot de passe");
+
  WiFi.begin("<b>Nom de votre réseau wifi","Mot de passe</b>");
while ((!(WiFi.status() == WL_CONNECTED))){
+
  while ((!(WiFi.status() == WL_CONNECTED))){
delay(300);
+
    delay(300);
Serial.print("..");
+
    Serial.print("..");
}
+
  }
Serial.println("Connected");
+
  Serial.println("Connected");
Serial.println("Your IP is");
+
  Serial.println("Your IP is");
Serial.println((WiFi.localIP().toString()));
+
  Serial.println((WiFi.localIP().toString()));
pinMode(sensor, INPUT); // declare sensor as input
+
  pinMode(sensor, INPUT); // declare sensor as input
// 2 minutes to leave home
+
  //   2 minutes to leave home
pinMode(LED_BUILTIN, OUTPUT);
+
  pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW); // LED on
+
  digitalWrite(LED_BUILTIN, LOW);   // LED on
delay(120000);
+
  delay(120000);
digitalWrite(LED_BUILTIN, HIGH); // LED off
+
  digitalWrite(LED_BUILTIN, HIGH); // LED off
 
}
 
}
 
void loop(){
 
void loop(){
long state = digitalRead(sensor); //check sensor value
+
  long state = digitalRead(sensor); //check sensor value
if(state == HIGH){ // send an http request to IFTTT if motion detected
+
  if(state == HIGH){ // send an http request to IFTTT if motion detected
Serial.println("Motion detected!");
+
      Serial.println("Motion detected!");
if (client.connect("maker.ifttt.com",80)) {
+
      if (client.connect("maker.ifttt.com",80)) {
MakerIFTTT_Key ="Votre MakerIFTTT_Key";
+
        MakerIFTTT_Key ="<b>Votre MakerIFTTT_Key</b>";
MakerIFTTT_Event ="alarme";
+
        MakerIFTTT_Event ="alarme";
p = post_rqst;
+
        p = post_rqst;
p = append_str(p, "POST /trigger/");
+
        p = append_str(p, "POST /trigger/");
p = append_str(p, MakerIFTTT_Event);
+
        p = append_str(p, MakerIFTTT_Event);
p = append_str(p, "/with/key/");
+
        p = append_str(p, "/with/key/");
p = append_str(p, MakerIFTTT_Key);
+
        p = append_str(p, MakerIFTTT_Key);
p = append_str(p, " HTTP/1.1\r\n");
+
        p = append_str(p, " HTTP/1.1\r\n");
p = append_str(p, "Host: maker.ifttt.com\r\n");
+
        p = append_str(p, "Host: maker.ifttt.com\r\n");
p = append_str(p, "Content-Type: application/json\r\n");
+
        p = append_str(p, "Content-Type: application/json\r\n");
p = append_str(p, "Content-Length: ");
+
        p = append_str(p, "Content-Length: ");
content_length_here = p;
+
        content_length_here = p;
p = append_str(p, "NN\r\n");
+
        p = append_str(p, "NN\r\n");
p = append_str(p, "\r\n");
+
        p = append_str(p, "\r\n");
json_start = p;
+
        json_start = p;
p = append_str(p, "{\"value1\":\"");
+
        p = append_str(p, "{\"value1\":\"");
p = append_str(p, "alarme esp");
+
        p = append_str(p, "alarme esp");
p = append_str(p, "\",\"value2\":\"");
+
        p = append_str(p, "\",\"value2\":\"");
p = append_str(p, "alarme");
+
        p = append_str(p, "alarme");
p = append_str(p, "\",\"value3\":\"");
+
        p = append_str(p, "\",\"value3\":\"");
p = append_str(p, "");
+
        p = append_str(p, "");
p = append_str(p, "\"}");
+
        p = append_str(p, "\"}");
compi= strlen(json_start);
+
        compi= strlen(json_start);
content_length_here[0] = '0' + (compi/10);
+
        content_length_here[0] = '0' + (compi/10);
content_length_here[1] = '0' + (compi%10);
+
        content_length_here[1] = '0' + (compi%10);
client.print(post_rqst);
+
        client.print(post_rqst);
Serial.println("request sent");
+
 
delay(600000); // wait for 10 mns before sending another alert
+
        Serial.println("request sent");
}
+
            delay(600000); // wait for 10 mns before sending another alert
 +
        }
 +
  }
 +
  else {
 +
  Serial.println("No Motion");
 +
  delay(1000);
 +
      }
 
}
 
}
else {
+
</source>
Serial.println("No Motion");
 
delay(1000);
 
}}
 
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step

Version du 8 juin 2018 à 15:06

Une Création de avatarLudovic dans les catégories Maison. Dernière modification le 4/09/2023 par Sgiraud.

No-image-yet.jpg


Liste des matériaux

Il vous faudra un nodeMcu, un capteur de mouvement, 3 fils et un cable micro-sub

Liste des outils

aucun si vous achetez des cables femelle-femelle. Sinon, il vous faudra un fer à souder.

Etape n°1 -

-Le cablage : vous avez juste 3 cables à connecter entre le capteur et le NodeMcu

Etape n°2 - Utiliser IFTTT

IFTTT va recevoir la requête http envoyée par le NodeMCU Créez-vous un compte sur https://ifttt.com

Etape n°3 - Notez votre MakerIFTTT_Key

tous les caractères après /use/ disponible sur https://ifttt.com/services/maker_webhooks/settings

Etape n°4 - Créez une nouvelle applet

Etape n°5 - Cliquez sur This

Etape n°6 - Recherchez le service webhooks

Etape n°7 - Cliquez sur Receive a web request

Etape n°8 - Nommez votre applet alarme

Etape n°9 - Cliquez sur That

Etape n°10 - Recherchez le service Gmail

Etape n°11 - Sélectionnez Send yourself an email

Etape n°12 - Renseignez les champs suivants

  • Renseignez les champs en respectant les valeurs
  • Enregistrez votre applet

Etape n°13 - Installer Arduino IDE

  • Si ce n'est déjà fait, téléchargez, installez et lancez Arduino IDE
  • Allez dans Menu - Fichier - préférences.
  • Collez http://arduino.esp8266.com/stable/package_esp8266com_index.json dans le champ URL de gestionnaire
  • Allez dans le menu Outils - Type de carte - Gestionnaire de carte.
  • Filtrez sur ESP, choisissez ESP8266 puis installez
  • Allez dans le menu Outils - Type de carte
  • Choisissez NodeMCU 1.0
  • Choisissez le port (branchez et débranchez le NodeMCU pour voir le port)
  • Créez un nouveau script (Fichier / Nouveau)

Etape n°14 - Collez le code suivant

<source lang="php">

  1. include <ESP8266WiFi.h>

WiFiClient client; String MakerIFTTT_Key ;

String MakerIFTTT_Event;

char *append_str(char *here, String s) { int i=0; while (*here++ = s[i]){i++;};return here-1;} char *append_ul(char *here, unsigned long u) { char buf[20]; return append_str(here, ultoa(u, buf, 10));} char post_rqst[256];char *p;char *content_length_here;char *json_start;int compi; int sensor = 13; // Pin D7 void setup() {

 // connect to the wifi
 Serial.begin(9600);
 WiFi.disconnect();
 delay(3000);
 Serial.println("START");
  WiFi.begin("Nom de votre réseau wifi","Mot de passe");
 while ((!(WiFi.status() == WL_CONNECTED))){
   delay(300);
   Serial.print("..");
 }
 Serial.println("Connected");
 Serial.println("Your IP is");
 Serial.println((WiFi.localIP().toString()));
 pinMode(sensor, INPUT); // declare sensor as input
 //   2 minutes to leave home
 pinMode(LED_BUILTIN, OUTPUT);
 digitalWrite(LED_BUILTIN, LOW);   // LED on
 delay(120000);
 digitalWrite(LED_BUILTIN, HIGH);  // LED off

} void loop(){

 long state = digitalRead(sensor); //check sensor value
 if(state == HIGH){  // send an http request to IFTTT if motion detected
     Serial.println("Motion detected!");
     if (client.connect("maker.ifttt.com",80)) {
       MakerIFTTT_Key ="Votre MakerIFTTT_Key";
       MakerIFTTT_Event ="alarme";
       p = post_rqst;
       p = append_str(p, "POST /trigger/");
       p = append_str(p, MakerIFTTT_Event);
       p = append_str(p, "/with/key/");
       p = append_str(p, MakerIFTTT_Key);
       p = append_str(p, " HTTP/1.1\r\n");
       p = append_str(p, "Host: maker.ifttt.com\r\n");
       p = append_str(p, "Content-Type: application/json\r\n");
       p = append_str(p, "Content-Length: ");
       content_length_here = p;
       p = append_str(p, "NN\r\n");
       p = append_str(p, "\r\n");
       json_start = p;
       p = append_str(p, "{\"value1\":\"");
       p = append_str(p, "alarme esp");
       p = append_str(p, "\",\"value2\":\"");
       p = append_str(p, "alarme");
       p = append_str(p, "\",\"value3\":\"");
       p = append_str(p, "");
       p = append_str(p, "\"}");
       compi= strlen(json_start);
       content_length_here[0] = '0' + (compi/10);
       content_length_here[1] = '0' + (compi%10);
       client.print(post_rqst);
 
       Serial.println("request sent");
           delay(600000); //  wait for 10 mns before sending another alert
       }
 }
 else {
 Serial.println("No Motion");
 delay(1000);
     }

} </source>

Etape n°15 - Remplacez les valeurs suivantes

  • Nom de votre réseau wifi
  • Mot de passe
  • Votre MakerIFTTT_Key

Etape n°16 - Téléversez le code vers le NodeMCU

Voilà, votre alarme est prête à l’emploi !

Vous pouvez la brancher sur un chargeur de mobile ou sur le port USB de votre box par exemple.

Après 2 min (le temps de sortir), elle passe en mode surveillance et vous alertera par email en cas de mouvement.

Vous pouvez aussi installer l’appli mobile IFTTT et activer l’option Receive notifications when this Applet runs ce qui permet de recevoir une alerte plus rapidement.

Vous pouvez aussi vous en servir pour activer automatiquement le wifi sur votre mobile quand vous arrivez chez vous.

Notes et références

Cochez cette case si vous considérez ce tutoriel terminé