#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

const char* ssid = "XXXXX";                  // votre réseau wifi
const char* pass = "YYYYY";                  // votre cléf wifi
const char* host = "nom_de_la_machine";      // le nom de votre projet

unsigned long previousMillis = 0;  // variable pour le temps
const long interval = 1000;        // intervale em ms
int ledState = LOW;                // ledState pour allumer ou pas la led

void setup() {  
  pinMode(LED_BUILTIN, OUTPUT);                 // on met la led interne du NodeMCU en sortie
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);                          // on defini le mode du wifi       
  WiFi.begin(ssid, pass);                       // on se connecte
  while (WiFi.status() != WL_CONNECTED) {       // tant qu'on est pas connecté on attend
    delay(500);
    Serial.print(".");
  }
  digitalWrite(LED_BUILTIN, ledState);          // on allume la led interne du nodeMCU (logic inversé pour cette led)      
  ArduinoOTA.setPort(8266);                     // le port de transmission   
  ArduinoOTA.setHostname(host);                 // on donne un nom au port réseau  
  ArduinoOTA.begin();                           // on démarre le port réseau
}

void loop() {
  ArduinoOTA.handle();                                 // on écoute en boucle
  // pour faire clignoter une led sans delay
  unsigned long currentMillis = millis();              // pour caclculer l'intervale de temp
  if (currentMillis - previousMillis >= interval) {    // des qu'on a ateint l'interval
  previousMillis = currentMillis;                       // on remet le compteur a zero  
  ledState = !ledState;                                // on change l'état de la led toute les secondes (interval)
  digitalWrite(LED_BUILTIN,  ledState);                // on allume la led ou pas selon l'etat
  }
}