Merge pull request #58 from IoTManagerProject/beta

261
This commit is contained in:
IoTManagerProject
2020-10-21 22:52:30 +03:00
committed by GitHub
37 changed files with 138 additions and 251 deletions

View File

@@ -1,6 +1,7 @@
{ {
"files.associations": { "files.associations": {
"*.tcc": "cpp", "*.tcc": "cpp",
"string": "cpp" "string": "cpp",
"functional": "cpp"
} }
} }

View File

@@ -1 +1 @@
0;input-time;id;inputTime;Ввод;Введите#время;order;st[10-00-00] 0;input-time;id;inputTime;Ввод;Введите#время;order;st[10:00:00]

View File

@@ -1 +1 @@
0;uptime;id;anydataTime;Системные;Uptime#(ver#%ver%);order 0;uptime;id;anydataTime;Системные;%name%#uptime;order

View File

@@ -1 +1 @@
Тип элемента;Id;Виджет;Имя вкладки;Имя виджета;Позиция виджета Удалить;Тип элемента;Id;Виджет;Имя вкладки;Имя виджета;Позиция виджета
1 Удалить Тип элемента Id Виджет Имя вкладки Имя виджета Позиция виджета

View File

@@ -31,7 +31,7 @@
}, },
{ {
"type": "h4", "type": "h4",
"title": "Time: {{time}}" "title": "Time: {{timenow}}"
}, },
{ {
"type": "h4", "type": "h4",
@@ -43,7 +43,7 @@
}, },
{ {
"type": "h4", "type": "h4",
"title": "LittleFS version: 260" "title": "LittleFS version: 261"
}, },
{ {
"type": "hr" "type": "hr"

View File

@@ -28,8 +28,7 @@
"type": "input", "type": "input",
"title": "{{SetWiFiNameOfDev}}", "title": "{{SetWiFiNameOfDev}}",
"name": "devname-arg", "name": "devname-arg",
"state": "{{name}}", "state": "{{name}}"
"pattern": "[A-Za-z0-9]{6,12}"
}, },
{ {
"type": "button", "type": "button",

6
data/widgets/btn.json Normal file
View File

@@ -0,0 +1,6 @@
{
"widget": "btn",
"size": "large",
"color": "green",
"send": "test"
}

View File

@@ -1,7 +1,8 @@
{ {
"widget": "select", "widget": "select",
"size" : "small", "options": [
"fill" : "outline", "Выключен",
"options" : "["Zero item", "First item", "Second item"]", "Включен"
"status" : 2 ],
"status": 0
} }

View File

@@ -92,6 +92,7 @@ class LineParsing {
_descr.replace("#", " "); _descr.replace("#", " ");
_descr.replace("%ver%", String(FIRMWARE_VERSION)); _descr.replace("%ver%", String(FIRMWARE_VERSION));
_descr.replace("%name%", jsonReadStr(configSetupJson, F("name")));
createWidgetClass(_descr, _page, _order, _file, _key); createWidgetClass(_descr, _page, _order, _file, _key);
} }

View File

@@ -1,17 +1,17 @@
#pragma once #pragma once
#include "Utils/TimeUtils.h"
#include "Utils/PrintMessage.h"
#include "Global.h"
#include "Clock.h" #include "Clock.h"
#include "Global.h"
#include "Utils/TimeUtils.h"
#include "Utils\SerialPrint.h"
extern void clock_init();
#ifdef ESP8266 #ifdef ESP8266
#include "sntp.h" #include "sntp.h"
#endif #endif
class Clock { class Clock {
private: private:
Time_t _time_local; Time_t _time_local;
Time_t _time_utc; Time_t _time_utc;
@@ -39,7 +39,6 @@ class Clock {
if (drift > 1) { if (drift > 1) {
// Обработать ситуации c дрифтом времени на значительные величины // Обработать ситуации c дрифтом времени на значительные величины
} }
// TODO сохранять время на флеше
_unixtime = now; _unixtime = now;
@@ -71,27 +70,26 @@ class Clock {
void startSync() { void startSync() {
if (!_configured) { if (!_configured) {
//SerialPrint("I","module","sync to: " + _ntp + " timezone: " + String(_timezone)); SerialPrint("I", "NTP", "sync to: " + _ntp + " timezone: " + String(_timezone));
setupSntp(); setupSntp();
_configured = true; _configured = true;
// лучше не ждать, проверим в следующий раз
return; return;
} }
_hasSynced = hasTimeSynced(); _hasSynced = hasTimeSynced();
if (_hasSynced) { if (_hasSynced) {
//SerialPrint("I","module","synced " + getDateDotFormated() + " " + getTime()); SerialPrint("I", "NTP", "synced " + getDateDotFormated() + " " + getTime());
} else { } else {
//SerialPrint("[E]","module","failed to obtain"); SerialPrint("E", "NTP", "failed to obtain time");
} }
} }
void setupSntp() { void setupSntp() {
#ifdef ESP2866 #ifdef ESP8266
sntp_setservername(0, _ntp.c_str()); sntp_setservername(0, _ntp.c_str());
sntp_setservername(1, "ru.pool.ntp.org"); sntp_setservername(1, "ru.pool.ntp.org");
sntp_setservername(2, "pool.ntp.org"); sntp_setservername(2, "pool.ntp.org");
sntp_stop(); sntp_stop();
sntp_set_timezone(0); // UTC time sntp_set_timezone(0);
sntp_init(); sntp_init();
#else #else
configTime(0, 0, _ntp.c_str(), "ru.pool.ntp.org", "pool.ntp.org"); configTime(0, 0, _ntp.c_str(), "ru.pool.ntp.org", "pool.ntp.org");
@@ -165,3 +163,4 @@ class Clock {
return prettyMillis(_uptime); return prettyMillis(_uptime);
} }
}; };
extern Clock* timeNow;

View File

@@ -5,7 +5,7 @@
// //
#ifdef ESP8266 #ifdef ESP8266
#define FIRMWARE_NAME "esp8266-iotm" #define FIRMWARE_NAME "esp8266-iotm"
#define FIRMWARE_VERSION 260 #define FIRMWARE_VERSION 261
#endif #endif
#ifdef ESP32 #ifdef ESP32
#define FIRMWARE_NAME "esp32-iotm" #define FIRMWARE_NAME "esp32-iotm"
@@ -85,7 +85,8 @@ struct Time_t {
enum TimerTask_t { WIFI_SCAN, enum TimerTask_t { WIFI_SCAN,
WIFI_MQTT_CONNECTION_CHECK, WIFI_MQTT_CONNECTION_CHECK,
SENSORS, SENSORS10SEC,
SENSORS30SEC,
STEPPER1, STEPPER1,
STEPPER2, STEPPER2,
LOG1, LOG1,

View File

@@ -1,52 +0,0 @@
#pragma once
#include <Arduino.h>
#include "Utils/StringUtils.h"
class Error : public Printable {
public:
static Error OK() {
return Error();
}
static Error InfoMessage(const char *message) {
return Error(EL_INFO, message);
}
static Error ErrorMessage(const char *message) {
return Error(EL_ERROR, message);
}
public:
Error() : _type{ET_NONE}, _level{EL_NONE} {};
Error(const ErrorLevel_t level, const char *message) : Error(ET_FUNCTION, level, message){};
Error(const ErrorType_t type, const ErrorLevel_t level, const char *message) : _type{type}, _level{level} {
strncpy(_message, message, sizeof(_message));
};
const ErrorLevel_t level() const { return _level; }
const ErrorType_t type() const { return _type; }
const char *message() const { return _message; }
operator bool() const { return _level != EL_NONE; }
const String toString() const {
char buf[128];
sprintf(buf, "[%c] %s", getErrorLevelStr(_level), _message);
return String(buf);
}
virtual size_t printTo(Print &p) const {
return p.println(toString().c_str());
}
private:
char _message[128];
ErrorType_t _type;
ErrorLevel_t _level;
};

View File

@@ -1,28 +1,10 @@
#pragma once #pragma once
//===================Libraries=================================================================================================================================================== //===================Libraries===================================================================================================================================================
#include <Arduino.h>
#include <ArduinoJson.h>
#include "ESP32.h"
#include "ESP8266.h"
#include "Consts.h"
#include "Errors.h"
#include "GyverFilters.h"
#include "Upgrade.h"
#include "Clock.h"
#include "MqttClient.h"
#include "Utils/FileUtils.h"
#include "Utils/JsonUtils.h"
#include "Utils/StringUtils.h"
#include "Utils/SysUtils.h"
#include "Utils/PrintMessage.h"
#include "Utils/WiFiUtils.h"
#include "Utils/SerialPrint.h"
#include <Adafruit_BME280.h> #include <Adafruit_BME280.h>
#include <Adafruit_BMP280.h> #include <Adafruit_BMP280.h>
#include <Arduino.h>
#include <ArduinoJson.h>
#include <ArduinoOTA.h>
#include <Bounce2.h> #include <Bounce2.h>
#include <DHTesp.h> #include <DHTesp.h>
#include <DallasTemperature.h> #include <DallasTemperature.h>
@@ -32,16 +14,27 @@
#include <TickerScheduler.h> #include <TickerScheduler.h>
#include <Wire.h> #include <Wire.h>
#include <time.h> #include <time.h>
#include <ArduinoOTA.h>
#include "Clock.h"
#include "Consts.h"
#include "ESP32.h"
#include "ESP8266.h"
#include "GyverFilters.h"
#include "MqttClient.h"
#include "Upgrade.h"
#include "Utils/FileUtils.h"
#include "Utils/JsonUtils.h"
#include "Utils/SerialPrint.h"
#include "Utils/StringUtils.h"
#include "Utils/SysUtils.h"
#include "Utils/WiFiUtils.h"
#ifdef WEBSOCKET_ENABLED #ifdef WEBSOCKET_ENABLED
extern AsyncWebSocket ws; extern AsyncWebSocket ws;
//extern AsyncEventSource events; //extern AsyncEventSource events;
#endif #endif
extern Clock* timeNow;
extern TickerScheduler ts; extern TickerScheduler ts;
extern WiFiClient espClient; extern WiFiClient espClient;
extern PubSubClient mqtt; extern PubSubClient mqtt;
@@ -52,7 +45,6 @@ extern OneWire *oneWire;
extern boolean but[NUM_BUTTONS]; extern boolean but[NUM_BUTTONS];
extern Bounce* buttons; extern Bounce* buttons;
//Global vars //Global vars
extern boolean just_load; extern boolean just_load;
@@ -74,7 +66,8 @@ extern String itemsFile;
extern String itemsLine; extern String itemsLine;
// Sensors // Sensors
extern String sensorReadingMap; extern String sensorReadingMap10sec;
extern String sensorReadingMap30sec;
extern int8_t dallasEnterCounter; extern int8_t dallasEnterCounter;
extern String logging_value_names_list; extern String logging_value_names_list;
@@ -98,7 +91,6 @@ extern String getURL(const String& urls);
extern void do_fscheck(); extern void do_fscheck();
extern void doBusScan(); extern void doBusScan();
extern void servo_(); extern void servo_();
extern void clock_init();
extern void setLedStatus(LedStatus_t); extern void setLedStatus(LedStatus_t);
@@ -106,8 +98,6 @@ extern void setLedStatus(LedStatus_t);
extern void eventGen(String event_name, String number); extern void eventGen(String event_name, String number);
extern String add_set(String param_name); extern String add_set(String param_name);
//Timers //Timers
extern void Timer_countdown_init(); extern void Timer_countdown_init();
extern void timerStart_(); extern void timerStart_();
@@ -132,8 +122,6 @@ extern void pushControl();
//extern void do_udp_data_parse(); //extern void do_udp_data_parse();
//extern void do_mqtt_send_settings_to_udp(); //extern void do_mqtt_send_settings_to_udp();
extern void do_update(); extern void do_update();
// Init // Init
@@ -141,4 +129,3 @@ extern void uptime_init();
// Web // Web
extern void web_init(); extern void web_init();

View File

@@ -1,47 +0,0 @@
#pragma once
#include "Arduino.h"
#include "Utils/StringUtils.h"
#include "Utils/TimeUtils.h"
#include "Errors.h"
#include "Global.h"
#define pm PrintMessage(MODULE)
class PrintMessage {
public:
PrintMessage(const char* module) {
_module = module;
}
void error(const String& str) {
print(EL_ERROR, str);
}
void info(const String& str) {
print(EL_INFO, str);
}
private:
void printErrorLevel(ErrorLevel_t level) {
Serial.printf("[%c] ", getErrorLevelStr(level));
}
void printUptime() {
Serial.printf("%lu ", ((unsigned long)millis() / 1000));
}
void printModule() {
Serial.printf("[%s] ", _module);
}
void print(const ErrorLevel_t level, const String& str) {
printUptime();
printErrorLevel(level);
printModule();
Serial.println(str.c_str());
}
private:
const char* _module;
};

View File

@@ -29,7 +29,7 @@ class SensorAnalogClass : public SensorConvertingClass {
eventGen(key, ""); eventGen(key, "");
jsonWriteStr(configLiveJson, key, String(valueFl)); jsonWriteStr(configLiveJson, key, String(valueFl));
publishStatus(key, String(valueFl)); publishStatus(key, String(valueFl));
Serial.println("I sensor '" + key + "' data: " + String(valueFl)); SerialPrint("I", "Sensor", "'" + key + "' data: " + String(valueFl));
return value; return value;
} }
}; };

View File

@@ -18,7 +18,7 @@ class SensorBme280Class : public SensorConvertingClass {
bme.begin(hexStringToUint8(_addr)); bme.begin(hexStringToUint8(_addr));
jsonWriteStr(configOptionJson, _key + "_map", _map); jsonWriteStr(configOptionJson, _key + "_map", _map);
jsonWriteStr(configOptionJson, _key + "_с", _c); jsonWriteStr(configOptionJson, _key + "_с", _c);
sensorReadingMap += _key + ","; sensorReadingMap10sec += _key + ",";
} }
void SensorBme280ReadTmp(String key) { void SensorBme280ReadTmp(String key) {
@@ -28,7 +28,7 @@ class SensorBme280Class : public SensorConvertingClass {
eventGen(key, ""); eventGen(key, "");
jsonWriteStr(configLiveJson, key, String(valueFl)); jsonWriteStr(configLiveJson, key, String(valueFl));
publishStatus(key, String(valueFl)); publishStatus(key, String(valueFl));
Serial.println("I sensor '" + key + "' data: " + String(valueFl)); SerialPrint("I", "Sensor", "'" + key + "' data: " + String(valueFl));
} }
void SensorBme280ReadHum(String key) { void SensorBme280ReadHum(String key) {
@@ -38,7 +38,7 @@ class SensorBme280Class : public SensorConvertingClass {
eventGen(key, ""); eventGen(key, "");
jsonWriteStr(configLiveJson, key, String(valueFl)); jsonWriteStr(configLiveJson, key, String(valueFl));
publishStatus(key, String(valueFl)); publishStatus(key, String(valueFl));
Serial.println("I sensor '" + key + "' data: " + String(valueFl)); SerialPrint("I", "Sensor", "'" + key + "' data: " + String(valueFl));
} }
void SensorBme280ReadPress(String key) { void SensorBme280ReadPress(String key) {
@@ -49,7 +49,7 @@ class SensorBme280Class : public SensorConvertingClass {
eventGen(key, ""); eventGen(key, "");
jsonWriteStr(configLiveJson, key, String(valueFl)); jsonWriteStr(configLiveJson, key, String(valueFl));
publishStatus(key, String(valueFl)); publishStatus(key, String(valueFl));
Serial.println("I sensor '" + key + "' data: " + String(valueFl)); SerialPrint("I", "Sensor", "'" + key + "' data: " + String(valueFl));
} }
}; };
extern SensorBme280Class mySensorBme280; extern SensorBme280Class mySensorBme280;

View File

@@ -17,7 +17,7 @@ class SensorBmp280Class : public SensorConvertingClass {
bmp.begin(hexStringToUint8(_addr)); bmp.begin(hexStringToUint8(_addr));
jsonWriteStr(configOptionJson, _key + "_map", _map); jsonWriteStr(configOptionJson, _key + "_map", _map);
jsonWriteStr(configOptionJson, _key + "_с", _c); jsonWriteStr(configOptionJson, _key + "_с", _c);
sensorReadingMap += _key + ","; sensorReadingMap10sec += _key + ",";
} }
void SensorBmp280ReadTmp(String key) { void SensorBmp280ReadTmp(String key) {
@@ -29,7 +29,7 @@ class SensorBmp280Class : public SensorConvertingClass {
eventGen(key, ""); eventGen(key, "");
jsonWriteStr(configLiveJson, key, String(valueFl)); jsonWriteStr(configLiveJson, key, String(valueFl));
publishStatus(key, String(valueFl)); publishStatus(key, String(valueFl));
Serial.println("I sensor '" + key + "' data: " + String(valueFl)); SerialPrint("I", "Sensor", "'" + key + "' data: " + String(valueFl));
} }
void SensorBmp280ReadPress(String key) { void SensorBmp280ReadPress(String key) {
@@ -42,7 +42,7 @@ class SensorBmp280Class : public SensorConvertingClass {
eventGen(key, ""); eventGen(key, "");
jsonWriteStr(configLiveJson, key, String(valueFl)); jsonWriteStr(configLiveJson, key, String(valueFl));
publishStatus(key, String(valueFl)); publishStatus(key, String(valueFl));
Serial.println("I sensor '" + key + "' data: " + String(valueFl)); SerialPrint("I", "Sensor", "'" + key + "' data: " + String(valueFl));
} }
}; };
extern SensorBmp280Class mySensorBmp280; extern SensorBmp280Class mySensorBmp280;

View File

@@ -14,7 +14,7 @@ class SensorDallasClass : public SensorConvertingClass {
sensors.begin(); sensors.begin();
sensors.setResolution(48); sensors.setResolution(48);
sensorReadingMap += _key + ","; sensorReadingMap10sec += _key + ",";
dallasEnterCounter++; dallasEnterCounter++;
jsonWriteInt(configOptionJson, _key + "_num", dallasEnterCounter); jsonWriteInt(configOptionJson, _key + "_num", dallasEnterCounter);
@@ -37,7 +37,7 @@ class SensorDallasClass : public SensorConvertingClass {
eventGen(key, ""); eventGen(key, "");
jsonWriteStr(configLiveJson, key, String(valueFl)); jsonWriteStr(configLiveJson, key, String(valueFl));
publishStatus(key, String(valueFl)); publishStatus(key, String(valueFl));
Serial.println("I sensor '" + key + "' data: " + String(valueFl)); SerialPrint("I", "Sensor", "'" + key + "' data: " + String(valueFl));
} }
} }
} }

