Merge pull request #2 from letscontrolit/mega

update from mega
This commit is contained in:
Grovkillen
2018-12-18 11:30:17 +01:00
committed by GitHub
10 changed files with 267 additions and 234 deletions
+17
View File
@@ -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)
-------------------------------------------------
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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]);
+10 -1
View File
@@ -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

+36
View File
@@ -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;