diff --git a/.vscode/arduino.json b/.vscode/arduino.json index 152a177..90d89ad 100644 --- a/.vscode/arduino.json +++ b/.vscode/arduino.json @@ -1,6 +1,6 @@ { "board": "esp8266:esp8266:generic", - "configuration": "CpuFrequency=160,FlashFreq=80,FlashMode=dio,UploadSpeed=115200,FlashSize=1M512,ResetMethod=ck,Debug=Disabled,DebugLevel=None____", + "configuration": "CpuFrequency=80,FlashFreq=40,FlashMode=dio,UploadSpeed=115200,FlashSize=1M512,ResetMethod=ck,Debug=Disabled,DebugLevel=None____", "port": "/dev/ttyUSB0", "sketch": "frontend.ino", "output": "Output" diff --git a/frontend.ino b/frontend.ino index 53207e0..78966e8 100644 --- a/frontend.ino +++ b/frontend.ino @@ -1,18 +1,18 @@ #include #include -#include +// #include #include #include #include #include "SSD1306Brzo.h" #include -#include +// #include #include "wifi.h" #include "Adafruit_MQTT.h" #include "Adafruit_MQTT_Client.h" double inTemp,outTemp,pressure,humid; -unsigned short int onTime = 5, offTime = 23, beepDelay = 60, lastNtp, lastBeep; +unsigned short int onTime = 5, offTime = 23, beepDelay = 60, lastBeep, lastWifi; bool mqttAvail; WiFiUDP ntpUDP; @@ -20,7 +20,7 @@ NTPClient timeClient(ntpUDP); SSD1306Brzo display(0x3C, 5, 4); //oled display w/ address 0x3C with SDA on GPIO4 and SCL on GPIO5 //address == offset WiFiClient client; -ESP8266WebServer server(80); +// ESP8266WebServer server(80); Adafruit_MQTT_Client mqtt(&client, "192.168.100.100", 1883); Adafruit_MQTT_Subscribe pressureFeed = Adafruit_MQTT_Subscribe(&mqtt, "pressure"); @@ -57,11 +57,11 @@ void setup(){ WiFi.mode(WIFI_STA); wifiConnect(); //==READ CONFIG== - if (!SPIFFS.begin()) - SPIFFS.format(); + // if (!SPIFFS.begin()) + // SPIFFS.format(); - if (!readConfig()) - defConfig(); + // if (!readConfig()) + // defConfig(); //==NTP INIT== timeClient.begin(); @@ -75,18 +75,23 @@ void setup(){ mqtt.subscribe(&outFeed); mqtt.subscribe(&inFeed); mqtt.subscribe(&humidFeed); - server.on("/edit", editConfig); - server.begin(); + // server.on("/edit", editConfig); + // server.begin(); + updateNtp(); } void loop(){ if (WiFi.status() != WL_CONNECTED) { //check wifi status wifiConnect(); } - server.handleClient(); - MQTT_connect();//check connection and get packets for 0.5s - mqtt.processPackets(300); - + // server.handleClient(); + if (timeClient.getHours()*60+timeClient.getMinutes() - lastWifi >= 60){ // due to powersaving + lastWifi = timeClient.getHours()*60+timeClient.getMinutes(); + MQTT_connect();//check connection and get packets for 0.5s + mqtt.processPackets(750); + updateNtp();//update time + } + else delay(900); mainScreen();//it could be cool and smooth if we could update screen independently, in some kind of separate thread or smthn similar if ((timeClient.getHours()*60 + timeClient.getMinutes() - lastBeep >= beepDelay)&&(!nightMode())){ //beep every $lastBeep @@ -96,28 +101,9 @@ void loop(){ lastBeep = timeClient.getHours()*60; } - updateNtp();//update time } -//TODO -//AT LEAST MAKE IT WORK (show ui and get data + ntp) - compiling - ... - WORKS!!11 - -//debug -> release -//remove useless serial debug - DONE -//show wifi info on oled - DONE -//reset on not connected - DONE -//check connectivity during work and do actions - DONE -//beep hourly - DONE -//github - oh yeahhh - -//load config -//webconfig (?) - in progress -//mqtt update interval - //second screen - -//reconfig wifi if not found (start webserver and AP) - //GRAPH /* get json from server @@ -127,106 +113,98 @@ if pressure lowers then weather gonna be bad if pressure uppers then weather gonna be good */ -//CONFIG -/* -beep time -on time -off time -mqtt update interval - -*/ //====================IN PROGRESS=================== -void editConfig(){ - if (server.args() > 0 ) { - for ( uint8_t i = 0; i < server.args(); i++ ){ - String Argument_Name = server.argName(i); - String client_response = server.arg(i); +// void editConfig(){ +// if (server.args() > 0 ) { +// for ( uint8_t i = 0; i < server.args(); i++ ){ +// String Argument_Name = server.argName(i); +// String client_response = server.arg(i); - if (Argument_Name == "beepDelay"){ - beepDelay = client_response.toInt(); - } - if (Argument_Name == "onTime"){ - onTime = client_response.toInt(); - } - if (Argument_Name == "offTime"){ - offTime = client_response.toInt(); - } - updateConfig(); - server.send(200, "text/plain", "updatedConfig"); - } - } else { - server.send(200, "text/plain", "to update config, goto " + String(WiFi.localIP()) + "/edit?parameter=value"); - } -} +// if (Argument_Name == "beepDelay"){ +// beepDelay = client_response.toInt(); +// } +// if (Argument_Name == "onTime"){ +// onTime = client_response.toInt(); +// } +// if (Argument_Name == "offTime"){ +// offTime = client_response.toInt(); +// } +// updateConfig(); +// server.send(200, "text/plain", "updatedConfig"); +// } +// } else { +// server.send(200, "text/plain", "to update config, goto " + String(WiFi.localIP()) + "/edit?parameter=value"); +// } +// } -bool updateConfig() { - StaticJsonBuffer<200> jsonBuffer; - JsonObject& json = jsonBuffer.createObject(); - json["onTime"] = onTime; - json["offTime"] = offTime; - json["beepDelay"] = beepDelay; - File configFile = SPIFFS.open("/config.json", "w"); - if (!configFile) { - Serial.println("Failed to open config file for writing"); - return false; - } +// bool updateConfig() { +// StaticJsonBuffer<200> jsonBuffer; +// JsonObject& json = jsonBuffer.createObject(); +// json["onTime"] = onTime; +// json["offTime"] = offTime; +// json["beepDelay"] = beepDelay; +// File configFile = SPIFFS.open("/config.json", "w"); +// if (!configFile) { +// Serial.println("Failed to open config file for writing"); +// return false; +// } - json.printTo(configFile); - return true; +// json.printTo(configFile); +// return true; -} +// } -bool readConfig() { - File configFile = SPIFFS.open("/config.json", "r"); - if (!configFile) { - Serial.println("Failed to open config file"); +// bool readConfig() { +// File configFile = SPIFFS.open("/config.json", "r"); +// if (!configFile) { +// Serial.println("Failed to open config file"); - return false; - } +// return false; +// } - size_t size = configFile.size(); - if (size > 1024) { - Serial.println("Config file size is too large"); - return false; - } +// size_t size = configFile.size(); +// if (size > 1024) { +// Serial.println("Config file size is too large"); +// return false; +// } - // Allocate a buffer to store contents of the file. - std::unique_ptr buf(new char[size]); +// // Allocate a buffer to store contents of the file. +// std::unique_ptr buf(new char[size]); - // We don't use String here because ArduinoJson library requires the input buffer to be mutable. If you don't use ArduinoJson, you may as well use configFile.readString instead. - configFile.readBytes(buf.get(), size); +// // We don't use String here because ArduinoJson library requires the input buffer to be mutable. If you don't use ArduinoJson, you may as well use configFile.readString instead. +// configFile.readBytes(buf.get(), size); - StaticJsonBuffer<200> jsonBuffer; - JsonObject& json = jsonBuffer.parseObject(buf.get()); +// StaticJsonBuffer<200> jsonBuffer; +// JsonObject& json = jsonBuffer.parseObject(buf.get()); - if (!json.success()) { - Serial.println("Failed to parse config file"); - return false; - } +// if (!json.success()) { +// Serial.println("Failed to parse config file"); +// return false; +// } - offTime = int(json["offTime"]); - onTime = int(json["onTime"]); - beepDelay = int(json["beepDelay"]); - return true; +// offTime = int(json["offTime"]); +// onTime = int(json["onTime"]); +// beepDelay = int(json["beepDelay"]); +// return true; -} -bool defConfig() { - StaticJsonBuffer<200> jsonBuffer; - JsonObject& json = jsonBuffer.createObject(); - json["onTime"] = "6"; - json["offTime"] = "23"; - json["beepDelay"] = "60"; - File configFile = SPIFFS.open("/config.json", "w"); - if (!configFile) { - Serial.println("Failed to open config file for writing"); - return false; - } +// } +// bool defConfig() { +// StaticJsonBuffer<200> jsonBuffer; +// JsonObject& json = jsonBuffer.createObject(); +// json["onTime"] = "6"; +// json["offTime"] = "23"; +// json["beepDelay"] = "60"; +// File configFile = SPIFFS.open("/config.json", "w"); +// if (!configFile) { +// Serial.println("Failed to open config file for writing"); +// return false; +// } - json.printTo(configFile); - return true; -} +// json.printTo(configFile); +// return true; +// } //====================paused=================== @@ -342,10 +320,13 @@ void humidCall(double x){ humid = x; } void updateNtp() { - if (lastNtp != timeClient.getHours()) { - if (timeClient.update()) - lastNtp = timeClient.getHours(); + // if (lastNtp != timeClient.getHours()) { + // if (timeClient.update()) + while (!timeClient.update()) { + delay(100); } + // lastNtp = timeClient.getHours(); + // } } bool nightMode() { if ((timeClient.getHours() > offTime)||(timeClient.getHours() < onTime)) { //turn off screen between loaded time