NOTIFICATION DE L’ÉTAT D’UN SERVEUR

Voici un petit projet qui va permettre d’avoir une indication visuelle de l’état d’un serveur : connecté ou déconnecté.

Nous avons récupéré un petit feu tricolore (indicateur de proximité initialement monté dans un garage pour aider à garer une voiture). Ce qui nous intéresse est seulement la partie design et la partie LEDs.

Principe Général

Un ESP8266 connecté en WIFI va lancer des ping successifs vers une adresse IP et allumer la LED verte tant que le ping répond, ou la LED rouge si le ping ne reçoit pas de réponse.

Nous également utiliser la LED orange pour nous notifier si le temps de réponse du ping est trop long ( > à 50ms par exemple).

Adaptation

On peut se repiquer sur le PCB du boîtier principal. Il envoie du 4.5 volts et on retrouve une connexion par LED, plus une masse. Lorsque le LED est mis au 4.5 volts, elle s’allume.

Pour l’alimentation, on réutilise ce qu’il y a déjà en place (bloc de pile), mais on l’adapte pour l’alimenter avec un petit chargeur de téléphone portable en 5 volts.

Le transistor, commandé par l’ESP, va donc jouer le rôle d’interrupteur entre le 4.5 volts et chaque connexion de LED.

Schéma

L’ESP8266 va actionner l’allumage ou l’extinction de LED à travers des transistors de type NPN. Cela va permettre de ne pas tirer sur les sorties de l’ESP et aussi de pouvoir utiliser une autre source pour l’alimentation des LED.



Le code

Ajouter la library : ESP8266PING

/*
* With this library an ESP8266 can ping a remote machine and know if it's reachable.
* It provides some basic measurements on ping messages (avg response time).
*/
int vert=16;
int orange=5;
int rouge=4;
#include <ESP8266WiFi.h>
#include <ESP8266Ping.h>
const char* ssid = "TonSSID";
const char* password = "TonMDPWifi";
const IPAddress remote_ip(8, 8, 8, 8); // Mettre l'ip à pinger ( dans notre exemple le dns google )
void setup() {
pinMode(vert, OUTPUT);
pinMode(orange, OUTPUT);
pinMode(rouge, OUTPUT);
Serial.begin(115200);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println("Connecting to WiFi");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println();
Serial.print("WiFi connected with ip ");
Serial.println(WiFi.localIP());
Serial.print("Pinging ip ");
Serial.println(remote_ip);
if(Ping.ping(remote_ip)) {
Serial.println("Success!!");
} else {
Serial.println("Error :(");
}
}
void loop() {
if(Ping.ping(remote_ip)) {
Serial.println("Success!!");
digitalWrite(vert, HIGH);
digitalWrite(orange, LOW);
digitalWrite(rouge, LOW);
} else {
Serial.println("Error :(");
digitalWrite(vert, LOW);
digitalWrite(orange, LOW);
digitalWrite(rouge, HIGH);
}
delay(1000); // wait for a second
}

En fonctionnement

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *