global cleaning, restructure

This commit is contained in:
Yuri Trikoz
2020-06-20 14:27:58 +03:00
parent ece010976e
commit 6f310e5e07
81 changed files with 11067 additions and 1587 deletions

View File

@@ -1,17 +1,18 @@
#pragma once
//Здесь хранятся все настройки прошивки
#define firmware_version "2.3.4"
/*
* Firmware settings
* Здесь хранятся все настройки прошивки
*/
#define firmware_version "2.3.4"
#define NUM_BUTTONS 6
#define mb_4_of_memory 1
#define wifi_mqtt_reconnecting 20000
#define blink_pin 2
#define tank_level_times_to_send 10 //после скольки выстрелов делать отправку данных
#define statistics_update 1000 * 60 * 60 * 2
/*
* Optional
*/
//#define OTA_enable
//#define MDNS_enable
//#define WS_enable

18
include/ESP32_Spec.h Normal file
View File

@@ -0,0 +1,18 @@
#pragma once
#ifdef ESP32
#include <AsyncTCP.h>
#include <AsyncUDP.h>
#include <ESP32Servo.h>
#include <HTTPClient.h>
#include <HTTPUpdate.h>
#include <SPIFFS.h>
#include <WiFi.h>
#include <analogWrite.h>
#ifdef MDNS_enable
#include <ESPmDNS.h>
#endif
extern AsyncUDP udp;
#endif

16
include/ESP8266_Spec.h Normal file
View File

@@ -0,0 +1,16 @@
#pragma once
#ifdef ESP8266
#include <ESP8266HTTPClient.h>
#include <ESP8266HTTPUpdateServer.h>
#include <ESP8266httpUpdate.h>
#include <Servo.h>
#include <WiFiUdp.h>
#ifdef MDNS_enable
#include <ESP8266mDNS.h>
#endif
extern WiFiUDP Udp;
#endif

View File