View File

@@ -17,7 +17,7 @@ class SensorDhtClass : public SensorConvertingClass {
if (_type == "dht22") { if (_type == "dht22") {
dht.setup(_pin.toInt(), DHTesp::DHT22); dht.setup(_pin.toInt(), DHTesp::DHT22);
} }
sensorReadingMap += _key + ","; sensorReadingMap10sec += _key + ",";
//to do если надо будет читать несколько dht //to do если надо будет читать несколько dht
//dhtEnterCounter++; //dhtEnterCounter++;
@@ -44,7 +44,7 @@ class SensorDhtClass : public SensorConvertingClass {
eventGen(key, ""); eventGen(key, "");
jsonWriteStr(configLiveJson, key, String(valueFl)); jsonWriteStr(configLiveJson, key, String(valueFl));
publishStatus(key, String(valueFl)); publishStatus(key, String(valueFl));
Serial.println("I sensor '" + key + "' data: " + String(valueFl)); SerialPrint("I", "Sensor", "'" + key + "' data: " + String(valueFl));
} else { } else {
Serial.println("[E] sensor '" + key); Serial.println("[E] sensor '" + key);
} }
@@ -68,7 +68,7 @@ class SensorDhtClass : public SensorConvertingClass {
eventGen(key, ""); eventGen(key, "");
jsonWriteStr(configLiveJson, key, String(valueFl)); jsonWriteStr(configLiveJson, key, String(valueFl));
publishStatus(key, String(valueFl)); publishStatus(key, String(valueFl));
Serial.println("I sensor '" + key + "' data: " + String(valueFl)); SerialPrint("I", "Sensor", "'" + key + "' data: " + String(valueFl));
} else { } else {
Serial.println("[E] sensor '" + key); Serial.println("[E] sensor '" + key);
} }

View File

@@ -18,8 +18,8 @@
// uart.begin(9600); // uart.begin(9600);
// jsonWriteStr(configOptionJson, _key + "_map", _map); // jsonWriteStr(configOptionJson, _key + "_map", _map);
// jsonWriteStr(configOptionJson, _key + "_с", _c); // jsonWriteStr(configOptionJson, _key + "_с", _c);
// sensorReadingMap += _key + " " + _addr + " " + _reg + ","; // sensorReadingMap10sec += _key + " " + _addr + " " + _reg + ",";
// Serial.println(sensorReadingMap); // Serial.println(sensorReadingMap10sec);
// } // }
// //
// void SensorModbusRead(String key, uint8_t slaveAddress, uint16_t regAddress) { // void SensorModbusRead(String key, uint8_t slaveAddress, uint16_t regAddress) {
@@ -38,7 +38,7 @@
// eventGen(key, ""); // eventGen(key, "");
// jsonWriteStr(configLiveJson, key, String(valueFl)); // jsonWriteStr(configLiveJson, key, String(valueFl));
// publishStatus(key, String(valueFl)); // publishStatus(key, String(valueFl));
// Serial.println("I sensor '" + key + "' data: " + String(valueFl) + ", Slave dev addr: " + String(slaveAddress) + ", Register: " + String(regAddress)); // SerialPrint("I", "Sensor", "'" + key + "' data: " + String(valueFl) + ", Slave dev addr: " + String(slaveAddress) + ", Register: " + String(regAddress));
// } // }
// //
// bool getResultMsg(ModbusMaster* modbus1, uint16_t result) { // bool getResultMsg(ModbusMaster* modbus1, uint16_t result) {

View File

@@ -12,7 +12,7 @@ class SensorUltrasonic : public SensorConvertingClass {
public: public:
SensorUltrasonic() : SensorConvertingClass(){}; SensorUltrasonic() : SensorConvertingClass(){};
void init() { void init() {
sensorReadingMap += _key + ","; sensorReadingMap10sec += _key + ",";
String trig = selectFromMarkerToMarker(_pin, ",", 0); String trig = selectFromMarkerToMarker(_pin, ",", 0);
String echo = selectFromMarkerToMarker(_pin, ",", 1); String echo = selectFromMarkerToMarker(_pin, ",", 1);
pinMode(trig.toInt(), OUTPUT); pinMode(trig.toInt(), OUTPUT);
@@ -43,7 +43,7 @@ class SensorUltrasonic : public SensorConvertingClass {
eventGen(key, ""); eventGen(key, "");
jsonWriteStr(configLiveJson, key, String(valueFl)); jsonWriteStr(configLiveJson, key, String(valueFl));
publishStatus(key, String(valueFl)); publishStatus(key, String(valueFl));
Serial.println("I sensor '" + key + "' data: " + String(valueFl)); SerialPrint("I", "Sensor", "'" + key + "' data: " + String(valueFl));
} }
}; };
extern SensorUltrasonic mySensorUltrasonic; extern SensorUltrasonic mySensorUltrasonic;

