🛠 Alerte email : bouton sur la Yún et envoi via sendmail

Arduino Yún · intermediaire · IMG-yun-intermediaire-6-yun-bouton-alerte-mail.svg — Yún avec bouton poussoir sur la pin 2, flèche vers une envelople email sortante et un pictogramme serveur SMTP ; en médaillon, la config SMTP dans la page arduino.local.

Objectifs

Construire une alerte physique → email : un bouton sur une broche du 32U4 déclenche l'envoi d'un email depuis Linino OS. Deux voies sont comparées : la route REST /mail/send (zéro dépendance) et la bibliothèque YunMail (API propre côté sketch). Vous configurerez un compte SMTP (fournisseur ou Gmail avec mot de passe d'application) dans la page d'administration de la carte.

Matériel

Configuration SMTP

Dans la page d'administration (http://arduino.local, mot de passe root), renseignez : serveur SMTP, port, utilisateur, mot de passe, expéditeur. Linino OS utilise un sendmail allégé ; les logs SMTP consultables en SSH (logread) aident au debug.

Code complet

// Alerte email sur appui, avec anti-répetition de 30 s.
#include <Bridge.h>
#include <YunMail.h>

const uint8_t BTN = 2;
const uint32_t PAUSE = 30000;
uint32_t dernierEnvoi = 0;
bool dernierEtat = HIGH;

void setup {
  pinMode(BTN, INPUT_PULLUP);
  Bridge.begin;
  Console.begin;
  Mail.begin;   // YunMail : pilote la file sendmail côté Linux
  Mail.from("alerte@exemple.fr");
  Mail.to("moi@exemple.fr", "Moi");
  Mail.subject("Yun : bouton presse");
  Console.println(F("pret"));
}

void loop {
  bool état = digitalRead(BTN);
  bool front = (état == LOW && dernierEtat == HIGH);
  dernierEtat = état;

  if (front && millis - dernierEnvoi >= PAUSE) {
    dernierEnvoi = millis;
    Mail.println(F("Quelqu'un a appuye sur le bouton."));
    Mail.println(F("Cordialement, votre Yuniste."));
    int id = Mail.send;     // met en file ; l'envoi part côté Linux
    Console.print(F("mail mis en file, id=")); Console.println(id);
  }
  // L'alternative REST, sans YunMail :
  // Process p; p.runShellCommandOnLinux(
  //   "curl -s 'http://localhost/mail/send/moi@example.fr/Alerte/Bouton'");
}

Vérification attendue

Appui → quelques secondes plus tard, l'email arrive (l'envoi est asynchrone : la file part via sendmail côté Linux). Le Moniteur affiche l'id de mise en file. Testez l'échec : mauvais mot de passe SMTP → rien n'arrive ; regardez alors logread en SSH côté Linux, les erreurs d'authentification y sont tracées. L'anti-répetition de 30 s empêche le spam en cas d'appuis multiples.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels