#ifndef ARDUINO_ESP8266_WEMOS_D1MINI #ifndef ARDUINO_ESP8266_WEMOS_D1R1 error "Board Must be /LOLIN(WEMOS) D1 R2 & Mini/ OR /Wemos D1 R1/" #endif //ARDUINO_ESP8266_WEMOS_D1R1 #endif //ARDUINO_ESP8266_WEMOS_D1MINI //--------------------------------------------------------------------- //Note: //--------------------------------------------------------------------- // ARDUINO_ESP8266_WEMOS_D1MINI : // - ESP DevBoard with onboard direct connector for DHT & OLED // - ESP Devboard with no screen // ARDUINO_ESP8266_WEMOS_D1R1 // - ESP DevBoard with Battery holder //--------------------------------------------------------------------- // My Includes #include #include //#include #include #include #include "my_constants.h" #include "my_draw.h" #include "my_wifi.h" #include "my_dht.h" #include "my_ntp.h" #include "my_isr.h" #ifdef USE_OTA #include "my_ota.h" #endif //USE_OTA #ifdef USE_MQTT #include "my_mqtt.h" #endif //USE_MQTT #include "my_http.h" void setup() { Serial.begin(115200); Serial.setDebugOutput(true); Serial.println(); Serial.println("Initialization Screen"); drawInit(); draw(compile_time, NOLOGO, 0, 0); Serial.println("Initialization DHT"); dht.begin(); Serial.println("Initialization WIFI"); WiFiConnect(); // Sync clock if( WiFi.status() == WL_CONNECTED ) { setClock(); sprintf(clientID,clientIDFmt,WiFi.macAddress().c_str()); #ifdef USE_MQTT mqtt_connect(); #endif //USE_MQTT } Serial.println("BuildDate:["+String(compile_date)+"]"); ota_set(); #ifdef ARDUINO_ESP8266_WEMOS_D1MINI digitalWrite(LED_BUILTIN, LOW); #endif //ARDUINO_ESP8266_WEMOS_D1MINI Serial.println("Initialization HTTP server on port "+String(PORT)); http_set(); isr_set(); delay(1000); displaySetStatus(0); } // the loop function runs over and over again forever void loop() { ArduinoOTA.handle(); unsigned long time; time = millis(); if (time - timeSinceLastModeSwitch > UPDATE_PERIOD) { #ifdef HAS_DHT float mT = readDHTTemperature(); float mH = readDHTHumidity(); String dispMsg = String(mT)+" | "+String(mH)+"%"; countMeasures++; getTimeString(); #ifdef USE_MQTT mqtt_reconnect(); String MQTTMsg = "{\"time\": \""+String(acTimeStringTZ)+"\", \"MAC\": \""+WiFi.macAddress()+"\", \"temp\":"+String(mT)+", \"humidity\": "+String(mH)+"}"; if (!client.publish(mqtt_topic, MQTTMsg.c_str())) { Serial.println("ERROR: MQTT not sent!"); } #endif //USE_MQTT draw(acTimeString, NOLOGO, mT, mH); #endif //HAS_DHT timeSinceLastModeSwitch = millis(); } else if( time > MAX_RUNNING_TIME ) { //Restart the board if running time is > MAX_RUNNING_TIME #ifdef USE_MQTT mqtt_reconnect(); String MQTTMsg = "{\"time\": \""+String(acTimeStringTZ)+"\", \"MAC\": \""+WiFi.macAddress()+"\", \"status\": \"Triggered reboot\"}"; if (!client.publish(mqtt_topic, MQTTMsg.c_str())) { Serial.println("ERROR: MQTT not sent!"); } #endif //USE_MQTT Serial.println("Triggered reboot"); ESP.restart(); } else if(WiFi.status() != WL_CONNECTED) { //Reconnect WiFi if not connected WiFiConnect(); mqtt_connect(); } server.handleClient(); delay(LOOP_DELAY); }