ESP8266 SMS mise en place

Expression du besoin :  Une personne âgé a besoin d'envoyer un message automatiquement si cela ne va pas.





une ESP8266 avec un bouton . l'ESP8266 doit etre connecté au wifi nommé maison avec le mot de passe 1234568987212395A . Quand tu clique sur le bouton cela envoie une notification par SMS a 3 personnes de proche.

 

 

 

Pour réaliser le projet que vous décrivez avec un ESP8266, vous aurez besoin de configurer l'ESP8266 pour se connecter au Wi-Fi et envoyer des SMS lorsqu'un bouton est pressé. Nous pouvons utiliser un service tiers pour envoyer des SMS, comme Twilio ou un service similaire, car l'ESP8266 n'a pas de capacité directe d'envoi de SMS. Voici un exemple de code en utilisant l'environnement de développement Arduino et la bibliothèque pour ESP8266 :

Prérequis

  1. Installez l'IDE Arduino et configurez-le pour l'ESP8266.
  2. Installez les bibliothèques nécessaires via le gestionnaire de bibliothèques de l'IDE Arduino : ESP8266WiFi et ESP8266HTTPClient.
  3. Créez un compte sur Twilio et obtenez votre Account SID, Auth Token, et un numéro de téléphone Twilio.

 

 #include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

// Paramètres Wi-Fi
const char* ssid = "maison";
const char* password = "1234568987212395A";

// Paramètres Twilio
const char* account_sid = "YOUR_TWILIO_ACCOUNT_SID";
const char* auth_token = "YOUR_TWILIO_AUTH_TOKEN";
const char* twilio_number = "YOUR_TWILIO_PHONE_NUMBER";
const char* to_number_1 = "+12345678901";  // Mettez les numéros de téléphone des destinataires ici
const char* to_number_2 = "+12345678902";
const char* to_number_3 = "+12345678903";

// Pin du bouton
const int buttonPin = D1;  // Changez le pin selon votre branchement

void setup() {
  pinMode(buttonPin, INPUT_PULLUP);
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.print("Connexion");
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
 
  Serial.println("");
  Serial.print("Connecté à ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  int buttonState = digitalRead(buttonPin);
  if (buttonState == LOW) {  // Si le bouton est pressé
    sendSMS(to_number_1);
    sendSMS(to_number_2);
    sendSMS(to_number_3);
    delay(10000);  // Anti-rebond et éviter l'envoi multiple
  }
}

void sendSMS(const char* number) {
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;
    http.begin("https://api.twilio.com/2010-04-01/Accounts/" + String(account_sid) + "/Messages.json");
    http.setAuthorization(account_sid, auth_token);
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");

    String msgBody = "Body=" + String("Alerte! Le bouton a été pressé.") + "&From=" + String(twilio_number) + "&To=" + String(number);
    int httpCode = http.POST(msgBody);
    
    if (httpCode > 0) {
      String payload = http.getString();
      Serial.println(payload);
    } else {
      Serial.println("Erreur dans l'envoi du SMS");
    }

    http.end();
  } else {
    Serial.println("Erreur de connexion Wi-Fi");
  }
}