初始化提交
This commit is contained in:
1022
arduino-cli/libraries/ESP-QDPweb/QDPweb.cpp
Normal file
1022
arduino-cli/libraries/ESP-QDPweb/QDPweb.cpp
Normal file
File diff suppressed because it is too large
Load Diff
225
arduino-cli/libraries/ESP-QDPweb/QDPweb.h
Normal file
225
arduino-cli/libraries/ESP-QDPweb/QDPweb.h
Normal file
@@ -0,0 +1,225 @@
|
||||
#ifndef QDPweb_h
|
||||
#define QDPweb_h
|
||||
|
||||
/*
|
||||
* ESP-DASH V2
|
||||
* Made by Ayush Sharma
|
||||
* Github URL: https://github.com/ayushsharma82/ESP-DASH
|
||||
* Support Me: https://www.patreon.com/asrocks5
|
||||
*
|
||||
* - Version Changelog -
|
||||
* V1.0.0 - 11 Nov. 2017 - Library was Born
|
||||
* V1.0.1 - 13 Nov. 2017 - Fixed Empty SPIFFS Issue
|
||||
* V1.0.2 - 13 Nov. 2017 - Improvements on SPIFFS Issue
|
||||
* V1.0.3 - 24 Dec. 2017 - Pushing to Library Manager
|
||||
*
|
||||
* = Library Rewritten! =
|
||||
* V2.0.0 - 25 Jan 2019 - Wohoo! A breakthrough in performance and capabilities!
|
||||
*
|
||||
*
|
||||
* Credits:
|
||||
* Malcolm Brook (https://github.com/malbrook) for Slider Card
|
||||
*/
|
||||
|
||||
#include "Arduino.h"
|
||||
#include "stdlib_noniso.h"
|
||||
|
||||
#if defined(ESP8266)
|
||||
#define HARDWARE "ESP8266"
|
||||
#include "ESP8266WiFi.h"
|
||||
#include "ESPAsyncTCP.h"
|
||||
#include "ESPAsyncWebServer.h"
|
||||
#include "ArduinoJson.h"
|
||||
#elif defined(ESP32)
|
||||
#define HARDWARE "ESP32"
|
||||
#include <esp_int_wdt.h>
|
||||
#include <esp_task_wdt.h>
|
||||
#include "WiFi.h"
|
||||
#include "AsyncTCP.h"
|
||||
#include "ESPAsyncWebServer.h"
|
||||
#include "ArduinoJson.h"
|
||||
#endif
|
||||
|
||||
#include "webpage.h"
|
||||
|
||||
typedef std::function<void(const char* buttonId)> DashButtonHandler;
|
||||
typedef std::function<void(const char* sliderId, int sliderValue)> DashSliderHandler;
|
||||
|
||||
#define DEBUG_MODE 1 // change to 1 for DEBUG Messages
|
||||
|
||||
// Debug mode
|
||||
#define TEMPERATURE_CARD_TYPES 6
|
||||
#define STATUS_CARD_TYPES 4
|
||||
#define SLIDER_CARD_TYPES 4
|
||||
|
||||
#if defined(ESP8266)
|
||||
#define BUTTON_CARD_LIMIT 20
|
||||
#define NUMBER_CARD_LIMIT 20
|
||||
#define TEMPERATURE_CARD_LIMIT 20
|
||||
#define HUMIDITY_CARD_LIMIT 20
|
||||
#define STATUS_CARD_LIMIT 20
|
||||
#define LINE_CHART_LIMIT 5
|
||||
#define GAUGE_CHART_LIMIT 20
|
||||
#define SLIDER_CARD_LIMIT 10
|
||||
#elif defined(ESP32)
|
||||
#define BUTTON_CARD_LIMIT 50
|
||||
#define NUMBER_CARD_LIMIT 50
|
||||
#define TEMPERATURE_CARD_LIMIT 50
|
||||
#define HUMIDITY_CARD_LIMIT 50
|
||||
#define STATUS_CARD_LIMIT 50
|
||||
#define LINE_CHART_LIMIT 10
|
||||
#define GAUGE_CHART_LIMIT 50
|
||||
#define SLIDER_CARD_LIMIT 20
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
class QDPwebClass{
|
||||
|
||||
public:
|
||||
void init(AsyncWebServer& server);
|
||||
void disableStats(); // To Disable Stats and disable reboot
|
||||
|
||||
void addNumberCard(const char* _id, const char* _name, int _value = 0); // Add Number card with custom value
|
||||
void updateNumberCard(const char* _id, int _value); // Update Number Card with custom value
|
||||
|
||||
void addTemperatureCard(const char* _id, const char* _name, int _type, int _value = 0); // Add Temperature Card with custom value
|
||||
void updateTemperatureCard(const char* _id, int _value); // Update Temperature Card with custom value
|
||||
|
||||
void addHumidityCard(const char* _id, const char* _name, int _value = 0); // Add Humidity Card with custom value
|
||||
void updateHumidityCard(const char* _id, int _value); // Update Humidity Card with custom value
|
||||
|
||||
void addStatusCard(const char* _id, const char* _name, int _type = 0); // Add Status Card with more status types
|
||||
void addStatusCard(const char* _id, const char* _name, bool _type); // Add Status Card with true / false
|
||||
void updateStatusCard(const char* _id, int _type);
|
||||
void updateStatusCard(const char* _id, bool _type);
|
||||
|
||||
void addButtonCard(const char* _id, const char* _name); // Add Button
|
||||
|
||||
// Add Slider Card
|
||||
void addSliderCard(const char* _id, const char* _name, int _type);
|
||||
void updateSliderCard(const char* _id, int _value);
|
||||
|
||||
//Initiate a Line Chart with Integer x axis and custom y axis
|
||||
void addLineChart(const char* _id, const char* _name, int _x_axis_value[], int _x_axis_size, const char* _y_axis_name, int _y_axis_value[], int _y_axis_size);
|
||||
// Initiate a Line Chart with String x axis and custom y axis
|
||||
void addLineChart(const char* _id, const char* _name, String _x_axis_value[], int _x_axis_size, const char* _y_axis_name, int _y_axis_value[], int _y_axis_size);
|
||||
void updateLineChart(const char* _id, int _x_axis_value[], int _x_axis_size, int _y_axis_value[], int _y_axis_size); // Update a Line Chart with custom Int x axis and y axis
|
||||
void updateLineChart(const char* _id, String _x_axis_value[], int _x_axis_size, int _y_axis_value[], int _y_axis_size); // Update a Line Chart with custom String x axis and y axis
|
||||
|
||||
void addGaugeChart(const char *_id, const char *_name, int _value = 0); // Add Gauge card
|
||||
void updateGaugeChart(const char* _id, int _value); // Update Gauge card
|
||||
|
||||
|
||||
void attachButtonClick(DashButtonHandler handler){
|
||||
_buttonClickFunc = handler;
|
||||
}
|
||||
|
||||
void attachSliderChanged(DashSliderHandler handler){
|
||||
_sliderChangedFunc = handler;
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
bool stats_enabled = true;
|
||||
DashButtonHandler _buttonClickFunc;
|
||||
DashSliderHandler _sliderChangedFunc;
|
||||
// Button Cards
|
||||
// Data Relation:
|
||||
// (Handle Incomming Websocket Requests via Card ID) Card ID -> Card Name
|
||||
String button_card_id[BUTTON_CARD_LIMIT] = {};
|
||||
String button_card_name[BUTTON_CARD_LIMIT] = {};
|
||||
|
||||
// Number Cards
|
||||
// Card ID -> Card Name -> Integer Value
|
||||
String number_card_id[NUMBER_CARD_LIMIT] = {};
|
||||
String number_card_name[NUMBER_CARD_LIMIT] = {};
|
||||
uint16_t number_card_value[NUMBER_CARD_LIMIT] = {};
|
||||
|
||||
// Temperature Cards
|
||||
// Data Relation:
|
||||
// Card ID -> Card Name ->>
|
||||
// Types
|
||||
// 0 - °C [Celsius]
|
||||
// 1 - °F [Fahrenheit]
|
||||
// 2 - K [Kelvin]
|
||||
// 3 - °R [Rakine]
|
||||
// 4 - °De [Delisle]
|
||||
// 5 - °N [Newton]
|
||||
// ->> Integer Value
|
||||
String temperature_card_id[TEMPERATURE_CARD_LIMIT] = {};
|
||||
String temperature_card_name[TEMPERATURE_CARD_LIMIT] = {};
|
||||
int temperature_card_type[TEMPERATURE_CARD_LIMIT] = {};
|
||||
int temperature_card_value[TEMPERATURE_CARD_LIMIT] = {};
|
||||
|
||||
// Humidity Cards
|
||||
// Data Relation:
|
||||
// Card ID -> Card Name -> Integer Value
|
||||
String humidity_card_id[HUMIDITY_CARD_LIMIT] = {};
|
||||
String humidity_card_name[HUMIDITY_CARD_LIMIT] = {};
|
||||
int humidity_card_value[HUMIDITY_CARD_LIMIT] = {};
|
||||
|
||||
// Status Cards
|
||||
// Data Relation:
|
||||
// Card ID -> Card Name -> Card Type
|
||||
// 0 - false
|
||||
// 1 - true
|
||||
// 2 - warning
|
||||
// 3 - paused
|
||||
String status_card_id[STATUS_CARD_LIMIT] = {};
|
||||
String status_card_name[STATUS_CARD_LIMIT] = {};
|
||||
int status_card_value[STATUS_CARD_LIMIT] = {};
|
||||
|
||||
// Graph Cards
|
||||
// Data Relation:
|
||||
// Card ID -> Card Name ->>
|
||||
// X Axis -> Bool Type -> String <- OR -> ( Array Length -> Integer Array )
|
||||
// Y Axis -> Y Axis Name -> Array Length -> Integer Array
|
||||
String line_chart_id[LINE_CHART_LIMIT] = {};
|
||||
String line_chart_name[LINE_CHART_LIMIT] = {};
|
||||
// X Axis // A Graph can either have a STRING Type X Axis or Integer Type
|
||||
bool line_chart_x_axis_type[LINE_CHART_LIMIT] = {}; // Boolean which indicates the type // true = String, false = Int
|
||||
String line_chart_x_axis_value_string[LINE_CHART_LIMIT][100] = {}; // String Type
|
||||
int line_chart_x_axis_size[LINE_CHART_LIMIT] = {};
|
||||
int line_chart_x_axis_value_int[LINE_CHART_LIMIT][100] = {}; // Integer Type
|
||||
// Y Axis
|
||||
String line_chart_y_axis_name[LINE_CHART_LIMIT] = {};
|
||||
int line_chart_y_axis_size[LINE_CHART_LIMIT] = {};
|
||||
int line_chart_y_axis_value[LINE_CHART_LIMIT][100] = {};
|
||||
|
||||
// Gauge Charts
|
||||
// Card ID -> Card Name -> Integer Value
|
||||
String gauge_chart_id[GAUGE_CHART_LIMIT] = {};
|
||||
String gauge_chart_name[GAUGE_CHART_LIMIT] = {};
|
||||
uint16_t gauge_chart_value[GAUGE_CHART_LIMIT] = {};
|
||||
|
||||
// Slider Card
|
||||
// Data Relation:
|
||||
// Card ID -> Card Name -> Card Type
|
||||
// 0 - vertical bottom to top
|
||||
// 1 - vertical top to bottom
|
||||
// 2 - horizontal left to right
|
||||
// 3 - horizontal right to left
|
||||
String slider_card_id[SLIDER_CARD_LIMIT] = {};
|
||||
String slider_card_name[SLIDER_CARD_LIMIT] = {};
|
||||
int slider_card_type[SLIDER_CARD_LIMIT] = {};
|
||||
int slider_card_value[SLIDER_CARD_LIMIT] = {};
|
||||
|
||||
|
||||
static void onWsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len);
|
||||
void generateLayoutResponse(String& result);
|
||||
void generateStatsResponse(String& result);
|
||||
void generateRebootResponse(String& result);
|
||||
size_t getTotalResponseCapacity();
|
||||
size_t getNumberCardsLen();
|
||||
size_t getTemperatureCardsLen();
|
||||
size_t getHumidityCardsLen();
|
||||
size_t getStatusCardsLen();
|
||||
size_t getButtonCardsLen();
|
||||
size_t getLineChartsLen();
|
||||
size_t getGaugeChartsLen();
|
||||
size_t getSliderCardsLen();
|
||||
};
|
||||
|
||||
extern QDPwebClass QDPweb;
|
||||
#endif
|
||||
3
arduino-cli/libraries/ESP-QDPweb/webpage.h
Normal file
3
arduino-cli/libraries/ESP-QDPweb/webpage.h
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user