mirror of
https://github.com/letscontrolit/ESPEasy.git
synced 2026-07-27 19:57:38 +00:00
Vendored
+17
@@ -1,3 +1,20 @@
|
||||
-------------------------------------------------
|
||||
Changes in release mega-20181218 (since mega-20181217)
|
||||
-------------------------------------------------
|
||||
|
||||
Release date: Tue Dec 18 04:00:10 CET 2018
|
||||
|
||||
Grovkillen (3):
|
||||
[docs] P003 documented (generic pulse counter)
|
||||
[docs] P004 (DS18b20) added
|
||||
[docs] fixed search box on RTD + added HW links in the plugin categories
|
||||
|
||||
TD-er (3):
|
||||
[PUYA] Prepare for upcoming PUYA patch in core library
|
||||
[Core 2.5.0] Update label to core "2.5.0-beta2"
|
||||
[Minimal build] Reduce file size of minimal build for 1MB OTA
|
||||
|
||||
|
||||
-------------------------------------------------
|
||||
Changes in release mega-20181217 (since mega-20181216)
|
||||
-------------------------------------------------
|
||||
|
||||
@@ -5,7 +5,7 @@ PATCH=puya_v3.patch
|
||||
for DIR in ~/.platformio/packages/framework-arduinoespressif8266*/; do
|
||||
|
||||
#not applied yet? (in upstream or otherwise)
|
||||
if ! grep "0x146085 PUYA" $DIR/cores/esp8266/Esp.cpp >/dev/null; then
|
||||
if ! grep "PUYA" $DIR/cores/esp8266/Esp.cpp >/dev/null; then
|
||||
echo "Patching $DIR"
|
||||
patch -p1 -d $DIR < $PATCH
|
||||
fi
|
||||
|
||||
+40
-3
@@ -160,7 +160,7 @@ platform = ${core_2_4_2.platform}
|
||||
|
||||
[beta_platform]
|
||||
build_unflags =
|
||||
build_flags = ${core_staged.build_flags} -DARDUINO_ESP8266_RELEASE='"2.5.0-beta1"'
|
||||
build_flags = ${core_staged.build_flags} -DARDUINO_ESP8266_RELEASE='"2.5.0-beta2"'
|
||||
platform = ${core_staged.platform}
|
||||
|
||||
|
||||
@@ -181,6 +181,12 @@ build_flags = ${beta_platform.build_flags}
|
||||
[normal_ota]
|
||||
platform = ${regular_platform.platform}
|
||||
build_flags = ${regular_platform.build_flags} -DPLUGIN_BUILD_MINIMAL_OTA
|
||||
board_upload.maximum_size = 616448
|
||||
|
||||
[normal_beta_ota]
|
||||
platform = ${beta_platform.platform}
|
||||
build_flags = ${beta_platform.build_flags} -DPLUGIN_BUILD_MINIMAL_OTA
|
||||
board_upload.maximum_size = ${normal_ota.board_upload.maximum_size}
|
||||
|
||||
[normal_ir]
|
||||
platform = ${regular_platform.platform}
|
||||
@@ -355,7 +361,7 @@ framework = ${common.framework}
|
||||
upload_speed = ${common.upload_speed}
|
||||
monitor_speed = ${common.monitor_speed}
|
||||
board = ${esp8266_1M.board}
|
||||
board_upload.maximum_size = 616448
|
||||
board_upload.maximum_size = ${normal_ota.board_upload.maximum_size}
|
||||
board_build.f_cpu = ${esp8266_1M.board_build.f_cpu}
|
||||
board_build.flash_mode = ${esp8266_1M.board_build.flash_mode}
|
||||
build_unflags = ${esp8266_1M.build_unflags}
|
||||
@@ -371,12 +377,43 @@ framework = ${common.framework}
|
||||
upload_speed = ${common.upload_speed}
|
||||
monitor_speed = ${common.monitor_speed}
|
||||
board = ${esp8285_1M.board}
|
||||
board_upload.maximum_size = 616448
|
||||
board_upload.maximum_size = ${normal_ota.board_upload.maximum_size}
|
||||
board_build.f_cpu = ${esp8285_1M.board_build.f_cpu}
|
||||
board_build.flash_mode = ${esp8285_1M.board_build.flash_mode}
|
||||
build_unflags = ${esp8285_1M.build_unflags}
|
||||
build_flags = ${esp8285_1M.build_flags} ${normal_ota.build_flags}
|
||||
|
||||
[env:minimal_core_250_beta_ESP8266_1024_OTA]
|
||||
platform = ${normal_beta_ota.platform}
|
||||
lib_deps = ${common.lib_deps}
|
||||
lib_ignore = ${common.lib_ignore}
|
||||
lib_ldf_mode = ${common.lib_ldf_mode}
|
||||
lib_archive = ${common.lib_archive}
|
||||
framework = ${common.framework}
|
||||
upload_speed = ${common.upload_speed}
|
||||
monitor_speed = ${common.monitor_speed}
|
||||
board = ${esp8266_1M.board}
|
||||
board_upload.maximum_size = ${normal_beta_ota.board_upload.maximum_size}
|
||||
board_build.f_cpu = ${esp8266_1M.board_build.f_cpu}
|
||||
board_build.flash_mode = ${esp8266_1M.board_build.flash_mode}
|
||||
build_unflags = ${esp8266_1M.build_unflags}
|
||||
build_flags = ${esp8266_1M.build_flags} ${normal_beta_ota.build_flags}
|
||||
|
||||
[env:minimal_core_250_beta_ESP8285_1024_OTA]
|
||||
platform = ${normal_beta_ota.platform}
|
||||
lib_deps = ${common.lib_deps}
|
||||
lib_ignore = ${common.lib_ignore}
|
||||
lib_ldf_mode = ${common.lib_ldf_mode}
|
||||
lib_archive = ${common.lib_archive}
|
||||
framework = ${common.framework}
|
||||
upload_speed = ${common.upload_speed}
|
||||
monitor_speed = ${common.monitor_speed}
|
||||
board = ${esp8285_1M.board}
|
||||
board_upload.maximum_size = ${normal_beta_ota.board_upload.maximum_size}
|
||||
board_build.f_cpu = ${esp8285_1M.board_build.f_cpu}
|
||||
board_build.flash_mode = ${esp8285_1M.board_build.flash_mode}
|
||||
build_unflags = ${esp8285_1M.build_unflags}
|
||||
build_flags = ${esp8285_1M.build_flags} ${normal_beta_ota.build_flags}
|
||||
|
||||
[env:normal_core_241_ESP8266_1024]
|
||||
platform = ${normal_241.platform}
|
||||
|
||||
+117
-125
@@ -494,7 +494,9 @@ void WebServerInit()
|
||||
WebServer.on(F("/controllers"), handle_controllers);
|
||||
WebServer.on(F("/hardware"), handle_hardware);
|
||||
WebServer.on(F("/devices"), handle_devices);
|
||||
#ifndef NOTIFIER_SET_NONE
|
||||
WebServer.on(F("/notifications"), handle_notifications);
|
||||
#endif
|
||||
WebServer.on(F("/log"), handle_log);
|
||||
WebServer.on(F("/logjson"), handle_log_JSON);
|
||||
WebServer.on(F("/tools"), handle_tools);
|
||||
@@ -719,6 +721,10 @@ void getWebPageTemplateVar(const String& varName )
|
||||
{
|
||||
if (i == MENU_INDEX_RULES && !Settings.UseRules) //hide rules menu item
|
||||
continue;
|
||||
#ifdef NOTIFIER_SET_NONE
|
||||
if (i == MENU_INDEX_NOTIFICATIONS) //hide notifications menu item
|
||||
continue;
|
||||
#endif
|
||||
|
||||
TXBuffer += F("<a class='menu");
|
||||
if (i == navMenuIndex)
|
||||
@@ -1535,6 +1541,7 @@ void handle_controllers() {
|
||||
//********************************************************************************
|
||||
// Web Interface notifcations page
|
||||
//********************************************************************************
|
||||
#ifndef NOTIFIER_SET_NONE
|
||||
void handle_notifications() {
|
||||
checkRAM(F("handle_notifications"));
|
||||
if (!isLoggedIn()) return;
|
||||
@@ -1722,7 +1729,7 @@ void handle_notifications() {
|
||||
sendHeadandTail_stdtemplate(_TAIL);
|
||||
TXBuffer.endStream();
|
||||
}
|
||||
|
||||
#endif // NOTIFIER_SET_NONE
|
||||
|
||||
//********************************************************************************
|
||||
// Web Interface hardware page
|
||||
@@ -2795,9 +2802,13 @@ void addButton(const String &url, const String &label) {
|
||||
addButton(url, label, "");
|
||||
}
|
||||
|
||||
void addButton(const String &url, const String &label, const String& classes)
|
||||
void addButton(const String &url, const String &label, const String& classes) {
|
||||
addButton(url, label, classes, true);
|
||||
}
|
||||
|
||||
void addButton(const String &url, const String &label, const String& classes, bool enabled)
|
||||
{
|
||||
html_add_button_prefix(classes);
|
||||
html_add_button_prefix(classes, enabled);
|
||||
TXBuffer += url;
|
||||
TXBuffer += "'>";
|
||||
TXBuffer += label;
|
||||
@@ -2806,10 +2817,28 @@ void addButton(const String &url, const String &label, const String& classes)
|
||||
|
||||
void addButton(class StreamingBuffer &buffer, const String &url, const String &label)
|
||||
{
|
||||
addButtonWithSvg(buffer, url, label, "", false);
|
||||
}
|
||||
|
||||
void addButtonWithSvg(class StreamingBuffer &buffer, const String &url, const String &label, const String& svgPath, bool needConfirm) {
|
||||
bool hasSVG = svgPath.length() > 0;
|
||||
buffer += F("<a class='button link' href='");
|
||||
buffer += url;
|
||||
if (hasSVG) {
|
||||
buffer += F("' alt='");
|
||||
buffer += label;
|
||||
}
|
||||
if (needConfirm) {
|
||||
buffer += F("' onclick='return confirm(\"Are you sure?\")");
|
||||
}
|
||||
buffer += F("'>");
|
||||
buffer += label;
|
||||
if (hasSVG) {
|
||||
buffer += F("<svg width='24' height='24' viewBox='-1 -1 26 26' style='position: relative; top: 5px;'>");
|
||||
buffer += svgPath;
|
||||
buffer += F("</svg>");
|
||||
} else {
|
||||
buffer += label;
|
||||
}
|
||||
buffer += F("</a>");
|
||||
}
|
||||
|
||||
@@ -2820,15 +2849,15 @@ void addSaveButton(const String &url, const String &label)
|
||||
|
||||
void addSaveButton(class StreamingBuffer &buffer, const String &url, const String &label)
|
||||
{
|
||||
buffer += F("<a class='button link' href='");
|
||||
buffer += url;
|
||||
buffer += F("' alt='");
|
||||
buffer += label;
|
||||
buffer += F("'>");
|
||||
buffer += F("<svg width='24' height='24' viewBox='-1 -1 26 26' style='position: relative; top: 5px;'>");
|
||||
buffer += F("<path d='M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zm-6 .67l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2v9.67z' stroke='white' fill='white' ></path>");
|
||||
buffer += F("</svg>");
|
||||
buffer += F("</a>");
|
||||
#ifdef PLUGIN_BUILD_MINIMAL_OTA
|
||||
addButtonWithSvg(buffer, url, label
|
||||
, ""
|
||||
, false);
|
||||
#else
|
||||
addButtonWithSvg(buffer, url, label
|
||||
, F("<path d='M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zm-6 .67l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2v9.67z' stroke='white' fill='white' ></path>")
|
||||
, false);
|
||||
#endif
|
||||
}
|
||||
|
||||
void addDeleteButton(const String &url, const String &label)
|
||||
@@ -2838,21 +2867,28 @@ void addDeleteButton(const String &url, const String &label)
|
||||
|
||||
void addDeleteButton(class StreamingBuffer &buffer, const String &url, const String &label)
|
||||
{
|
||||
buffer += F("<a class='button link' href='");
|
||||
buffer += url;
|
||||
buffer += F("' alt='");
|
||||
buffer += label;
|
||||
buffer += F("' onclick='return confirm(\"Are you sure?\")'>");
|
||||
buffer += F("<svg width='24' height='24' viewBox='-1 -1 26 26' style='position: relative; top: 5px;'>");
|
||||
buffer += F("<path fill='none' d='M0 0h24v24H0V0z'></path>");
|
||||
buffer += F("<path d='M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM8 9h8v10H8V9zm7.5-5l-1-1h-5l-1 1H5v2h14V4h-3.5z' stroke='white' fill='white' ></path>");
|
||||
buffer += F("</svg>");
|
||||
buffer += F("</a>");
|
||||
#ifdef PLUGIN_BUILD_MINIMAL_OTA
|
||||
addButtonWithSvg(buffer, url, label
|
||||
, ""
|
||||
, true);
|
||||
#else
|
||||
addButtonWithSvg(buffer, url, label
|
||||
, F("<path fill='none' d='M0 0h24v24H0V0z'></path><path d='M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM8 9h8v10H8V9zm7.5-5l-1-1h-5l-1 1H5v2h14V4h-3.5z' stroke='white' fill='white' ></path>")
|
||||
, true);
|
||||
#endif
|
||||
}
|
||||
|
||||
void addWideButton(const String &url, const String &label, const String &classes)
|
||||
void addWideButton(const String &url, const String &label) {
|
||||
addWideButton(url, label, "", true);
|
||||
}
|
||||
|
||||
void addWideButton(const String &url, const String &label, const String &classes) {
|
||||
addWideButton(url, label, classes, true);
|
||||
}
|
||||
|
||||
void addWideButton(const String &url, const String &label, const String &classes, bool enabled)
|
||||
{
|
||||
html_add_wide_button_prefix(classes);
|
||||
html_add_wide_button_prefix(classes, enabled);
|
||||
TXBuffer += url;
|
||||
TXBuffer += "'>";
|
||||
TXBuffer += label;
|
||||
@@ -3335,28 +3371,35 @@ void html_end_form() {
|
||||
}
|
||||
|
||||
void html_add_button_prefix() {
|
||||
html_add_button_prefix("");
|
||||
html_add_button_prefix("", true);
|
||||
}
|
||||
|
||||
void html_add_button_prefix(const String& classes) {
|
||||
void html_add_button_prefix(const String& classes, bool enabled) {
|
||||
TXBuffer += F(" <a class='button link");
|
||||
if (classes.length() > 0) {
|
||||
TXBuffer += ' ';
|
||||
TXBuffer += classes;
|
||||
}
|
||||
TXBuffer += F("' href='");
|
||||
if (!enabled) {
|
||||
addDisabled();
|
||||
}
|
||||
TXBuffer += '\'';
|
||||
if (!enabled) {
|
||||
addDisabled();
|
||||
}
|
||||
TXBuffer += F(" href='");
|
||||
}
|
||||
|
||||
void html_add_wide_button_prefix() {
|
||||
html_add_wide_button_prefix("");
|
||||
html_add_wide_button_prefix("", true);
|
||||
}
|
||||
|
||||
void html_add_wide_button_prefix(const String& classes) {
|
||||
void html_add_wide_button_prefix(const String& classes, bool enabled) {
|
||||
String wide_classes;
|
||||
wide_classes.reserve(classes.length() + 5);
|
||||
wide_classes = F("wide ");
|
||||
wide_classes += classes;
|
||||
html_add_button_prefix(wide_classes);
|
||||
html_add_button_prefix(wide_classes, enabled);
|
||||
}
|
||||
|
||||
void html_add_form() {
|
||||
@@ -3538,6 +3581,14 @@ void handle_log_JSON() {
|
||||
//********************************************************************************
|
||||
// Web Interface debug page
|
||||
//********************************************************************************
|
||||
void addWideButtonPlusDescription(const String& url, const String& buttonText, const String& description)
|
||||
{
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(url, buttonText);
|
||||
html_TD();
|
||||
TXBuffer += description;
|
||||
}
|
||||
|
||||
void handle_tools() {
|
||||
if (!isLoggedIn()) return;
|
||||
navMenuIndex = MENU_INDEX_TOOLS;
|
||||
@@ -3584,124 +3635,63 @@ void handle_tools() {
|
||||
|
||||
addFormSubHeader(F("System"));
|
||||
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("/?cmd=reboot"), F("Reboot"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Reboots ESP");
|
||||
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("log"), F("Log"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Open log output");
|
||||
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("sysinfo"), F("Info"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Open system info page");
|
||||
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("advanced"), F("Advanced"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Open advanced settings");
|
||||
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("json"), F("Show JSON"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Open JSON output");
|
||||
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("timingstats"), F("Timing stats"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Open timing statistics of system");
|
||||
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("pinstates"), F("Pin state buffer"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Show Pin state buffer");
|
||||
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("sysvars"), F("System Variables"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Show all system variables and conversions");
|
||||
addWideButtonPlusDescription(F("/?cmd=reboot"), F("Reboot"), F("Reboots ESP"));
|
||||
addWideButtonPlusDescription(F("log"), F("Log"), F("Open log output"));
|
||||
addWideButtonPlusDescription(F("sysinfo"), F("Info"), F("Open system info page"));
|
||||
addWideButtonPlusDescription(F("advanced"), F("Advanced"), F("Open advanced settings"));
|
||||
addWideButtonPlusDescription(F("json"), F("Show JSON"), F("Open JSON output"));
|
||||
addWideButtonPlusDescription(F("timingstats"), F("Timing stats"), F("Open timing statistics of system"));
|
||||
addWideButtonPlusDescription(F("pinstates"), F("Pin state buffer"), F("Show Pin state buffer"));
|
||||
addWideButtonPlusDescription(F("sysvars"), F("System Variables"), F("Show all system variables and conversions"));
|
||||
|
||||
addFormSubHeader(F("Wifi"));
|
||||
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("/?cmd=wificonnect"), F("Connect"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Connects to known Wifi network");
|
||||
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("/?cmd=wifidisconnect"), F("Disconnect"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Disconnect from wifi network");
|
||||
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("wifiscanner"), F("Scan"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Scan for wifi networks");
|
||||
addWideButtonPlusDescription(F("/?cmd=wificonnect"), F("Connect"), F("Connects to known Wifi network"));
|
||||
addWideButtonPlusDescription(F("/?cmd=wifidisconnect"), F("Disconnect"), F("Disconnect from wifi network"));
|
||||
addWideButtonPlusDescription(F("wifiscanner"), F("Scan"), F("Scan for wifi networks"));
|
||||
|
||||
addFormSubHeader(F("Interfaces"));
|
||||
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("i2cscanner"), F("I2C Scan"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Scan for I2C devices");
|
||||
addWideButtonPlusDescription(F("i2cscanner"), F("I2C Scan"), F("Scan for I2C devices"));
|
||||
|
||||
addFormSubHeader(F("Settings"));
|
||||
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("upload"), F("Load"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Loads a settings file");
|
||||
addWideButtonPlusDescription(F("upload"), F("Load"), F("Loads a settings file"));
|
||||
addFormNote(F("(File MUST be renamed to \"config.dat\" before upload!)"));
|
||||
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("download"), F("Save"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Saves a settings file");
|
||||
addWideButtonPlusDescription(F("download"), F("Save"), F("Saves a settings file"));
|
||||
|
||||
#if defined(ESP8266)
|
||||
{
|
||||
{
|
||||
uint32_t maxSketchSize;
|
||||
bool use2step;
|
||||
if (OTA_possible(maxSketchSize, use2step)) {
|
||||
addFormSubHeader(F("Firmware"));
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("update"), F("Load"), "");
|
||||
addHelpButton(F("EasyOTA"));
|
||||
html_TD();
|
||||
TXBuffer += F("Load a new firmware");
|
||||
bool otaEnabled = OTA_possible(maxSketchSize, use2step);
|
||||
addFormSubHeader(F("Firmware"));
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("update"), F("Load"), "", otaEnabled);
|
||||
addHelpButton(F("EasyOTA"));
|
||||
html_TD();
|
||||
TXBuffer += F("Load a new firmware");
|
||||
if (otaEnabled) {
|
||||
if (use2step) {
|
||||
TXBuffer += F(" <b>WARNING</b> only use 2-step OTA update and sketch < ");
|
||||
} else {
|
||||
TXBuffer += F(" Max sketch size: ");
|
||||
TXBuffer += F(" <b>WARNING</b> only use 2-step OTA update.");
|
||||
}
|
||||
TXBuffer += maxSketchSize / 1024;
|
||||
TXBuffer += F(" kB");
|
||||
} else {
|
||||
TXBuffer += F(" <b>WARNING</b> OTA not possible.");
|
||||
}
|
||||
TXBuffer += F(" Max sketch size: ");
|
||||
TXBuffer += maxSketchSize / 1024;
|
||||
TXBuffer += F(" kB");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
addFormSubHeader(F("Filesystem"));
|
||||
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("filelist"), F("Flash"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Show files on internal flash");
|
||||
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("/factoryreset"), F("Factory Reset"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Select pre-defined configuration or full erase of settings");
|
||||
|
||||
addWideButtonPlusDescription(F("filelist"), F("Flash"), F("Show files on internal flash"));
|
||||
addWideButtonPlusDescription(F("/factoryreset"), F("Factory Reset"), F("Select pre-defined configuration or full erase of settings"));
|
||||
#ifdef FEATURE_SD
|
||||
html_TR_TD_height(30);
|
||||
addWideButton(F("SDfilelist"), F("SD Card"), "");
|
||||
html_TD();
|
||||
TXBuffer += F("Show files on SD-Card");
|
||||
addWideButtonPlusDescription(F("SDfilelist"), F("SD Card"), F("Show files on SD-Card"));
|
||||
#endif
|
||||
|
||||
html_end_table();
|
||||
@@ -4936,8 +4926,8 @@ bool loadFromFS(boolean spiffs, String path) {
|
||||
else if (path.endsWith(F(".gif"))) dataType = F("image/gif");
|
||||
else if (path.endsWith(F(".jpg"))) dataType = F("image/jpeg");
|
||||
else if (path.endsWith(F(".ico"))) dataType = F("image/x-icon");
|
||||
else if (path.endsWith(F(".txt"))) dataType = F("application/octet-stream");
|
||||
else if (path.endsWith(F(".dat"))) dataType = F("application/octet-stream");
|
||||
else if (path.endsWith(F(".txt")) ||
|
||||
path.endsWith(F(".dat"))) dataType = F("application/octet-stream");
|
||||
else if (path.endsWith(F(".esp"))) return handle_custom(path);
|
||||
if (loglevelActiveFor(LOG_LEVEL_DEBUG)) {
|
||||
String log = F("HTML : Request file ");
|
||||
@@ -6596,6 +6586,7 @@ void write_SVG_image_header(int width, int height, bool useViewbox) {
|
||||
TXBuffer += '>';
|
||||
}
|
||||
|
||||
/*
|
||||
void getESPeasyLogo(int width_pixels) {
|
||||
write_SVG_image_header(width_pixels, width_pixels, true);
|
||||
TXBuffer += F("<g transform=\"translate(-33.686 -7.8142)\">");
|
||||
@@ -6605,6 +6596,7 @@ void getESPeasyLogo(int width_pixels) {
|
||||
TXBuffer += F("<circle cx=\"58\" cy=\"102.1\" r=\"3\" fill=\"#fff\"/>");
|
||||
TXBuffer += F("</g></g></svg>");
|
||||
}
|
||||
*/
|
||||
|
||||
void getConfig_dat_file_layout() {
|
||||
const int shiftY = 2;
|
||||
|
||||
+12
-7
@@ -37,7 +37,12 @@ void handle_rules_new() {
|
||||
int endIdx = startIdx + rulesListPageSize - 1;
|
||||
|
||||
//Build table header
|
||||
TXBuffer += F("<table class='multirow' border=1px frame='box' rules='all'><TR><TH>Event Name</TH><TH>Filename</TH><TH>Size</TH><TH>Actions");
|
||||
html_table_class_multirow();
|
||||
html_TR();
|
||||
html_table_header(F("Event Name"));
|
||||
html_table_header(F("Filename"));
|
||||
html_table_header(F("Size"));
|
||||
TXBuffer += F("<TH>Actions");
|
||||
addSaveButton(TXBuffer,F("/rules/backup"), F("Backup"));
|
||||
TXBuffer += F("</TH></TR>");
|
||||
//class StreamingBuffer buffer = TXBuffer;
|
||||
@@ -120,18 +125,18 @@ void handle_rules_new() {
|
||||
#ifdef ESP32
|
||||
#define max(a,b) a > b ? a : b
|
||||
#endif
|
||||
TXBuffer += F("<a class='button link' href=''/rules?start=");
|
||||
TXBuffer += max(0, startIdx - rulesListPageSize);
|
||||
TXBuffer += F("'>Previous</a>");
|
||||
addButton(TXBuffer
|
||||
, String(F("/rules?start=")) + String(max(0, startIdx - rulesListPageSize))
|
||||
, F("Previous"));
|
||||
#ifdef ESP32
|
||||
#undef max
|
||||
#endif
|
||||
}
|
||||
if (hasMore && count >= endIdx)
|
||||
{
|
||||
TXBuffer += F("<a class='button link' href='/rules?start=");
|
||||
TXBuffer += endIdx + 1;
|
||||
TXBuffer += F("'>Next</a>");
|
||||
addButton(TXBuffer
|
||||
, String(F("/rules?start=")) + String(endIdx + 1)
|
||||
, F("Next"));
|
||||
}
|
||||
//TXBuffer += F("<BR><BR>");
|
||||
sendHeadandTail(F("TmplStd"),_TAIL);
|
||||
|
||||
+33
-96
@@ -9,103 +9,40 @@
|
||||
// Generated using xxd: xxd -i favicon.ico > favicon.ino
|
||||
static const char favicon_8b_ico[] PROGMEM = {
|
||||
0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x10, 0x10, 0x00, 0x00, 0x01, 0x00,
|
||||
0x20, 0x00, 0x68, 0x04, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x28, 0x00,
|
||||
0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00,
|
||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x12, 0x0b,
|
||||
0x00, 0x00, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xef, 0xc0, 0x89, 0x11, 0xfe, 0xfb, 0xf8, 0xac, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xfa,
|
||||
0xf5, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xfa,
|
||||
0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf3,
|
||||
0xe9, 0xac, 0xef, 0xc0, 0x89, 0x11, 0xfe, 0xfb, 0xf8, 0xac, 0xf1, 0xc8,
|
||||
0x95, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xf1, 0xc8, 0x95, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xef, 0xc2,
|
||||
0x8a, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xfc, 0xf3, 0xe9, 0xac, 0xff, 0xff,
|
||||
0xff, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xd8, 0x63,
|
||||
0x00, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfa,
|
||||
0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xd9, 0x69,
|
||||
0x00, 0xff, 0xd9, 0x69, 0x00, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xc2,
|
||||
0x8a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xd9, 0x69, 0x00, 0xff, 0xd9, 0x69, 0x00, 0xff, 0xef, 0xc2,
|
||||
0x8a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xd8, 0x63,
|
||||
0x00, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xf1, 0xc8, 0x95, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xd8, 0x63,
|
||||
0x00, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfa,
|
||||
0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xd8, 0x63,
|
||||
0x00, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xc2,
|
||||
0x8a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xd8, 0x63,
|
||||
0x00, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xfa,
|
||||
0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xc2,
|
||||
0x8a, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xd8, 0x63,
|
||||
0x00, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfa,
|
||||
0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xc8, 0x95, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xd8, 0x63,
|
||||
0x00, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xc2,
|
||||
0x8a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xc8,
|
||||
0x95, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xd8, 0x63,
|
||||
0x00, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xf1, 0xc8, 0x95, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfa,
|
||||
0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xd8, 0x63,
|
||||
0x00, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xc2,
|
||||
0x8a, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfa,
|
||||
0xf5, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xd8, 0x63,
|
||||
0x00, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xc2,
|
||||
0x8a, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xd8, 0x63, 0x00, 0xff, 0xef, 0xbc,
|
||||
0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbc, 0x80, 0xff, 0xd8, 0x63,
|
||||
0x00, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xf1,
|
||||
0xe6, 0xac, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xc8, 0x95, 0xff, 0xf1, 0xc8,
|
||||
0x95, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xc2,
|
||||
0x8a, 0xff, 0xf1, 0xc8, 0x95, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xef, 0xc2, 0x8a, 0xff, 0xf1, 0xc8, 0x95, 0xff, 0xfe, 0xfb,
|
||||
0xf8, 0xac, 0xef, 0xc0, 0x89, 0x11, 0xfb, 0xf1, 0xe6, 0xac, 0xfe, 0xfa,
|
||||
0xf5, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xfa,
|
||||
0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfa,
|
||||
0xf5, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfb,
|
||||
0xf8, 0xac, 0xef, 0xc0, 0x89, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
0x20, 0x00, 0x70, 0x01, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x89, 0x50,
|
||||
0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48,
|
||||
0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x08, 0x06,
|
||||
0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 0x61, 0x00, 0x00, 0x01, 0x37, 0x49,
|
||||
0x44, 0x41, 0x54, 0x38, 0x8d, 0x9d, 0x93, 0xbd, 0x4e, 0xc3, 0x30, 0x14,
|
||||
0x85, 0x4f, 0x0a, 0x08, 0xc1, 0xd2, 0x64, 0xea, 0xab, 0xb0, 0x74, 0xe2,
|
||||
0x11, 0x32, 0x31, 0x31, 0x74, 0xaa, 0x3a, 0x97, 0x15, 0x77, 0x4c, 0x3a,
|
||||
0x87, 0x05, 0x31, 0x30, 0xb1, 0x98, 0x37, 0x70, 0xa5, 0x28, 0x5d, 0xc2,
|
||||
0xc0, 0xde, 0xbe, 0x40, 0x51, 0xc4, 0xe0, 0x86, 0x36, 0x55, 0x88, 0x91,
|
||||
0xcd, 0x10, 0xc5, 0x24, 0x10, 0xa5, 0x0d, 0x57, 0xf2, 0xf0, 0x59, 0x3a,
|
||||
0xf7, 0xe7, 0xe8, 0x5e, 0x38, 0x3e, 0xb7, 0x56, 0xb1, 0xa0, 0x49, 0x26,
|
||||
0x55, 0xf1, 0x8a, 0x68, 0xe2, 0x54, 0x48, 0xea, 0xf8, 0xdc, 0xc2, 0x2a,
|
||||
0x16, 0x54, 0xfd, 0x0a, 0x2f, 0x8c, 0x95, 0x17, 0xc6, 0x9a, 0xdd, 0x80,
|
||||
0xd7, 0x72, 0x2a, 0x24, 0xed, 0x74, 0xcf, 0x8e, 0x6c, 0x00, 0xd8, 0x09,
|
||||
0x05, 0x00, 0x98, 0xce, 0xd7, 0x18, 0xdd, 0xbf, 0xe1, 0x7d, 0x2b, 0x35,
|
||||
0xdf, 0x3c, 0x46, 0x9a, 0x27, 0xb3, 0x9c, 0x93, 0x4c, 0xe2, 0xf4, 0xd8,
|
||||
0xb0, 0x51, 0x6e, 0xd1, 0x0d, 0xb8, 0xc2, 0x60, 0xa1, 0x08, 0xe3, 0xb5,
|
||||
0x4c, 0x58, 0x95, 0x93, 0x4c, 0x2a, 0x9d, 0xa0, 0xad, 0x58, 0x27, 0x28,
|
||||
0x66, 0x6e, 0x23, 0x26, 0xec, 0xc7, 0x13, 0x9d, 0xa0, 0x8d, 0x18, 0x83,
|
||||
0x85, 0x72, 0x83, 0x9c, 0x1b, 0x3d, 0xd8, 0x27, 0x6e, 0xf4, 0x60, 0x9f,
|
||||
0xb8, 0xe2, 0xc1, 0x7f, 0x2a, 0xff, 0x31, 0xb1, 0x4d, 0xe5, 0x4a, 0x07,
|
||||
0x65, 0x0f, 0x0e, 0xa9, 0x4c, 0x18, 0x57, 0x84, 0x71, 0xbd, 0xd6, 0x3a,
|
||||
0xc1, 0x21, 0x95, 0x09, 0xe3, 0x0a, 0xc3, 0xa5, 0xc2, 0x70, 0xa9, 0xff,
|
||||
0x3b, 0xe7, 0x27, 0x06, 0xa6, 0xf3, 0x35, 0xc8, 0x53, 0x04, 0x72, 0xd5,
|
||||
0xc3, 0xed, 0xa5, 0x89, 0xc9, 0x2c, 0x67, 0xf7, 0xba, 0x87, 0x71, 0xdf,
|
||||
0xd4, 0x6b, 0x5e, 0x17, 0x46, 0x2a, 0x24, 0x7d, 0x78, 0xdd, 0xd8, 0x49,
|
||||
0x26, 0x31, 0xee, 0x9b, 0x00, 0x80, 0xbb, 0x97, 0x0f, 0x94, 0xb9, 0x88,
|
||||
0x9d, 0x50, 0xf0, 0xc2, 0x18, 0x00, 0x30, 0xba, 0xe8, 0x62, 0xfb, 0x29,
|
||||
0x9f, 0xe1, 0xf8, 0xdc, 0x4a, 0x85, 0xa4, 0xc5, 0x8c, 0x75, 0xe7, 0x5b,
|
||||
0x77, 0xea, 0xd1, 0xe6, 0x8b, 0x3a, 0x3e, 0xb7, 0xbe, 0x01, 0x4d, 0x0a,
|
||||
0x09, 0x35, 0x8e, 0xf2, 0xa6, 0xea, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
|
||||
0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
|
||||
};
|
||||
unsigned int favicon_8b_ico_len = 1150;
|
||||
unsigned int favicon_8b_ico_len = 390;
|
||||
|
||||
static const char githublogo[] PROGMEM = {
|
||||
"<button class='button link' onclick='setGithubClipboard()' style='padding: 0px 2px; position: relative; top: 4px;'>"
|
||||
|
||||
+1
-1
@@ -50,7 +50,7 @@ boolean Plugin_002(byte function, struct EventStruct *event, String& string)
|
||||
{
|
||||
#if defined(ESP32)
|
||||
addHtml(F("<TR><TD>Analog Pin:<TD>"));
|
||||
addPinSelect(false, "taskdevicepin1", Settings.TaskDevicePin1[event->TaskIndex]);
|
||||
addPinSelect(false, F("taskdevicepin1"), Settings.TaskDevicePin1[event->TaskIndex]);
|
||||
#endif
|
||||
|
||||
addFormCheckBox(F("Oversampling"), F("p002_oversampling"), Settings.TaskDevicePluginConfig[event->TaskIndex][0]);
|
||||
|
||||
@@ -89,7 +89,9 @@ To create/register a plugin, you have to :
|
||||
// #define USES_C010 // Generic UDP
|
||||
#define USES_C013 // ESPEasy P2P network
|
||||
|
||||
#define NOTIFIER_SET_STABLE
|
||||
// #define NOTIFIER_SET_STABLE
|
||||
#define NOTIFIER_SET_NONE
|
||||
|
||||
#define PLUGIN_SET_NONE
|
||||
|
||||
#ifndef USES_P001
|
||||
@@ -112,6 +114,9 @@ To create/register a plugin, you have to :
|
||||
// #define USES_P005 // DHT
|
||||
#endif
|
||||
|
||||
#ifdef USE_SERVO
|
||||
#undef USE_SERVO
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -504,6 +509,10 @@ To create/register a plugin, you have to :
|
||||
#ifdef NOTIFIER_SET_STABLE
|
||||
#define USES_N001 // Email
|
||||
#define USES_N002 // Buzzer
|
||||
|
||||
#ifdef NOTIFIER_SET_NONE
|
||||
#undef NOTIFIER_SET_NONE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 390 B |
@@ -0,0 +1,36 @@
|
||||
unsigned char favicon_ico[] = {
|
||||
0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x10, 0x10, 0x00, 0x00, 0x01, 0x00,
|
||||
0x20, 0x00, 0x70, 0x01, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x89, 0x50,
|
||||
0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48,
|
||||
0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x08, 0x06,
|
||||
0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 0x61, 0x00, 0x00, 0x01, 0x37, 0x49,
|
||||
0x44, 0x41, 0x54, 0x38, 0x8d, 0x9d, 0x93, 0xbd, 0x4e, 0xc3, 0x30, 0x14,
|
||||
0x85, 0x4f, 0x0a, 0x08, 0xc1, 0xd2, 0x64, 0xea, 0xab, 0xb0, 0x74, 0xe2,
|
||||
0x11, 0x32, 0x31, 0x31, 0x74, 0xaa, 0x3a, 0x97, 0x15, 0x77, 0x4c, 0x3a,
|
||||
0x87, 0x05, 0x31, 0x30, 0xb1, 0x98, 0x37, 0x70, 0xa5, 0x28, 0x5d, 0xc2,
|
||||
0xc0, 0xde, 0xbe, 0x40, 0x51, 0xc4, 0xe0, 0x86, 0x36, 0x55, 0x88, 0x91,
|
||||
0xcd, 0x10, 0xc5, 0x24, 0x10, 0xa5, 0x0d, 0x57, 0xf2, 0xf0, 0x59, 0x3a,
|
||||
0xf7, 0xe7, 0xe8, 0x5e, 0x38, 0x3e, 0xb7, 0x56, 0xb1, 0xa0, 0x49, 0x26,
|
||||
0x55, 0xf1, 0x8a, 0x68, 0xe2, 0x54, 0x48, 0xea, 0xf8, 0xdc, 0xc2, 0x2a,
|
||||
0x16, 0x54, 0xfd, 0x0a, 0x2f, 0x8c, 0x95, 0x17, 0xc6, 0x9a, 0xdd, 0x80,
|
||||
0xd7, 0x72, 0x2a, 0x24, 0xed, 0x74, 0xcf, 0x8e, 0x6c, 0x00, 0xd8, 0x09,
|
||||
0x05, 0x00, 0x98, 0xce, 0xd7, 0x18, 0xdd, 0xbf, 0xe1, 0x7d, 0x2b, 0x35,
|
||||
0xdf, 0x3c, 0x46, 0x9a, 0x27, 0xb3, 0x9c, 0x93, 0x4c, 0xe2, 0xf4, 0xd8,
|
||||
0xb0, 0x51, 0x6e, 0xd1, 0x0d, 0xb8, 0xc2, 0x60, 0xa1, 0x08, 0xe3, 0xb5,
|
||||
0x4c, 0x58, 0x95, 0x93, 0x4c, 0x2a, 0x9d, 0xa0, 0xad, 0x58, 0x27, 0x28,
|
||||
0x66, 0x6e, 0x23, 0x26, 0xec, 0xc7, 0x13, 0x9d, 0xa0, 0x8d, 0x18, 0x83,
|
||||
0x85, 0x72, 0x83, 0x9c, 0x1b, 0x3d, 0xd8, 0x27, 0x6e, 0xf4, 0x60, 0x9f,
|
||||
0xb8, 0xe2, 0xc1, 0x7f, 0x2a, 0xff, 0x31, 0xb1, 0x4d, 0xe5, 0x4a, 0x07,
|
||||
0x65, 0x0f, 0x0e, 0xa9, 0x4c, 0x18, 0x57, 0x84, 0x71, 0xbd, 0xd6, 0x3a,
|
||||
0xc1, 0x21, 0x95, 0x09, 0xe3, 0x0a, 0xc3, 0xa5, 0xc2, 0x70, 0xa9, 0xff,
|
||||
0x3b, 0xe7, 0x27, 0x06, 0xa6, 0xf3, 0x35, 0xc8, 0x53, 0x04, 0x72, 0xd5,
|
||||
0xc3, 0xed, 0xa5, 0x89, 0xc9, 0x2c, 0x67, 0xf7, 0xba, 0x87, 0x71, 0xdf,
|
||||
0xd4, 0x6b, 0x5e, 0x17, 0x46, 0x2a, 0x24, 0x7d, 0x78, 0xdd, 0xd8, 0x49,
|
||||
0x26, 0x31, 0xee, 0x9b, 0x00, 0x80, 0xbb, 0x97, 0x0f, 0x94, 0xb9, 0x88,
|
||||
0x9d, 0x50, 0xf0, 0xc2, 0x18, 0x00, 0x30, 0xba, 0xe8, 0x62, 0xfb, 0x29,
|
||||
0x9f, 0xe1, 0xf8, 0xdc, 0x4a, 0x85, 0xa4, 0xc5, 0x8c, 0x75, 0xe7, 0x5b,
|
||||
0x77, 0xea, 0xd1, 0xe6, 0x8b, 0x3a, 0x3e, 0xb7, 0xbe, 0x01, 0x4d, 0x0a,
|
||||
0x09, 0x35, 0x8e, 0xf2, 0xa6, 0xea, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
|
||||
0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
|
||||
};
|
||||
unsigned int favicon_ico_len = 390;
|
||||
Reference in New Issue
Block a user