global vars

This commit is contained in:
Yuri Trikoz
2020-06-19 01:50:19 +03:00
parent 86e18f1e99
commit 5bec53e6c2
5 changed files with 321 additions and 222 deletions

View File

@@ -1,223 +1,45 @@
#include <Arduino.h>
#pragma once
#define firmware_version "2.3.3"
/*
* Firmware settings
*/
#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
/*******************************************************************
**********************FIRMWARE SETTINGS****************************
******************************************************************/
String firmware_version = "2.3.3";
boolean mb_4_of_memory = true;
//#define OTA_enable
//#define MDNS_enable
//#define WS_enable
//#define layout_in_ram
#define UDP_enable
/*==========================SENSORS===============================*/
/*
* Sensor
*/
//#define level_enable
//#define analog_enable
//#define dallas_enable
//#define dht_enable //подъедает оперативку сука
//#define dht_enable
//#define bmp_enable
//#define bme_enable
/*=========================LOGGING================================*/
/*
* Logging
*/
#define logging_enable
/*==========================GEARS=================================*/
/*
* Gears
*/
#define stepper_enable
#define servo_enable
/*=========================OTHER==================================*/
/*
* Other
*/
#define serial_enable
#define push_enable
/*================================================================*/
#define wifi_mqtt_reconnecting 20000
#define blink_pin 2
#define tank_level_times_to_send 10 //после скольки выстрелов делать отправку данных
#define statistics_update 1000 * 60 * 60 * 2
/*================================================================*/
//===============общие библиотеки и объекты===============================
#include <Arduino.h>
#include <ArduinoJson.h>
#include <ESPAsyncWebServer.h>
#include <FS.h>
#include <SPIFFSEditor.h>
#include <time.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>
Servo myServo1;
Servo myServo2;
#ifdef MDNS_enable
#include <ESP8266mDNS.h>
#endif
#endif
//===============библиотеки и объекты для ESP32===========================
#ifdef ESP32
#include <AsyncTCP.h>
#include <AsyncUDP.h>
#include <HTTPClient.h>
#include <HTTPUpdate.h>
#include <SPIFFS.h>
#include <WiFi.h>
#include <analogWrite.h>
AsyncUDP udp;
#include <ESP32Servo.h>
Servo myServo1;
Servo myServo2;
#ifdef MDNS_enable
#include <ESPmDNS.h>
#endif
#endif
#ifdef OTA_enable
#include <ArduinoOTA.h>
#endif
AsyncWebServer server(80);
#ifdef WS_enable
AsyncWebSocket ws("/ws");
#endif
AsyncEventSource events("/events");
#include <TickerScheduler.h>
#include <time.h>
enum { ROUTER_SEARCHING,
WIFI_MQTT_CONNECTION_CHECK,
SENSORS,
STEPPER1,
STEPPER2,
LOG1,
LOG2,
LOG3,
LOG4,
LOG5,
TIMER_COUNTDOWN,
TIME,
TIME_SYNC,
STATISTICS,
UDP,
UDP_DB,
TEST };
TickerScheduler ts(TEST + 1);
#include <PubSubClient.h>
WiFiClient espClient;
PubSubClient client_mqtt(espClient);
#include <StringCommand.h>
StringCommand sCmd;
#include <Bounce2.h>
#define NUM_BUTTONS 6
boolean but[NUM_BUTTONS];
Bounce *buttons = new Bounce[NUM_BUTTONS];
#ifdef level_enable
#include "GyverFilters.h" //настраивается в GyverHacks.h - MEDIAN_FILTER_SIZE
GMedian medianFilter;
#endif
#ifdef dallas_enable
#include <DallasTemperature.h>
#include <OneWire.h>
OneWire *oneWire;
DallasTemperature sensors;
#endif
#ifdef dht_enable
#include <DHTesp.h>
DHTesp dht;
#endif
#include <Wire.h>
#ifdef bmp_enable
#include <Adafruit_BMP280.h>
Adafruit_BMP280 bmp; // use I2C interface
Adafruit_Sensor *bmp_temp = bmp.getTemperatureSensor();
Adafruit_Sensor *bmp_pressure = bmp.getPressureSensor();
#endif
#ifdef bme_enable
#include <Adafruit_BME280.h>
Adafruit_BME280 bme; // use I2C interface
Adafruit_Sensor *bme_temp = bme.getTemperatureSensor();
Adafruit_Sensor *bme_pressure = bme.getPressureSensor();
Adafruit_Sensor *bme_humidity = bme.getHumiditySensor();
#endif
//#include <SoftwareSerial.h>
//SoftwareSerial mySerial(14, 12);
//===============FIRMWARE VARS========================
boolean just_load = true;
const char *hostName = "IoT Manager";
//JSON
String configSetup = "{}";
String configJson = "{}";
String optionJson = "{}";
//MQTT
String chipID = "";
String prex;
String all_widgets = "";
String scenario;
String order_loop;
//SENSORS
String analog_value_names_list;
int enter_to_analog_counter;
String level_value_name;
String dhtT_value_name;
String dhtH_value_name;
String bmp280T_value_name;
String bmp280P_value_name;
String bme280T_value_name;
String bme280P_value_name;
String bme280H_value_name;
String bme280A_value_name;
int sensors_reading_map[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
//============================0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14
//LOGGING
String logging_value_names_list;
int enter_to_logging_counter;
//NTP and TIME
String current_time;
//SCENARIO
int scenario_line_status[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
//ERRORS
int wifi_lost_error = 0;
int mqtt_lost_error = 0;
String last_version;
//ASYNC ACTIONS
boolean upgrade_url = false;
boolean upgrade = false;
boolean mqtt_connection = false;
boolean udp_data_parse = false;
boolean mqtt_send_settings_to_udp = false;
boolean i2c_scanning = false;
//UDP
boolean udp_busy = false;
unsigned int udp_port = 4210;
#ifdef ESP8266
IPAddress udp_multicastIP(255, 255, 255, 255);
#endif
#ifdef ESP32
IPAddress udp_multicastIP(239, 255, 255, 255);
#endif
String received_ip;
String received_udp_line;
int udp_period;
//i2c
String i2c_list;

View File

@@ -1,9 +1,191 @@
#pragma once
#include <Arduino.h>
#include <ArduinoJson.h>
#include <Bounce2.h>
#include <ESPAsyncWebServer.h>
#include <FS.h>
#include <PubSubClient.h>
#include <SPIFFSEditor.h>
#include <StringCommand.h>
#include <TickerScheduler.h>
#include <time.h>
#include "Consts.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 <HTTPClient.h>
#include <HTTPUpdate.h>
#include <SPIFFS.h>
#include <WiFi.h>
#include <analogWrite.h>
extern AsyncUDP udp;
#include <ESP32Servo.h>
#ifdef MDNS_enable
#include <ESPmDNS.h>
#endif
#endif
extern Servo myServo1;
extern Servo myServo2;
#ifdef OTA_enable
#include <ArduinoOTA.h>
#endif
extern AsyncWebServer server;
// Global vars
extern boolean just_load;
extern const char *hostName;
extern String configSetup;
extern String configJson;
extern String optionJson;
extern String chipID;
extern String prex;
extern String all_widgets;
extern String scenario;
extern String order_loop;
extern String analog_value_names_list;
extern int enter_to_analog_counter;
extern String level_value_name;
extern String dhtT_value_name;
extern String dhtH_value_name;
extern String bmp280T_value_name;
extern String bmp280P_value_name;
extern String bme280T_value_name;
extern String bme280P_value_name;
extern String bme280H_value_name;
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;
extern boolean upgrade;
extern boolean mqtt_connection;
extern boolean udp_data_parse;
extern boolean mqtt_send_settings_to_udp;
extern boolean i2c_scanning;
#ifdef WS_enable
extern AsyncWebSocket ws;
#endif
extern AsyncEventSource events;
extern int sensors_reading_map[15];
enum { ROUTER_SEARCHING,
WIFI_MQTT_CONNECTION_CHECK,
SENSORS,
STEPPER1,
STEPPER2,
LOG1,
LOG2,
LOG3,
LOG4,
LOG5,
TIMER_COUNTDOWN,
TIME,
TIME_SYNC,
STATISTICS,
UDP,
UDP_DB,
TEST };
extern TickerScheduler ts;
extern WiFiClient espClient;
extern PubSubClient client_mqtt;
extern StringCommand sCmd;
#define NUM_BUTTONS 6
extern boolean but[NUM_BUTTONS];
extern Bounce *buttons;
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;
#ifdef level_enable
#include "GyverFilters.h" //настраивается в GyverHacks.h - MEDIAN_FILTER_SIZE
GMedian medianFilter;
#endif
#ifdef dallas_enable
#include <DallasTemperature.h>
#include <OneWire.h>
OneWire *oneWire;
DallasTemperature sensors;
#endif
#ifdef dht_enable
#include <DHTesp.h>
DHTesp dht;
#endif
#include <Wire.h>
#ifdef bmp_enable
#include <Adafruit_BMP280.h>
Adafruit_BMP280 bmp; // use I2C interface
Adafruit_Sensor *bmp_temp = bmp.getTemperatureSensor();
Adafruit_Sensor *bmp_pressure = bmp.getPressureSensor();
#endif
#ifdef bme_enable
#include <Adafruit_BME280.h>
Adafruit_BME280 bme; // use I2C interface
Adafruit_Sensor *bme_temp = bme.getTemperatureSensor();
Adafruit_Sensor *bme_pressure = bme.getPressureSensor();
Adafruit_Sensor *bme_humidity = bme.getHumiditySensor();
#endif
//#include <SoftwareSerial.h>
//SoftwareSerial mySerial(14, 12);
// Cmd
extern void CMD_init();
extern void button();
@@ -61,12 +243,12 @@ extern void choose_log_date_and_send();
// Main
void getMemoryLoad(String text);
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 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 void saveConfig();
extern String jsonWriteFloat(String& json, String name, float volume);
extern String jsonWriteFloat(String &json, String name, float volume);
extern String getURL(String urls);
@@ -85,11 +267,10 @@ extern String selectFromMarkerToMarker(String str, String found, int number);
extern void servo_();
extern boolean isDigitStr(String str);
extern String jsonWriteStr(String& json, String name, String volume);
extern String jsonWriteStr(String &json, String name, String volume);
extern void led_blink(String satus);
extern int count(String str, String found);
// Mqtt
extern void MQTT_init();
extern boolean MQTT_Connecting();

View File

@@ -2,7 +2,7 @@
#include "Global.h"
inline void Push_init() {
void Push_init() {
server.on("/pushingboxDate", HTTP_GET, [](AsyncWebServerRequest* request) {
if (request->hasArg("pushingbox_id")) {
jsonWriteStr(configSetup, "pushingbox_id", request->getParam("pushingbox_id")->value());

100
src/Global.cpp Normal file
View File

@@ -0,0 +1,100 @@
#include "Global.h"
TickerScheduler ts(TEST + 1);
WiFiClient espClient;
PubSubClient client_mqtt(espClient);
StringCommand sCmd;
// Web
AsyncWebServer server(80);
#ifdef WS_enable
AsyncWebSocket ws("/ws");
#endif
AsyncEventSource events("/events");
// Global vars
boolean just_load = true;
const char *hostName = "IoT Manager";
// Json
String configSetup = "{}";
String configJson = "{}";
String optionJson = "{}";
// Mqtt
String chipID = "";
String prex;
String all_widgets = "";
String scenario;
String order_loop;
// Sensors
String analog_value_names_list;
int enter_to_analog_counter;
String level_value_name;
String dhtT_value_name;
String dhtH_value_name;
String bmp280T_value_name;
String bmp280P_value_name;
String bme280T_value_name;
String bme280P_value_name;
String bme280H_value_name;
String bme280A_value_name;
int sensors_reading_map[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
// Logging
String logging_value_names_list;
int enter_to_logging_counter;
// Ntp and time
String current_time;
// Scenario
int scenario_line_status[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
// Errors
int wifi_lost_error = 0;
int mqtt_lost_error = 0;
String last_version;
// Async actions
boolean upgrade_url = false;
boolean upgrade = false;
boolean mqtt_connection = false;
boolean udp_data_parse = false;
boolean mqtt_send_settings_to_udp = false;
boolean i2c_scanning = false;
// Servo
Servo myServo1;
Servo myServo2;
//Buttons
boolean but[NUM_BUTTONS];
Bounce *buttons = new Bounce[NUM_BUTTONS];
// Udp
boolean udp_busy = false;
unsigned int udp_port = 4210;
#ifdef ESP8266
IPAddress udp_multicastIP(255, 255, 255, 255);
#endif
#ifdef ESP32
IPAddress udp_multicastIP(239, 255, 255, 255);
AsyncUDP udp;
#endif
String received_ip;
String received_udp_line;
int udp_period;
// i2c
String i2c_list;

View File

@@ -66,7 +66,7 @@ void Device_init() {
int array_sz = sizeof(sensors_reading_map) / sizeof(sensors_reading_map[0]);
for (int i = 0; i < array_sz; i++) {
for (int i = 0; i < array_sz; i++) {
sensors_reading_map[i] = 0;
}
@@ -219,20 +219,16 @@ void statistics() {
urls += "iot-manager_esp32";
#endif
urls += "&";
//-----------------------------------------------------------------
#ifdef ESP8266
urls += ESP.getResetReason();
//Serial.println(ESP.getResetReason());
#endif
#ifdef ESP32
urls += "Power on";
#endif
urls += "&";
//-----------------------------------------------------------------
urls += "ver: " + firmware_version;
//-----------------------------------------------------------------
urls += "ver: ";
urls += String(firmware_version);
String stat = getURL(urls);
//Serial.println(stat);
}
}