Arduino Shield Ethernet ping ping ping la prise


  L'idée est d'utiliser un arduino UNO avec un shield ethernet afin de la connecter sur le réseau local et pouvoir envoyer un ping sur une adresse IP.

Pouvoir tester le ping d'un raspberry par exemple.

J'ai un système domotique, JEEDOM, sous PI3, et parfois il plante. 3x par an mais c'est déjà trop ! ;-)

Le but est de demander à l'arduino d'envoyer un ping à l'adresse IP de Jeedom, si pas de ping, couper l'alimentation du PI3 et la relancer... bref un bon gros reboot by power!

Voici le code actuel:

/*

  Ping Example

  This example sends an ICMP pings every 500 milliseconds, sends the human-readable

 result over the serial port. 

 Circuit:

 * Ethernet shield attached to pins 10, 11, 12, 13

  created 30 Sep 2010

 by Blake Foster

  */


#include <SPI.h>         

#include <Ethernet.h>

#include <ICMPPing.h>


int resultat = 0;

int TRY1 = 0;

int TRY2 = 0;

int TRY3 = 0;

int TRY4 = 0;

int TRYAll = 0;

int Cpt = 0;

int ACTIVE_RESET = 12;

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // max address for ethernet shield

byte ip[] = {192,168,0,80}; // ip address for ethernet shield

IPAddress pingAddr(192,168,0,19); // ip address to ping


SOCKET pingSocket = 0;


char buffer [256];

ICMPPing ping(pingSocket, (uint16_t)random(0, 255));


void setup() 

{

  // start Ethernet

  Ethernet.begin(mac, ip);

  Serial.begin(115200);

  pinMode(ACTIVE_RESET, OUTPUT);

  digitalWrite(ACTIVE_RESET, HIGH);

}


void loop()

{

  IPAddress pingAddr(192,168,0,19);

  ICMPEchoReply echoReply = ping(pingAddr, 4);

  sprintf(buffer,"%ld",millis() - echoReply.data.time);

    Serial.println("192,168,0,19");

  Serial.println(buffer);

  resultat = millis() - echoReply.data.time;

  Serial.println(resultat);


 TRY1 = resultat;

 Serial.println(TRY1);

 delay(1000);


 // IPAddress pingAddr(192,168,0,19);

  echoReply = ping(pingAddr, 4);

  sprintf(buffer,"%ld",millis() - echoReply.data.time);

  Serial.println(buffer);

  resultat = millis() - echoReply.data.time;

 

 TRY2 = resultat;

 Serial.println(TRY2);

 delay(1000);


//  IPAddress pingAddr(192,168,0,19);

  echoReply = ping(pingAddr, 4);

  sprintf(buffer,"%ld",millis() - echoReply.data.time);

  Serial.println(buffer);

  resultat = millis() - echoReply.data.time;

 

 TRY3 = resultat;

 Serial.println(TRY3);

 delay(1000);


 // IPAddress pingAddr(192,168,0,19);

  echoReply = ping(pingAddr, 4);

  sprintf(buffer,"%ld",millis() - echoReply.data.time);

  Serial.println(buffer);

  resultat = millis() - echoReply.data.time;

 

 TRY4 = resultat;

 Serial.println(TRY4);


TRYAll = TRY1 + TRY2 + TRY3 + TRY4;

Serial.print("TRYAll: ");  

 Serial.println(TRYAll); 


  

if (( TRYAll > 10000 ) || ( TRYAll < 0 ))

  {

  Serial.println("BAD PING");

  Cpt = 1;

  digitalWrite(ACTIVE_RESET, LOW);

  delay(10000);

  digitalWrite(ACTIVE_RESET, HIGH);

  }

  else

  {

  Serial.println("GOOG PING");  

  }

  

  Serial.print("Cpt: ");  

 Serial.println(Cpt);  

     delay(15000);

  

   

  }









Commentaires

Posts les plus consultés de ce blog

Flash WT32 ETH01 ESPEASY

Branchement de 2 PZEM sur 1 Wemos