@@ -1,74 +1,36 @@
#pragma once
//=========ПОДКЛЮЧЕНИЕ ОБЩИХ БИБЛИОТЕК===============
#include <Arduino.h>
#include <ArduinoJson.h>
#include <Bounce2.h>
#include <ESP8266HTTPUpdateServer.h>
#include <ESPAsyncWebServer.h>
extern AsyncWebServer server;
#include <Adafruit_BME280.h>
#include <Adafruit_BMP280.h>
#include <DHTesp.h>
#include <DallasTemperature.h>
#include <FS.h>
#include <OneWire.h>
#include <PubSubClient.h>
#include <SPIFFSEditor.h>
#include <StringCommand.h>
#include <TickerScheduler.h>
#include <UpTime.h>
#include <Wire.h>
#include <time.h>
#include "Consts.h"
#include "ESP32_Spec.h"
#include "ESP8266_Spec.h"
#include "GyverFilters.h"
//==============ESP8266 БИБЛИОТЕКИ===============
#ifdef ESP8266
#include <ESP8266HTTPClient.h>
#include <ESP8266HTTPUpdateServer.h>
#include <ESP8266WiFi.h>
#include <ESP8266httpUpdate.h>
ESP8266HTTPUpdateServer httpUpdater;
#include <WiFiUdp.h>
WiFiUDP Udp;
#include <Servo.h>
#ifdef MDNS_enable
#include <ESP8266mDNS.h>
#endif
#endif
//==============ESP32 БИБЛИОТЕКИ===============
#ifdef ESP32
#include <AsyncTCP.h>
#include <AsyncUDP.h>
#include <ESP32Servo.h>
#include <HTTPClient.h>
#include <HTTPUpdate.h>
#include <SPIFFS.h>
#include <WiFi.h>
#include <analogWrite.h>
extern AsyncUDP udp;
#ifdef MDNS_enable
#include <ESPmDNS.h>
#endif
#endif
#include "UptimeInterval.h"
#include "Utils\JsonUtils.h"
#include "Utils\StringUtils.h"
#include "Utils\TimeUtils.h"
//=========ПОДКЛЮЧЕНИЕ ОБЩИХ БИБЛИОТЕК===============
#include <Adafruit_BME280.h>
#include <Adafruit_BMP280.h>
#include <Bounce2.h>
#include <DHTesp.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#include <PubSubClient.h>
#include <StringCommand.h>
#include <TickerScheduler.h>
#include <Wire.h>
#include <time.h>
#ifdef OTA_enable
#include <ArduinoOTA.h>
#endif
extern Servo myServo1;
extern Servo myServo2;
//==============================Objects.h(без данных)==================================
#ifdef WS_enable
extern AsyncWebSocket ws;
#endif
//extern AsyncEventSource events;
extern TickerScheduler ts;
enum { ROUTER_SEARCHING,
WIFI_MQTT_CONNECTION_CHECK,
SENSORS,
@@ -88,51 +50,22 @@ enum { ROUTER_SEARCHING,
UDP_DB,
TEST };
extern WiFiClient espClient;
/*
* Global vars
*/
extern TickerScheduler ts;
#ifdef WS_enable
extern AsyncWebSocket ws;
//extern AsyncEventSource events;
#endif
extern PubSubClient client_mqtt;
extern StringCommand sCmd;
extern AsyncWebServer server;
//AsyncWebSocket ws;
//AsyncEventSource events;
#define NUM_BUTTONS 6
extern boolean but[NUM_BUTTONS];
extern Bounce *buttons;
extern GMedian<10, int> medianFilter;
extern OneWire *oneWire;
extern DallasTemperature sensors;
extern DHTesp dht;
extern Adafruit_BMP280 bmp;
extern Adafruit_Sensor *bmp_temp;
extern Adafruit_Sensor *bmp_pressure;
extern Adafruit_BME280 bme;
extern Adafruit_Sensor *bme_temp;
extern Adafruit_Sensor *bme_pressure;
extern Adafruit_Sensor *bme_humidity;
extern uptime_interval myUpTime;
///////////////////////////////////// Global vars ////////////////////////////////////////////////////////////////////
extern boolean udp_busy;
extern unsigned int udp_port;
extern IPAddress udp_multicastIP;
extern String received_ip;
extern String received_udp_line;
extern int udp_period;
extern boolean just_load;
extern const char *hostName;
extern String configSetupJson; //все настройки
extern String configLiveJson; //все данные с датчиков (связан с mqtt)
@@ -164,13 +97,8 @@ extern String bme280A_value_name;
extern String logging_value_names_list;
extern int enter_to_logging_counter;
extern String current_time;
extern int scenario_line_status[40];
extern int wifi_lost_error;
extern int mqtt_lost_error;
extern String last_version;
extern boolean upgrade_url;
@@ -182,24 +110,9 @@ extern boolean i2c_scanning;
extern int sensors_reading_map[15];
///////////////////////////////////// Functions////////////////////////////////////////////////////////////////////
// StringUtils
extern uint8_t hexStringToUint8(String hex);
extern uint16_t hexStringToUint16(String hex);
extern String selectToMarkerLast(String str, String found);
extern String selectToMarker(String str, String found);
extern String deleteAfterDelimiter(String str, String found);
extern String deleteBeforeDelimiter(String str, String found);
extern String deleteBeforeDelimiterTo(String str, String found);
extern String selectFromMarkerToMarker(String str, String found, int number);
// JsonUtils
extern String jsonReadStr(String &json, String name);
extern int jsonReadInt(String &json, String name);
extern String jsonWriteInt(String &json, String name, int volume);
extern String jsonWriteStr(String &json, String name, String volume);
extern String jsonWriteFloat(String &json, String name, float volume);
/*
* Global functions
*/
// Cmd
extern void CMD_init();
@@ -256,7 +169,7 @@ extern void clean_log_date();
extern void choose_log_date_and_send();
// Main
void getMemoryLoad(String text);
extern void getMemoryLoad(String text);
extern void saveConfig();
extern String getURL(const String &urls);
@@ -292,7 +205,6 @@ extern void eventGen(String event_name, String number);
extern String add_set(String param_name);
//Sensors
// И как раз тут хорошо просто в Sensors.h это пихать - а не в один здоровенный ФАЙЛ
extern void sensors_init();
extern void levelPr();
@@ -340,40 +252,27 @@ extern void timerStop_();
extern void delTimer(String number);
extern int readTimer(int number);
//TimeUtils
extern void Time_Init();
extern int timeToMin(String Time);
extern String GetDataDigital();
extern String GetDate();
extern String GetTimeWOsec();
extern String GetTime();
extern String GetTimeUnix();
extern void reconfigTime();
extern void saveConfig();
extern String GetTimeUnix();
extern void time_check();
//Upgrade
extern void initUpgrade();
//widget
// widget
extern void createWidget(String widget_name, String page_name, String page_number, String file, String topic);
extern void createWidgetParam(String widget_name, String page_name, String page_number, String file, String topic, String name1, String param1, String name2, String param2, String name3, String param3);
extern void choose_widget_and_create(String widget_name, String page_name, String page_number, String type, String topik);
extern void createChart(String widget_name, String page_name, String page_number, String file, String topic, String maxCount);
// Push
extern void Push_init();
// PushingBox
extern void pushControl();
// UDP
extern void UDP_init();
extern void do_udp_data_parse();
extern void do_mqtt_send_settings_to_udp();
// WebServer
extern void Web_server_init();
//iot_firmware
extern void not_async_actions();
// iot_firmware
extern void handleCMD_loop();
extern void handleButton();
extern void handleScenario();
@@ -381,8 +280,8 @@ extern void handleUdp();
extern void do_upgrade_url();
extern void do_upgrade();
//uptime
extern void handle_uptime();
extern void handle_statistics();
// Init
extern void uptime_init();
// Web
extern void web_init();

View File

@@ -1,43 +0,0 @@
#pragma once
#include <Arduino.h>
#include <ArduinoJson.h>
String jsonReadStr(String& json, String name) {
DynamicJsonBuffer jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(json);
return root[name].as<String>();
}
int jsonReadInt(String& json, String name) {
DynamicJsonBuffer jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(json);
return root[name];
}
String jsonWriteStr(String& json, String name, String volume) {
DynamicJsonBuffer jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(json);
root[name] = volume;
json = "";
root.printTo(json);
return json;
}
String jsonWriteInt(String& json, String name, int volume) {
DynamicJsonBuffer jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(json);
root[name] = volume;
json = "";
root.printTo(json);
return json;
}
String jsonWriteFloat(String& json, String name, float volume) {
DynamicJsonBuffer jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(json);
root[name] = volume;
json = "";
root.printTo(json);
return json;
}

View File

@@ -1,64 +0,0 @@
#pragma once
#include "Arduino.h"
String selectToMarkerLast(String str, String found) {
int p = str.lastIndexOf(found);
return str.substring(p + found.length());
}
String selectToMarker(String str, String found) {
int p = str.indexOf(found);
return str.substring(0, p);
}
String deleteAfterDelimiter(String str, String found) {
int p = str.indexOf(found);
return str.substring(0, p);
}
String deleteBeforeDelimiter(String str, String found) {
int p = str.indexOf(found) + found.length();
return str.substring(p);
}
String deleteBeforeDelimiterTo(String str, String found) {
int p = str.indexOf(found);
return str.substring(p);
}
String deleteToMarkerLast(String str, String found) {
int p = str.lastIndexOf(found);
return str.substring(0, p);
}
String selectToMarkerPlus(String str, String found, int plus) {
int p = str.indexOf(found);
return str.substring(0, p + plus);
}
String selectFromMarkerToMarker(String str, String found, int number) {
if (str.indexOf(found) == -1) return "not found"; // если строки поиск нет сразу выход
str += found; // добавим для корректного поиска
uint8_t i = 0; // Индекс перебора
do {
if (i == number) return selectToMarker(str, found); // если индекс совпал с позицией законцим вернем резултат
str = deleteBeforeDelimiter(str, found); // отбросим проверенный блок до разделителя
i++; // увеличим индекс
} while (str.length() != 0); // повторим пока строка не пустая
return "not found"; // Достигли пустой строки и ничего не нашли
}
inline uint8_t hexStringToUint8(String hex) {
uint8_t tmp = strtol(hex.c_str(), NULL, 0);
if (tmp >= 0x00 && tmp <= 0xFF) {
return tmp;
}
}
inline uint16_t hexStringToUint16(String hex) {
uint16_t tmp = strtol(hex.c_str(), NULL, 0);
if (tmp >= 0x0000 && tmp <= 0xFFFF) {
return tmp;
}
}

32
include/UptimeInterval.h Normal file
View File

@@ -0,0 +1,32 @@
#pragma once
#include <Arduino.h>
class UptimeInterval {
public:
UptimeInterval(unsigned long interval, boolean postpone = true) : _interval{interval} {
reset(postpone);
}
boolean check() {
if (_next <= get()) {
_next += _interval;
return true;
}
return false;
}
void reset(bool postpone = true) {
_next = (postpone ? _uptime_seconds + _interval : _uptime_seconds);
}
static unsigned long get() {
unsigned long _uptime_seconds = millis() / 1000;
return _uptime_seconds;
};
static unsigned long _uptime_seconds;
private:
unsigned long _interval, _next;
};

13
include/Utils/JsonUtils.h Normal file
View File

@@ -0,0 +1,13 @@
#pragma once
#include <Arduino.h>
String jsonReadStr(String& json, String name);
int jsonReadInt(String& json, String name);
String jsonWriteStr(String& json, String name, String volume);
String jsonWriteInt(String& json, String name, int volume);
String jsonWriteFloat(String& json, String name, float volume);

View File

@@ -0,0 +1,19 @@
#pragma once
#include <Arduino.h>
uint8_t hexStringToUint8(String hex);
uint16_t hexStringToUint16(String hex);
String selectToMarkerLast(String str, String found);
String selectToMarker(String str, String found);
String deleteAfterDelimiter(String str, String found);
String deleteBeforeDelimiter(String str, String found);
String deleteBeforeDelimiterTo(String str, String found);
String selectFromMarkerToMarker(String str, String found, int number);

26
include/Utils/TimeUtils.h Normal file
View File

@@ -0,0 +1,26 @@
#pragma once
#include <Arduino.h>
void Time_Init();
void time_check();
void reconfigTime();
/*
* Получение текущего времени
*/
String GetTime();
String GetTimeUnix();
String GetTimeWOsec();
String GetDate();
String GetDataDigital();
int timeToMin(String Time);
const String prettyMillis(unsigned long time_ms = millis());

View File

@@ -1,62 +0,0 @@
#pragma once
#include "Global.h"
void Push_init() {
server.on("/pushingboxDate", HTTP_GET, [](AsyncWebServerRequest* request) {
if (request->hasArg("pushingbox_id")) {
jsonWriteStr(configSetupJson, "pushingbox_id", request->getParam("pushingbox_id")->value());
}
saveConfig();
request->send(200, "text/text", "ok"); // отправляем ответ о выполнении
});
}
inline void pushControl() {
String title = sCmd.next();
title.replace("#", " ");
String body = sCmd.next();
body.replace("#", " ");
static String body_old;
const char* logServer = "api.pushingbox.com";
String deviceId = jsonReadStr(configSetupJson, "pushingbox_id");
Serial.println("- starting client");
WiFiClient client_push;
Serial.println("- connecting to pushing server: " + String(logServer));
if (!client_push.connect(logServer, 80)) {
Serial.println("- not connected");
} else {
Serial.println("- succesfully connected");
String postStr = "devid=";
postStr += String(deviceId);
postStr += "&title=";
postStr += String(title);
postStr += "&body=";
postStr += String(body);
postStr += "\r\n\r\n";
Serial.println("- sending data...");
client_push.print("POST /pushingbox HTTP/1.1\n");
client_push.print("Host: api.pushingbox.com\n");
client_push.print("Connection: close\n");
client_push.print("Content-Type: application/x-www-form-urlencoded\n");
client_push.print("Content-Length: ");
client_push.print(postStr.length());
client_push.print("\n\n");
client_push.print(postStr);
}
client_push.stop();
Serial.println("- stopping the client");
}