1 contributor
#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 <dummy.h>
#include <ESP8266WiFi.h>
//#include <ESP8266WebServer.h>
#include <DHT.h>
#include <ArduinoOTA.h>
#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);
}