mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-27 06:32:19 +03:00
global cleaning, restructure
This commit is contained in:
@@ -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
18
include/ESP32_Spec.h
Normal 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
16
include/ESP8266_Spec.h
Normal 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
|
||||
181
include/Global.h
181
include/Global.h
@@ -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();
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
32
include/UptimeInterval.h
Normal 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
13
include/Utils/JsonUtils.h
Normal 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);
|
||||
19
include/Utils/StringUtils.h
Normal file
19
include/Utils/StringUtils.h
Normal 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
26
include/Utils/TimeUtils.h
Normal 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());
|
||||
@@ -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");
|
||||
}
|
||||
Reference in New Issue
Block a user