View File

@@ -1,9 +1,7 @@
#include "BufferExecute.h" #include "BufferExecute.h"
#include "Global.h" #include "Global.h"
#include "Module/Terminal.h" #include "Module/Terminal.h"
#include "Errors.h"
void loopCmdAdd(const String &cmdStr) { void loopCmdAdd(const String &cmdStr) {
orderBuf += cmdStr; orderBuf += cmdStr;
@@ -18,7 +16,6 @@ void fileCmdExecute(const String &filename) {
} }
void csvCmdExecute(String &cmdStr) { void csvCmdExecute(String &cmdStr) {
cmdStr.replace(";", " "); cmdStr.replace(";", " ");
cmdStr += "\r\n"; cmdStr += "\r\n";
cmdStr.replace("\r\n", "\n"); cmdStr.replace("\r\n", "\n");
@@ -55,8 +52,19 @@ void loopCmdExecute() {
void sensorsInit() { void sensorsInit() {
ts.add( ts.add(
SENSORS, 10000, [&](void *) { SENSORS10SEC, 10000, [&](void *) {
String buf = sensorReadingMap; String buf = sensorReadingMap10sec;
while (buf.length()) {
String tmp = selectToMarker(buf, ",");
sCmd.readStr(tmp);
buf = deleteBeforeDelimiter(buf, ",");
}
},
nullptr, true);
ts.add(
SENSORS30SEC, 30000, [&](void *) {
String buf = sensorReadingMap30sec;
while (buf.length()) { while (buf.length()) {
String tmp = selectToMarker(buf, ","); String tmp = selectToMarker(buf, ",");
sCmd.readStr(tmp); sCmd.readStr(tmp);
@@ -66,8 +74,3 @@ void sensorsInit() {
nullptr, true); nullptr, true);
} }
//void loopSerial() {
// if (term) {
// term->loop();
// }
//}

16
src/Clock.cpp Normal file
View File

@@ -0,0 +1,16 @@
#include "Clock.h"
#include "Global.h"
Clock* timeNow;
void clock_init() {
timeNow = new Clock;
timeNow->setNtpPool(jsonReadStr(configSetupJson, "ntp"));
timeNow->setTimezone(jsonReadStr(configSetupJson, "timezone").toInt());
ts.add(
TIME_SYNC, 30000, [&](void*) {
timeNow->hasSync();
},
nullptr, true);
}

View File

@@ -4,7 +4,7 @@
AsyncWebSocket ws; AsyncWebSocket ws;
//AsyncEventSource events; //AsyncEventSource events;
#endif #endif
Clock* timeNow;
TickerScheduler ts(TEST + 1); TickerScheduler ts(TEST + 1);
WiFiClient espClient; WiFiClient espClient;
PubSubClient mqtt(espClient); PubSubClient mqtt(espClient);
@@ -39,7 +39,8 @@ String itemsLine = "";
// Sensors // Sensors
int8_t dallasEnterCounter = -1; int8_t dallasEnterCounter = -1;
String sensorReadingMap; String sensorReadingMap10sec;
String sensorReadingMap30sec;
// Logging // Logging
String logging_value_names_list; String logging_value_names_list;

View File

@@ -5,7 +5,7 @@
void loadConfig() { void loadConfig() {
configSetupJson = readFile("config.json", 4096); configSetupJson = readFile("config.json", 4096);
configSetupJson.replace(" ", ""); //configSetupJson.replace(" ", "");
configSetupJson.replace("\r\n", ""); configSetupJson.replace("\r\n", "");
jsonWriteStr(configSetupJson, "chipID", chipId); jsonWriteStr(configSetupJson, "chipID", chipId);
@@ -24,7 +24,7 @@ void all_init() {
void Device_init() { void Device_init() {
sensorReadingMap = ""; sensorReadingMap10sec = "";
dallasEnterCounter = -1; dallasEnterCounter = -1;
//logging_value_names_list = ""; //logging_value_names_list = "";

View File

@@ -117,7 +117,6 @@ void mqttCallback(char* topic, uint8_t* payload, size_t length) {
#endif #endif
} else if (topicStr.indexOf("control")) { } else if (topicStr.indexOf("control")) {
//iotTeam/12882830-1458415/light 1
String key = selectFromMarkerToMarker(topicStr, "/", 3); String key = selectFromMarkerToMarker(topicStr, "/", 3);
@@ -135,14 +134,6 @@ void mqttCallback(char* topic, uint8_t* payload, size_t length) {
if (payloadStr == "1") { if (payloadStr == "1") {
myNotAsyncActions->make(do_UPGRADE); myNotAsyncActions->make(do_UPGRADE);
} }
} else if (topicStr.indexOf("devc")) {
writeFile(String(DEVICE_CONFIG_FILE), payloadStr);
Device_init();
} else if (topicStr.indexOf("devs")) {
writeFile(String(DEVICE_SCENARIO_FILE), payloadStr);
loadScenario();
} }
} }
@@ -231,9 +222,6 @@ void publishWidgets() {
void publishState() { void publishState() {
// берет строку json и ключи превращает в топики а значения колючей в них посылает // берет строку json и ключи превращает в топики а значения колючей в них посылает
// {"name":"MODULES","lang":"","ip":"192.168.43.60","DS":"34.00","rel1":"1","rel2":"1"}
// "name":"MODULES","lang":"","ip":"192.168.43.60","DS":"34.00","rel1":"1","rel2":"1"
// "name":"MODULES","lang":"","ip":"192.168.43.60","DS":"34.00","rel1":"1","rel2":"1",
String str = configLiveJson; String str = configLiveJson;
str.replace("{", ""); str.replace("{", "");
str.replace("}", ""); str.replace("}", "");
@@ -242,13 +230,13 @@ void publishState() {
while (str.length()) { while (str.length()) {
String tmp = selectToMarker(str, ","); String tmp = selectToMarker(str, ",");
String topic = selectToMarker(tmp, ":"); String topic = selectToMarker(tmp, "\":");
topic.replace("\"", ""); topic.replace("\"", "");
String state = selectToMarkerLast(tmp, ":"); String state = selectToMarkerLast(tmp, "\":");
state.replace("\"", ""); state.replace("\"", "");
if ((topic != "time") && (topic != "name") && (topic != "lang") && (topic != "ip") && (topic.indexOf("_in") < 0)) { if (topic != "timenow") {
publishStatus(topic, state); publishStatus(topic, state);
} }
str = deleteBeforeDelimiter(str, ","); str = deleteBeforeDelimiter(str, ",");

View File

@@ -14,8 +14,6 @@ String xmlNode(String tags, String data);
String decToHex(uint32_t decValue, byte desiredStringLength); String decToHex(uint32_t decValue, byte desiredStringLength);
//39164
//457684
void SsdpInit() { void SsdpInit() {
server.on("/description.xml", HTTP_GET, [](AsyncWebServerRequest* request) { server.on("/description.xml", HTTP_GET, [](AsyncWebServerRequest* request) {
String ssdpSend = F("<root xmlns=\"urn:schemas-upnp-org:device-1-0\">"); String ssdpSend = F("<root xmlns=\"urn:schemas-upnp-org:device-1-0\">");

View File

@@ -57,7 +57,7 @@
// //eventGen(dhtT_value_name, ""); // //eventGen(dhtT_value_name, "");
// //jsonWriteStr(configLiveJson, dhtT_value_name, String(value)); // //jsonWriteStr(configLiveJson, dhtT_value_name, String(value));
// // publishStatus(dhtT_value_name, String(value)); // // publishStatus(dhtT_value_name, String(value));
// //Serial.println("I sensor '" + dhtT_value_name + "' data: " + String(value)); // //SerialPrint("I", "Sensor", "'" + dhtT_value_name + "' data: " + String(value));
// } // }
// } // }
//} //}
@@ -95,7 +95,7 @@
// //eventGen(dhtH_value_name, ""); // //eventGen(dhtH_value_name, "");
// //jsonWriteStr(configLiveJson, dhtH_value_name, String(value)); // //jsonWriteStr(configLiveJson, dhtH_value_name, String(value));
// // publishStatus(dhtH_value_name, String(value)); // // publishStatus(dhtH_value_name, String(value));
// //Serial.println("I sensor '" + dhtH_value_name + "' data: " + String(value)); // //SerialPrint("I", "Sensor", "'" + dhtH_value_name + "' data: " + String(value));
// } // }
// } // }
//} //}
@@ -120,7 +120,7 @@
// eventGen("dhtPerception", ""); // eventGen("dhtPerception", "");
// publishStatus("dhtPerception", final_line); // publishStatus("dhtPerception", final_line);
// if (mqtt.connected()) { // if (mqtt.connected()) {
// Serial.println("I sensor 'dhtPerception' data: " + final_line); // SerialPrint("I", "Sensor", "'dhtPerception' data: " + final_line);
// } // }
// } // }
//} //}
@@ -144,7 +144,7 @@
// jsonWriteStr(configLiveJson, "dhtComfort", final_line); // jsonWriteStr(configLiveJson, "dhtComfort", final_line);
// eventGen("dhtComfort", ""); // eventGen("dhtComfort", "");
// publishStatus("dhtComfort", final_line); // publishStatus("dhtComfort", final_line);
// Serial.println("I sensor 'dhtComfort' send date " + final_line); // SerialPrint("I", "Sensor", "'dhtComfort' send date " + final_line);
// } // }
//} //}
// //
@@ -236,7 +236,7 @@
// jsonWriteInt(configLiveJson, "dhtDewpoint", value); // jsonWriteInt(configLiveJson, "dhtDewpoint", value);
// eventGen("dhtDewpoint", ""); // eventGen("dhtDewpoint", "");
// publishStatus("dhtDewpoint", String(value)); // publishStatus("dhtDewpoint", String(value));
// Serial.println("I sensor 'dhtDewpoint' data: " + String(value)); // SerialPrint("I", "Sensor", "'dhtDewpoint' data: " + String(value));
// } // }
//} //}
//#endif //#endif
@@ -272,7 +272,7 @@
// //jsonWriteStr(configLiveJson, bmp280T_value_name, String(value)); // //jsonWriteStr(configLiveJson, bmp280T_value_name, String(value));
// //eventGen(bmp280T_value_name, ""); // //eventGen(bmp280T_value_name, "");
// // publishStatus(bmp280T_value_name, String(value)); // // publishStatus(bmp280T_value_name, String(value));
// //Serial.println("I sensor '" + bmp280T_value_name + "' data: " + String(value)); // //SerialPrint("I", "Sensor", "'" + bmp280T_value_name + "' data: " + String(value));
//} //}
// //
////bmp280P press1 0x76 Давление#bmp280 Датчики any-data 2 ////bmp280P press1 0x76 Давление#bmp280 Датчики any-data 2
@@ -304,7 +304,7 @@
// //jsonWriteStr(configLiveJson, bmp280P_value_name, String(value)); // //jsonWriteStr(configLiveJson, bmp280P_value_name, String(value));
// //eventGen(bmp280P_value_name, ""); // //eventGen(bmp280P_value_name, "");
// // publishStatus(bmp280P_value_name, String(value)); // // publishStatus(bmp280P_value_name, String(value));
// //Serial.println("I sensor '" + bmp280P_value_name + "' data: " + String(value)); // //SerialPrint("I", "Sensor", "'" + bmp280P_value_name + "' data: " + String(value));
//} //}
// //
////========================================================================================================================================= ////=========================================================================================================================================
@@ -329,7 +329,7 @@
// //jsonWriteStr(configLiveJson, bme280T_value_name, String(value)); // //jsonWriteStr(configLiveJson, bme280T_value_name, String(value));
// //eventGen(bme280T_value_name, ""); // //eventGen(bme280T_value_name, "");
// // publishStatus(bme280T_value_name, String(value)); // // publishStatus(bme280T_value_name, String(value));
// //Serial.println("I sensor '" + bme280T_value_name + "' data: " + String(value)); // //SerialPrint("I", "Sensor", "'" + bme280T_value_name + "' data: " + String(value));
//} //}
// //
////bme280P pres1 0x76 Давление#bmp280 Датчики any-data 1 ////bme280P pres1 0x76 Давление#bmp280 Датчики any-data 1
@@ -353,7 +353,7 @@
// //jsonWriteStr(configLiveJson, bme280P_value_name, String(value)); // //jsonWriteStr(configLiveJson, bme280P_value_name, String(value));
// //eventGen(bme280P_value_name, ""); // //eventGen(bme280P_value_name, "");
// // publishStatus(bme280P_value_name, String(value)); // // publishStatus(bme280P_value_name, String(value));
// //Serial.println("I sensor '" + bme280P_value_name + "' data: " + String(value)); // //SerialPrint("I", "Sensor", "'" + bme280P_value_name + "' data: " + String(value));
//} //}
// //
////bme280H hum1 0x76 Влажность#bmp280 Датчики any-data 1 ////bme280H hum1 0x76 Влажность#bmp280 Датчики any-data 1
@@ -376,7 +376,7 @@
// //jsonWriteStr(configLiveJson, bme280H_value_name, String(value)); // //jsonWriteStr(configLiveJson, bme280H_value_name, String(value));
// //eventGen(bme280H_value_name, ""); // //eventGen(bme280H_value_name, "");
// // publishStatus(bme280H_value_name, String(value)); // // publishStatus(bme280H_value_name, String(value));
// //Serial.println("I sensor '" + bme280H_value_name + "' data: " + String(value)); // //SerialPrint("I", "Sensor", "'" + bme280H_value_name + "' data: " + String(value));
//} //}
// //
////bme280A altit1 0x76 Высота#bmp280 Датчики any-data 1 ////bme280A altit1 0x76 Высота#bmp280 Датчики any-data 1
@@ -401,5 +401,5 @@
// //
// // publishStatus(bme280A_value_name, String(value)); // // publishStatus(bme280A_value_name, String(value));
// //
// //Serial.println("I sensor '" + bme280A_value_name + "' data: " + String(value)); // //SerialPrint("I", "Sensor", "'" + bme280A_value_name + "' data: " + String(value));
//} //}

View File

@@ -25,7 +25,7 @@ void upgradeInit() {
if (isNetworkActive()) { if (isNetworkActive()) {
getLastVersion(); getLastVersion();
if (lastVersion > 0) { if (lastVersion > 0) {
SerialPrint("I", "Update", "available version: " + lastVersion); SerialPrint("I", "Update", "available version: " + String(lastVersion));
} }
}; };
} }

View File

@@ -1,5 +1,6 @@
#include "Utils/FileUtils.h" #include "Utils/FileUtils.h"
#include "Utils/PrintMessage.h" #include "Utils\SerialPrint.h"
#include "Utils/StringUtils.h"

View File

@@ -3,7 +3,7 @@
#include "Global.h" #include "Global.h"
void SerialPrint(String errorLevel, String module, String msg) { void SerialPrint(String errorLevel, String module, String msg) {
//if (module == "Stat" || module == "Update") { //if (module == "Stat") {
Serial.println(prettyMillis(millis()) + " [" + errorLevel + "] [" + module + "] " + msg); Serial.println(prettyMillis(millis()) + " [" + errorLevel + "] [" + module + "] " + msg);
//} //}
} }

View File

@@ -1,7 +1,7 @@
#include "Utils/SysUtils.h" #include "Utils/SysUtils.h"
#include "Global.h" #include "Global.h"
#include "Utils/PrintMessage.h"
const String getUniqueId(const char* name) { const String getUniqueId(const char* name) {
return String(name) + getMacAddress(); return String(name) + getMacAddress();

View File

@@ -1,7 +1,6 @@
#include "ItemsCmd.h" #include "ItemsCmd.h"
#include "items/InputClass.h" #include "items/InputClass.h"
//==========================================Модуль ввода времени============================================ //==========================================Модуль ввода времени============================================
//input-time time1 inputTime Ввод Введите.время 4 st[10-00-00]
//========================================================================================================== //==========================================================================================================
InputClass myInputTime; InputClass myInputTime;
void inputTime() { void inputTime() {
@@ -21,8 +20,7 @@ void inputTimeSet() {
void handle_time_init() { void handle_time_init() {
ts.add( ts.add(
TIME, 1000, [&](void *) { TIME, 1000, [&](void *) {
jsonWriteStr(configLiveJson, "time", timeNow->getTime()); jsonWriteStr(configLiveJson, "timenow", timeNow->getTime());
jsonWriteStr(configLiveJson, "timenow", timeNow->getTimeJson());
eventGen("timenow", ""); eventGen("timenow", "");
}, },
nullptr, true); nullptr, true);

View File

@@ -8,7 +8,7 @@ void analogAdc() {
mySensorAnalog.update(); mySensorAnalog.update();
String key = mySensorAnalog.gkey(); String key = mySensorAnalog.gkey();
sCmd.addCommand(key.c_str(), analogReading); sCmd.addCommand(key.c_str(), analogReading);
sensorReadingMap += key + ","; sensorReadingMap10sec += key + ",";
mySensorAnalog.SensorAnalogInit(); mySensorAnalog.SensorAnalogInit();
mySensorAnalog.clear(); mySensorAnalog.clear();
} }

View File

@@ -7,16 +7,14 @@ void sysUptime() {
myLineParsing.update(); myLineParsing.update();
String key = myLineParsing.gkey(); String key = myLineParsing.gkey();
sCmd.addCommand(key.c_str(), uptimeReading); sCmd.addCommand(key.c_str(), uptimeReading);
sensorReadingMap += key + ","; sensorReadingMap30sec += key + ",";
myLineParsing.clear(); myLineParsing.clear();
} }
void uptimeReading() { void uptimeReading() {
String key = sCmd.order(); String key = sCmd.order();
eventGen(key, "");
String uptime = timeNow->getUptime(); String uptime = timeNow->getUptime();
uptime.replace(":", "-");
jsonWriteStr(configLiveJson, key, uptime); jsonWriteStr(configLiveJson, key, uptime);
publishStatus(key, uptime); publishStatus(key, uptime);
Serial.println("I sensor '" + key + "' data: " + uptime); SerialPrint("I", "Sensor", "'" + key + "' data: " + uptime);
} }

View File

@@ -117,15 +117,3 @@ void loop() {
myNotAsyncActions->loop(); myNotAsyncActions->loop();
ts.update(); ts.update();
} }
void clock_init() {
timeNow = new Clock();
timeNow->setNtpPool(jsonReadStr(configSetupJson, "ntp"));
timeNow->setTimezone(jsonReadStr(configSetupJson, "timezone").toInt());
ts.add(
TIME_SYNC, 30000, [&](void*) {
timeNow->hasSync();
},
nullptr, true);
}