Progress of renew of class

This commit is contained in:
Dmitry Borisenko
2020-11-17 01:01:42 +03:00
parent a20c2b8564
commit 06df1f17b6
33 changed files with 266 additions and 259 deletions

View File

@@ -3,8 +3,9 @@
//
#include "items/vSensorDallas.h"
#include "items/vButtonOut.h"
#include "items/vPwmOut.h"
#include "items/vInOutput.h"
#include "items/vLogging.h"
void loopCmdAdd(const String& cmdStr) {
orderBuf += cmdStr;
@@ -43,11 +44,8 @@ void csvCmdExecute(String& cmdStr) {
else if (order == F("button-in")) {
sCmd.addCommand(order.c_str(), buttonIn);
}
else if (order == F("input")) {
sCmd.addCommand(order.c_str(), input);
}
else if (order == F("output-text")) {
sCmd.addCommand(order.c_str(), textOut);
else if (order == F("inoutput")) {
sCmd.addCommand(order.c_str(), inOutput);
}
else if (order == F("analog-adc")) {
sCmd.addCommand(order.c_str(), analogAdc);

View File

@@ -46,8 +46,11 @@ int impuls_EnterCounter = -1;
String buttonOut_KeyList = "";
int buttonOut_EnterCounter = -1;
//=========================================
String input_KeyList = "";
int input_EnterCounter = -1;
String inOutput_KeyList = "";
int inOutput_EnterCounter = -1;
//=========================================
String pwmOut_KeyList = "";
int pwmOut_EnterCounter = -1;
//=========================================
// Sensors

View File

@@ -6,7 +6,8 @@
#include "items/vImpulsOut.h"
#include "items/vButtonOut.h"
#include "items/vSensorDallas.h"
#include "items/vInput.h"
#include "items/vInOutput.h"
#include "items/vPwmOut.h"
void loadConfig() {
configSetupJson = readFile("config.json", 4096);
@@ -15,6 +16,9 @@ void loadConfig() {
configStoreJson = readFile("store.json", 4096);
configStoreJson.replace("\r\n", "");
jsonWriteStr(configSetupJson, "warning1", "");
jsonWriteStr(configSetupJson, "warning2", "");
jsonWriteStr(configSetupJson, "chipID", chipId);
jsonWriteInt(configSetupJson, "firmware_version", FIRMWARE_VERSION);
@@ -57,11 +61,17 @@ void Device_init() {
buttonOut_KeyList = "";
buttonOut_EnterCounter = -1;
//======clear input params=======
if (myInput != nullptr) {
myInput->clear();
if (myInOutput != nullptr) {
myInOutput->clear();
}
input_KeyList = "";
input_EnterCounter = -1;
inOutput_KeyList = "";
inOutput_EnterCounter = -1;
//======clear pwm params=======
if (myPwmOut != nullptr) {
myPwmOut->clear();
}
pwmOut_KeyList = "";
pwmOut_EnterCounter = -1;
//===================================
@@ -94,28 +104,3 @@ void handle_uptime() {
jsonWriteStr(configSetupJson, "uptime", timeNow->getUptime());
}
//void handle_statistics() {
// if (isNetworkActive()) {
// String urls = "http://backup.privet.lv/visitors/?";
// //-----------------------------------------------------------------
// urls += WiFi.macAddress().c_str();
// urls += "&";
// //-----------------------------------------------------------------
//#ifdef ESP8266
// urls += "iot-manager_esp8266";
//#endif
//#ifdef ESP32
// urls += "iot-manager_esp32";
//#endif
// urls += "&";
//#ifdef ESP8266
// urls += ESP.getResetReason();
//#endif
//#ifdef ESP32
// urls += "Power on";
//#endif
// urls += "&";
// urls += String(FIRMWARE_VERSION);
// String stat = getURL(urls);
// }
//}

View File

@@ -61,7 +61,7 @@ void telegramMsgParse(String msg) {
SerialPrint("<-", "Telegram", "chat ID: " + String(jsonReadInt(configSetupJson, "chatId")) + "\n" + list);
}
else {
myBot->sendMessage(jsonReadInt(configSetupJson, "chatId"), "Wrong order, use /all to get all values, /get_id to get value, or /set_id_value to set value");
myBot->sendMessage(jsonReadInt(configSetupJson, "chatId"), F("Wrong order, use /all to get all values, /get_id to get value, or /set_id_value to set value"));
}
}

View File

@@ -26,23 +26,28 @@ void upgradeInit() {
getLastVersion();
if (lastVersion > 0) {
SerialPrint("I", "Update", "available version: " + String(lastVersion));
if (lastVersion > FIRMWARE_VERSION) {
jsonWriteStr(configSetupJson, "warning2", F("<div style='margin-top:10px;margin-bottom:10px;'><font color='black'><p style='border: 1px solid #DCDCDC; border-radius: 3px; background-color: #ffc7c7; padding: 10px;'>Вышла новая версия прошивки, нажмите <b>обновить прошивку</b></p></font></div>"));
}
}
};
}
void getLastVersion() {
if ((WiFi.status() == WL_CONNECTED)) {
#ifdef ESP8266
String tmp = getURL( serverIP + F("/projects/iotmanager/esp8266/esp8266ver/esp8266ver.txt"));
#else
String tmp = getURL( serverIP + F("/projects/iotmanager/esp32/esp32ver/esp32ver.txt"));
#endif
#ifdef ESP8266
String tmp = getURL(serverIP + F("/projects/iotmanager/esp8266/esp8266ver/esp8266ver.txt"));
#else
String tmp = getURL(serverIP + F("/projects/iotmanager/esp32/esp32ver/esp32ver.txt"));
#endif
if (tmp == "error") {
lastVersion = -1;
} else {
}
else {
lastVersion = tmp.toInt();
}
} else {
}
else {
lastVersion = -2;
}
jsonWriteInt(configSetupJson, "last_version", lastVersion);
@@ -89,15 +94,15 @@ bool upgradeFS() {
Serial.println("Start upgrade LittleFS, please wait...");
#ifdef ESP8266
ESPhttpUpdate.rebootOnUpdate(false);
t_httpUpdate_return retFS = ESPhttpUpdate.updateSpiffs(wifiClient, serverIP + F("/projects/iotmanager/esp8266/littlefs/littlefs.bin"));
t_httpUpdate_return retFS = ESPhttpUpdate.updateSpiffs(wifiClient, serverIP + F("/projects/iotmanager/esp8266/littlefs/littlefs.bin"));
#else
httpUpdate.rebootOnUpdate(false);
HTTPUpdateResult retFS = httpUpdate.updateSpiffs(wifiClient, serverIP + F("/projects/iotmanager/esp32/littlefs/spiffs.bin"));
HTTPUpdateResult retFS = httpUpdate.updateSpiffs(wifiClient, serverIP + F("/projects/iotmanager/esp32/littlefs/spiffs.bin"));
#endif
if (retFS == HTTP_UPDATE_OK) { //если FS обновилась успешно
SerialPrint("I", "Update", "LittleFS upgrade done!");
ret = true;
}
}
return ret;
}
@@ -108,16 +113,16 @@ bool upgradeBuild() {
#ifdef ESP8266
ESPhttpUpdate.rebootOnUpdate(false);
t_httpUpdate_return retBuild = ESPhttpUpdate.update(wifiClient, serverIP + F("/projects/iotmanager/esp8266/firmware/firmware.bin"));
t_httpUpdate_return retBuild = ESPhttpUpdate.update(wifiClient, serverIP + F("/projects/iotmanager/esp8266/firmware/firmware.bin"));
#else
httpUpdate.rebootOnUpdate(false);
HTTPUpdateResult retBuild = httpUpdate.update(wifiClient, serverIP + F("/projects/iotmanager/esp32/firmware/firmware.bin"));
HTTPUpdateResult retBuild = httpUpdate.update(wifiClient, serverIP + F("/projects/iotmanager/esp32/firmware/firmware.bin"));
#endif
if (retBuild == HTTP_UPDATE_OK) { //если BUILD обновился успешно
SerialPrint("I", "Update", "BUILD upgrade done!");
ret = true;
}
}
return ret;
}

View File

@@ -111,27 +111,27 @@ boolean isNetworkActive() {
return WiFi.status() == WL_CONNECTED;
}
String RSSIquality() {
String res = "not connected";
uint8_t RSSIquality() {
uint8_t res = 0;
if (WiFi.status() == WL_CONNECTED) {
int rssi = WiFi.RSSI();
if (rssi >= -50) {
res = "Excellent";
res = 6; //"Excellent";
}
else if (rssi < -50 && rssi >= -60) {
res = "Very good";
res = 5; //"Very good";
}
else if (rssi < -60 && rssi >= -70) {
res = "Good";
res = 4; //"Good";
}
else if (rssi < -70 && rssi >= -80) {
res = "Low";
res = 3; //"Low";
}
else if (rssi < -80 && rssi > -100) {
res = "Very low";
res = 2; //"Very low";
}
else if (rssi <= -100) {
res = "No signal";
res = 1; //"No signal";
}
}
return res;

View File

@@ -30,6 +30,7 @@ void web_init() {
}
if (request->hasArg("delChoosingItems")) {
jsonWriteStr(configSetupJson, "warning1", F("<div style='margin-top:10px;margin-bottom:10px;'><font color='black'><p style='border: 1px solid #DCDCDC; border-radius: 3px; background-color: #ffc7c7; padding: 10px;'>Требуется перезагрузка</p></font></div>"));
myNotAsyncActions->make(do_delChoosingItems);
request->send(200);
}
@@ -37,6 +38,7 @@ void web_init() {
if (request->hasArg("delAllItems")) {
delAllItems();
cleanLogAndData();
jsonWriteStr(configSetupJson, "warning1", F("<div style='margin-top:10px;margin-bottom:10px;'><font color='black'><p style='border: 1px solid #DCDCDC; border-radius: 3px; background-color: #ffc7c7; padding: 10px;'>Требуется перезагрузка</p></font></div>"));
request->redirect("/?set.device");
}

View File

@@ -1,19 +0,0 @@
#include "BufferExecute.h"
#include "items/OutputTextClass.h"
//===============================================Модуль вывода текста============================================
//output-text;id;anydata;Вывод;Сигнализация;order;st[Обнаружено.движение]
//===============================================================================================================
OutputTextClass myOutputText;
void textOut() {
myOutputText.update();
String key = myOutputText.gkey();
sCmd.addCommand(key.c_str(), textOutSet);
myOutputText.OutputModuleStateSetDefault();
myOutputText.clear();
}
void textOutSet() {
String key = sCmd.order();
String state = sCmd.next();
myOutputText.OutputModuleChange(key, state);
}

View File

@@ -1,24 +0,0 @@
#include "BufferExecute.h"
#include "items/PwmOutClass.h"
//==========================================Модуль управления ШИМ===================================================
//pwm-out volume range Кнопки Свет 1 pin[12] st[500]
//==================================================================================================================
PwmOutClass myPwmOut;
void pwmOut() {
myPwmOut.update();
String key = myPwmOut.gkey();
String pin = myPwmOut.gpin();
String inv = myPwmOut.ginv();
sCmd.addCommand(key.c_str(), pwmOutSet);
jsonWriteStr(configOptionJson, key + "_pin", pin);
myPwmOut.pwmModeSet();
myPwmOut.pwmStateSetDefault();
myPwmOut.clear();
}
void pwmOutSet() {
String key = sCmd.order();
String state = sCmd.next();
String pin = jsonReadStr(configOptionJson, key + "_pin");
myPwmOut.pwmChange(key, pin, state);
}

View File

@@ -1,11 +1,10 @@
#include "items/vButtonOut.h"
#include <Arduino.h>
#include "Class/LineParsing.h"
#include "Global.h"
#include "BufferExecute.h"
//this class save date to flash
#include <Arduino.h>
//this class save data to flash
ButtonOut::ButtonOut(unsigned int pin, boolean inv, String key) {
_pin = pin;
_inv = inv;

View File

@@ -1,4 +1,4 @@
#include "items/vInput.h"
#include "items/vInOutput.h"
#include <Arduino.h>
@@ -6,7 +6,7 @@
#include "Global.h"
#include "BufferExecute.h"
//this class save date to flash
Input::Input(String key, String widget) {
InOutput::InOutput(String key, String widget) {
_key = key;
String value = jsonReadStr(configStoreJson, key);
@@ -21,43 +21,43 @@ Input::Input(String key, String widget) {
this->execute(value);
}
Input::~Input() {}
InOutput::~InOutput() {}
void Input::execute(String value) {
void InOutput::execute(String value) {
eventGen2(_key, value);
jsonWriteStr(configStoreJson, _key, value);
saveStore();
publishStatus(_key, value);
}
MyInputVector* myInput = nullptr;
MyInOutputVector* myInOutput = nullptr;
void input() {
void inOutput() {
myLineParsing.update();
String widget = myLineParsing.gfile();
String key = myLineParsing.gkey();
myLineParsing.clear();
input_EnterCounter++;
addKey(key, input_KeyList, input_EnterCounter);
inOutput_EnterCounter++;
addKey(key, inOutput_KeyList, inOutput_EnterCounter);
static bool firstTime = true;
if (firstTime) myInput = new MyInputVector();
if (firstTime) myInOutput = new MyInOutputVector();
firstTime = false;
myInput->push_back(Input(key, widget));
myInOutput->push_back(InOutput(key, widget));
sCmd.addCommand(key.c_str(), inputExecute);
sCmd.addCommand(key.c_str(), inOutputExecute);
}
void inputExecute() {
void inOutputExecute() {
String key = sCmd.order();
String value = sCmd.next();
int number = getKeyNum(key, input_KeyList);
int number = getKeyNum(key, inOutput_KeyList);
if (myInput != nullptr) {
if (myInOutput != nullptr) {
if (number != -1) {
myInput->at(number).execute(value);
myInOutput->at(number).execute(value);
}
}
}

55
src/items/vPwmOut.cpp Normal file
View File

@@ -0,0 +1,55 @@
#include "items/vPwmOut.h"
#include "Class/LineParsing.h"
#include "Global.h"
#include "BufferExecute.h"
#include <Arduino.h>
//this class save data to flash
PwmOut::PwmOut(unsigned int pin, String key) {
_pin = pin;
_key = key;
pinMode(_pin, OUTPUT);
int state = jsonReadInt(configStoreJson, key);
this->execute(String(state));
}
PwmOut::~PwmOut() {}
void PwmOut::execute(String state) {
analogWrite(_pin, state.toInt());
eventGen2(_key, state);
jsonWriteInt(configStoreJson, _key, state.toInt());
saveStore();
publishStatus(_key, state);
}
MyPwmOutVector* myPwmOut = nullptr;
void pwmOut() {
myLineParsing.update();
String key = myLineParsing.gkey();
String pin = myLineParsing.gpin();
myLineParsing.clear();
pwmOut_EnterCounter++;
addKey(key, pwmOut_KeyList, pwmOut_EnterCounter);
static bool firstTime = true;
if (firstTime) myPwmOut = new MyPwmOutVector();
firstTime = false;
myPwmOut->push_back(PwmOut(pin.toInt(), key));
sCmd.addCommand(key.c_str(), pwmOutExecute);
}
void pwmOutExecute() {
String key = sCmd.order();
String state = sCmd.next();
int number = getKeyNum(key, pwmOut_KeyList);
if (myPwmOut != nullptr) {
if (number != -1) {
myPwmOut->at(number).execute(state);
}
}
}

View File

@@ -32,7 +32,7 @@ void setup() {
Serial.begin(115200);
Serial.flush();
Serial.println();
Serial.println("--------------started----------------");
Serial.println(F("--------------started----------------"));
setChipId();
@@ -40,57 +40,57 @@ void setup() {
myScenario = new Scenario();
fileSystemInit();
SerialPrint("I", "FS", "FS Init");
SerialPrint("I", F("FS"), F("FS Init"));
loadConfig();
SerialPrint("I", "Conf", "Config Init");
SerialPrint("I", F("Conf"), F("Config Init"));
clock_init();
SerialPrint("I", "Time", "Clock Init");
SerialPrint("I", F("Time"), F("Clock Init"));
handle_time_init();
SerialPrint("I", "Time", "Handle time init(");
SerialPrint("I", F("Time"), F("Handle time init"));
sensorsInit();
SerialPrint("I", "Sensors", "Sensors Init");
SerialPrint("I", F("Sensors"), F("Sensors Init"));
itemsListInit();
SerialPrint("I", "Items", "Items Init");
SerialPrint("I", F("Items"), F("Items Init"));
all_init();
SerialPrint("I", "Init", "Init Init");
SerialPrint("I", F("Init"), F("Init Init"));
routerConnect();
SerialPrint("I", "WIFI", "Network Init");
SerialPrint("I", F("WIFI"), F("Network Init"));
telegramInit();
SerialPrint("I", "Telegram", "Telegram Init");
SerialPrint("I", F("Telegram"), F("Telegram Init"));
uptime_init();
SerialPrint("I", "Uptime", "Uptime Init");
SerialPrint("I", F("Uptime"), F("Uptime Init"));
upgradeInit();
SerialPrint("I", "Update", "Updater Init");
SerialPrint("I", F("Update"), F("Updater Init"));
HttpServer::init();
SerialPrint("I", "HTTP", "HttpServer Init");
SerialPrint("I", F("HTTP"), F("HttpServer Init"));
web_init();
SerialPrint("I", "Web", "WebAdmin Init");
SerialPrint("I", F("Web"), F("WebAdmin Init"));
initSt();
SerialPrint("I", "Stat", "Stat Init");
SerialPrint("I", F("Stat"), F("Stat Init"));
#ifdef UDP_ENABLED
SerialPrint("I", "UDP", "Udp Init");
SerialPrint("I", F("UDP"), "Udp Init");
asyncUdpInit();
#endif
SerialPrint("I", "Bus", "Bus Init");
SerialPrint("I", F("Bus"), F("Bus Init"));
busInit();
#ifdef SSDP_ENABLED
SerialPrint("I", "SSDP", "Ssdp Init");
SerialPrint("I", F("SSDP"), F("Ssdp Init"));
SsdpInit();
#endif
@@ -99,7 +99,29 @@ void setup() {
ts.add(
TEST, 1000 * 60, [&](void*) {
SerialPrint("I", "System", printMemoryStatus());
jsonWriteStr(configSetupJson, "signal", RSSIquality());
switch (RSSIquality()) {
case 0:
jsonWriteStr(configSetupJson, F("signal"), F("Уровень WiFi сигнала: <font color='red'>не подключено к роутеру</font>"));
break;
case 1:
jsonWriteStr(configSetupJson, F("signal"), F("Уровень WiFi сигнала: <font color='red'>нет сигнала</font>"));
break;
case 2:
jsonWriteStr(configSetupJson, F("signal"), F("Уровень WiFi сигнала: <font color='red'>очень низкий</font>"));
break;
case 3:
jsonWriteStr(configSetupJson, F("signal"), F("Уровень WiFi сигнала: <font color='orange'>низкий</font>"));
break;
case 4:
jsonWriteStr(configSetupJson, F("signal"), F("Уровень WiFi сигнала: <font color='green'>хороший</font>"));
break;
case 5:
jsonWriteStr(configSetupJson, F("signal"), F("Уровень WiFi сигнала: <font color='green'>очень хороший</font>"));
break;
case 6:
jsonWriteStr(configSetupJson, F("signal"), F("Уровень WiFi сигнала: <font color='green'>отличный</font>"));
break;
}
},
nullptr, true);