Update Zigbee WebUI (#24224)

* Update Zigbee WebUI

- refresh look of Zigbee WebUI
- some html fixes

* Update de_DE.h

* LQI percent
This commit is contained in:
SteWers 2025-12-15 22:10:53 +01:00 committed by GitHub
parent 266f6d6531
commit ebe2da3485
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 105 additions and 104 deletions

View File

@ -28,7 +28,7 @@
* Use online command StateText to translate ON, OFF, HOLD and TOGGLE.
* Use online command Prefix to translate cmnd, stat and tele.
*
* Updated until v15.0.1.4 - Last update 02.10.2025
* Updated until v15.2.0.1 - Last update 14.12.2025
\*********************************************************************/
//#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English)
@ -505,14 +505,14 @@
#define D_KNX_RX_SCENE "KNX SCENE RX"
// xdrv_23_zigbee
#define D_ZIGBEE_PERMITJOIN_ACTIVE "Kopplung erlaubt"
#define D_ZIGBEE_PERMITJOIN_ACTIVE "Zigbee Kopplung aktiv"
#define D_ZIGBEE_MAPPING_TITLE "Zigbee Karte"
#define D_ZIGBEE_NOT_STARTED "Zigbee nicht gestartet"
#define D_ZIGBEE_MAPPING_IN_PROGRESS_SEC "Karte in Erstellung (%d s verbleibend)"
#define D_ZIGBEE_MAPPING_NOT_PRESENT "Keine Karte"
#define D_ZIGBEE_MAP_REFRESH "Karte erneuern"
#define D_ZIGBEE_MAP "Karte"
#define D_ZIGBEE_PERMITJOIN "Kopplung ein"
#define D_ZIGBEE_MAPPING_IN_PROGRESS_SEC "Karte wird erstellt (%d s)"
#define D_ZIGBEE_MAPPING_NOT_PRESENT "Keine Karte verfügbar"
#define D_ZIGBEE_MAP_REFRESH "Karte aktualisieren"
#define D_ZIGBEE_MAP "Zigbee Karte"
#define D_ZIGBEE_PERMITJOIN "Zigbee Kopplung aktivieren"
#define D_ZIGBEE_GENERATE_KEY "Erzeuge zufälligen Netzwerkschlüssel"
#define D_ZIGBEE_UNKNOWN_DEVICE "Unbekanntes Gerät"
#define D_ZIGBEE_UNKNOWN_ATTRIBUTE "Unbekanntes Attribut"

View File

@ -1907,8 +1907,8 @@ const char ZB_WEB_U[] PROGMEM =
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
// index 0
//=ZB_WEB_CSS
"</table>{t}" // Terminate current two column table and open new table
"<style>"
"</table>" // Terminate current two column table...
"<style>" // Send STYLE for Zigbee
// Table CSS
".ztd td:not(:first-child){width:20px;font-size:70%%}"
".ztd td:last-child{width:45px}"
@ -1918,16 +1918,17 @@ const char ZB_WEB_U[] PROGMEM =
".bx{height:14px;width:14px;display:inline-block;border:1px solid currentColor;background-color:var(--cl,#fff)}"
// Signal Strength Indicator
".si{display:inline-flex;align-items:flex-end;height:15px;padding:0;"
"i{width:3px;margin-right:1px;border-radius:3px;background-color:#%06x}"
"i{width:3px;margin-right:1px;border-radius:3px;background-color:var(--c_txt)}"
".b0{height:25%%}.b1{height:50%%}.b2{height:75%%}.b3{height:100%%}}.o30{opacity:.3}"
"</style>"
"{t}" // ... and open new table for Zigbee devices
"\0"
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
// index 1
// Visual indicator for PermitJoin Active
//=ZB_WEB_PERMITJOIN_ACTIVE
"<p><b>[ <span style='color:#080;'>%s</span> ]</b></p>"
// Dummy1; free for further use
//=ZB_WEB_DUMMY1
""
"\0"
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
@ -1992,7 +1993,7 @@ const char ZB_WEB_U[] PROGMEM =
"\0"
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
//=ZB_WEB_LINE_START
"<tr class='htr'><td colspan=\"4\">&#9478;"
"<tr class='htr'><td colspan=4>&#9478;"
"\0"
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
//=ZB_WEB_LIGHT_CT
@ -2005,7 +2006,7 @@ const char ZB_WEB_U[] PROGMEM =
"\0"
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
//=ZB_WEB_LINE_END
"</table>{t}<p></p>"
"</table>{t}" // Terminate Zigbee device table and open a new one for buttons and output of following drivers
"\0"
; // end of list
@ -2015,81 +2016,79 @@ const char ZB_WEB_U[] PROGMEM =
// ++++++++++++++++++++vvvvvvvvvvvvvvvvvvv++++++++++++++++++++
enum {
ZB_WEB_CSS=0,
ZB_WEB_PERMITJOIN_ACTIVE=507,
ZB_WEB_VIS_JS_BEFORE=561,
ZB_WEB_VIS_JS_AFTER=1034,
ZB_WEB_AUTO_REFRESH=1098,
ZB_WEB_MAP_REFRESH=1164,
ZB_WEB_STATUS_LINE=1230,
ZB_WEB_BATTERY=1338,
ZB_WEB_GP=1410,
ZB_WEB_LAST_SEEN=1466,
ZB_WEB_COLOR_RGB=1514,
ZB_WEB_LINE_START=1574,
ZB_WEB_LIGHT_CT=1614,
ZB_WEB_END_STATUS=1669,
ZB_WEB_LINE_END=1686,
ZB_WEB_DUMMY1=495,
ZB_WEB_VIS_JS_BEFORE=496,
ZB_WEB_VIS_JS_AFTER=969,
ZB_WEB_AUTO_REFRESH=1033,
ZB_WEB_MAP_REFRESH=1099,
ZB_WEB_STATUS_LINE=1165,
ZB_WEB_BATTERY=1273,
ZB_WEB_GP=1345,
ZB_WEB_LAST_SEEN=1401,
ZB_WEB_COLOR_RGB=1449,
ZB_WEB_LINE_START=1509,
ZB_WEB_LIGHT_CT=1547,
ZB_WEB_END_STATUS=1602,
ZB_WEB_LINE_END=1619,
};
// Compressed from 1705 to 1156, -32.2%
const char ZB_WEB[] PROGMEM = "\x00\x6B\x3D\x0E\xCA\xB1\xC1\x33\xF0\xF6\xD1\xEE\x3D\x3D\x46\x41\x33\xF0\xE8\x6D"
"\xA1\x15\x08\x79\xF6\x51\xDD\x3C\xCC\x6F\xFD\x47\x58\x62\xB4\x21\x0E\xF1\xED\x1F"
"\xD1\x28\x51\xE6\x72\x99\x0C\x36\x1E\x0C\x67\x51\xD7\xED\x36\xB3\xCC\xE7\x99\xF4"
"\x7D\x1E\xE2\x04\x3C\x40\x2B\x04\x3C\x28\x10\xB0\x93\x99\xA4\x30\xD8\x08\x36\x8E"
"\x83\xA8\xF6\x8D\xBF\x8F\x6F\x1D\x7F\xD1\xE1\x54\x79\x9C\x8C\x86\x1B\x0F\x07\xB8"
"\xE8\x2A\x2B\xBE\x7B\x42\xDE\x67\x58\xA7\xA3\xC2\xA8\xF3\x39\x4C\x86\x1B\x0F\x71"
"\xD0\x71\xB0\xF6\x82\x14\xC3\x93\x08\x61\xB0\xF0\x08\x39\x49\xC9\x84\x30\xD8\x78"
"\x13\x7C\x30\x2B\x32\x3C\xF7\x82\xDE\x67\x58\xE0\xB0\x33\x43\xC0\xEC\xF8\x8F\xE7"
"\x99\xC8\x43\x0D\x8B\xD8\x16\x88\x83\x17\xFF\xBE\xA2\x0F\x02\xCF\x9E\x07\x58\x66"
"\x83\xDF\xC1\x7C\x21\xD6\x1E\x05\x9F\x3C\xCC\xEF\xE7\x74\xEB\x3A\xC3\x08\xEA\x3C"
"\x8C\x18\x30\x77\x8F\x71\xD3\xDA\x7B\x41\x2B\x33\x30\x13\x36\x1E\x2C\x2D\x1E\xE3"
"\xAF\x69\x8D\xF1\xE6\x60\x26\x6C\x3A\xDF\x08\x78\x04\x3D\xCC\xE6\x90\xC3\x61\xE0"
"\x65\x88\x26\xF0\xF1\xE6\x71\x9E\xE3\xA1\x7B\x56\x82\x17\x0A\x07\x2C\x86\x1B\x0F"
"\x2A\x01\x93\xC2\x30\xC3\x60\x21\x6F\xC7\x5F\xEC\x4D\x17\xE3\xCC\xE5\x90\xC3\x60"
"\x26\xEE\x47\x91\xF4\x71\xF1\x1B\x0F\x71\xD3\xDA\x8E\x83\x8E\x32\x04\x3E\x16\xCE"
"\x56\x9F\x47\xD1\x02\x15\x03\x90\x81\x0E\x81\xCD\x64\x08\x94\x0E\x51\x02\x1D\x03"
"\x9E\x20\x45\xC1\x0E\x59\x02\x27\x12\xE7\x1B\x3E\x8F\xA3\xDC\x74\x2C\x39\x6C\xF6"
"\x96\x0C\xB0\xF6\x8C\x8F\x33\xA1\xCB\x3D\xC7\xA1\xD8\x40\x83\xCA\x24\xE1\x7C\xF4"
"\x18\x7E\x1E\x83\x8F\xC3\xDE\x47\xA7\x86\x5F\x2F\x51\x90\x4C\xF8\x7D\x82\x16\xCE"
"\x71\xFD\x9E\x0F\xB3\xF0\xFA\x2F\x1E\x87\x67\x86\x5F\x1F\x88\xF7\xCF\x43\xB0\x71"
"\xF8\x7A\x1D\x83\x0F\xC9\xC2\xF9\xE9\xE0\xFF\xA3\x29\x51\x90\xC6\x7C\x3D\x94\xCD"
"\x94\x76\x1A\xEC\xCE\xC1\x06\x91\xEC\x5E\xF8\x67\xC3\xD8\x2A\x2B\xA8\x67\x8F\x33"
"\xB0\xEC\x17\xC3\x0D\x07\x8E\x81\xE0\xD3\xB0\xCF\x7C\x75\xF3\xA1\xFC\xF9\xA1\xD9"
"\xEA\xBE\x12\xC2\xCE\x67\x60\xB1\xA2\x02\x3D\x73\xA0\xDD\xE3\xA1\xAF\xC7\xB0\xFC"
"\x3D\x0E\xC0\x41\xCB\x0F\xC3\xD0\x4D\x33\x5A\x21\xF0\xF6\x0D\x32\x04\x2C\x2A\x01"
"\xF6\x02\x17\x2A\x01\xC7\xB0\x13\x78\x9C\x30\x60\xC1\xE0\x10\xF8\x1C\x38\xD9\x02"
"\x17\x32\x27\x3E\xD9\x0C\x36\x02\x1F\x22\x47\x31\xB2\x04\x4E\x3A\x01\x1B\x98\xA0"
"\xB4\x78\x55\x0F\x7E\xCC\x8F\x1F\x7E\xD3\x6B\x3C\xC7\x65\x0A\x3C\x1E\xC3\xF0\x85"
"\xF5\x8E\x09\xAA\xC4\x16\x58\x88\xCF\x7C\x74\x35\xF8\xF4\x3B\x04\xD3\x33\xF0\x16"
"\x78\x63\x3F\x0C\xEF\xE8\x3C\xEA\xBD\xE7\xF3\xE0\x98\x18\xB1\xAF\xA8\xE8\x3C\xE8"
"\x98\x4C\x6B\xEA\x21\xC6\x45\xA2\x1D\xD0\x46\xE0\xC8\xEF\x1E\x0C\xEF\xEB\x06\x56"
"\xE7\x78\xF8\x7B\x47\xBF\x82\xC6\x78\xF3\x3D\xB8\x79\x9E\xDF\x0A\xB1\x8C\xF3\x3D"
"\x81\xEF\xC3\x09\x9E\xC3\xA8\x10\x78\x3D\x3D\x87\x90\x87\x37\x4F\x61\xEE\x3A\x8B"
"\xE0\x89\x70\x76\x1B\x01\x16\xC9\x81\xC7\x3C\x7B\x0F\x71\xD4\x4C\x11\x2C\xB0\x82"
"\xD1\x9E\x04\x6C\x6A\xC4\x30\x7B\x0F\x71\xEE\x3D\xC7\x83\x3B\xFA\x12\xEA\xCF\x87"
"\xB6\x70\xBE\x08\x32\x41\x0B\x6C\x3E\x73\x1F\x46\x7B\xE3\xA1\x70\x20\xCC\x3B\xA0"
"\x89\xC1\x49\xD4\x25\xD5\x9D\x40\x85\xC0\x29\xDE\x3C\x02\x27\x20\xC0\x87\xCB\xA9"
"\xF9\xE7\x45\x5A\x35\xE0\xBA\x3B\xA6\x05\xF0\x75\xB9\xC7\x74\xEF\x1E\xD0\xB0\x3B"
"\xAD\xCE\x3A\x7D\x85\x96\x21\xDD\x3B\xC7\x83\xDC\x75\x1C\x89\x32\x04\x8C\x78\x61"
"\xF8\x7A\x1D\x83\x0F\xC3\xD0\xC6\x7C\x6A\xB0\xEB\x73\x8F\x87\xD9\xB4\x77\xCF\xB4"
"\x35\xD0\xAC\x10\xF8\x7D\x8F\x3A\x3E\xCF\xC3\xD0\x70\xBA\xAC\xE3\xF0\xFA\xF1\xE8"
"\x76\x02\x14\x73\xD0\xEC\x31\x9F\x1A\x7E\x4E\x17\xCF\x4A\xFA\x0C\x2B\xF7\x8F\x87"
"\xD9\xB6\x84\x42\xAB\xE7\xD9\xF8\x7A\x50\x87\xE1\xE8\x39\x56\xD0\x4C\xF8\x7D\x9C"
"\x64\x6C\x3E\x8E\x3C\x22\x36\x23\xEB\xC8\xEB\x47\xD7\x81\x07\xA0\x7E\x38\xFC\x3D"
"\x0E\xCA\x10\xFC\x3D\x28\x43\xF0\xFA\xF0\x22\x47\x3D\x04\xD3\x30\x43\xC4\x88\x22"
"\x35\x16\xA3\xEB\xC7\xD8\x21\xE7\x1E\xD3\xEC\xFC\x9C\x2F\x9E\x9A\x08\x52\xCF\x60"
"\xEA\x3D\x80\x85\x82\x9E\xC3\xE8\x43\xE8\xFA\x3E\xBC\x08\x9D\x2A\x01\x03\xAC\xEB"
"\x1C\x11\xE6\x7D\x08\x30\xD8\x08\x7C\xFA\x1F\x47\x1D\x11\xB0\xFA\x38\xE8\x8D\x87"
"\xD1\xC7\x44\x6C\x3D\x87\xE1\xE8\x76\x69\xF9\x38\x5F\x04\x1E\x86\xD8\x21\x68\xA4"
"\x3D\xF6\xF9\x10\xCC\x1F\x7F\x3E\xC1\x2B\xA1\xDE\x73\x08\x8C\x1C\xC3\xC1\xF6\x7E"
"\x11\x0F\x10\xC0\x42\xE8\x77\xCE\x17\xCF\x4A\x10\x10\xF4\x30\x50\xCE\x4F\xD1\xE4"
"\x6C\x39\x08\x8C\x1C\xDD\xF1\xE0\xFA\x74\x42\x1F\x41\xCE\x17\xD0\x23\x70\x1A\x6C"
"\x04\x6D\xF8\x30\x8F\x33\xC8\xFA\x38\xE8\x88\xD8\x7D\x1C\x74\x44\x6C\x3E\x8E\x3A"
"\x22\x36\x02\x0E\xE6\x09\x13\xC1\x1F\x8B\x40\x43\xE2\xC1\x07\x81\x78\x65\xF1\xF0"
"\xF6\x1C\xC3\xD8\x7E\x1F\xA3\xC9\x67\xBE\x78\x29\xC2\xF8\x21\x74\x6A\x01\x0B\x86"
"\x92\x0C\xA9\x1F\x42\x1E\xC3\xF0\xF4\xF0\xDB\x08\x23\xF0\xFD\x1E\x47\x17\xD7\xCF"
"\x07\x70\xF4\x3B\x08\x10\x66\x1F\x42\x11\xA0\x22\x70\x4E\x08\x3D\x0A\xF3\xB2\x84"
"\x3F\x0F\xAF\x1E\xD6\x7B\xA7\x0B\xE0\x8F\xD3\xF2\x04\x1E\x5C\x67\x0B\xE6";
// Compressed from 1631 to 1110, -31.9%
const char ZB_WEB[] PROGMEM = "\x00\x66\x3D\x0E\xCA\xB1\xC1\x33\xF0\xF4\xF5\x19\x04\xCF\xC3\xA1\xB6\x84\x54\x21"
"\xE7\xD9\x47\x74\xF3\x31\xBF\xF5\x1D\x61\x8A\xD0\x84\x3B\xC7\xB4\x7F\x44\xA1\x47"
"\x99\xCA\x64\x30\xD8\x78\x31\x9D\x47\x5F\xB4\xDA\xCF\x33\x9E\x67\xD1\xF4\x7B\x88"
"\x10\xF1\x2A\x01\xAC\x10\xF0\xA0\x42\xC2\x4E\x66\x90\xC3\x60\x20\xDA\x3A\x0E\xA3"
"\xDA\x36\xFE\x3D\xBC\x75\xFF\x47\x85\x51\xE6\x72\x32\x18\x6C\x3C\x1E\xE3\xA0\xAA"
"\xF9\xED\x0B\x79\x9D\x62\x9E\x8F\x0A\xA3\xCC\xE5\x32\x18\x6C\x3D\xC7\x41\xC6\xC3"
"\xDA\x08\x53\x0E\x4C\x21\x86\xC3\xC0\x20\xE5\x27\x26\x10\xC3\x61\xE0\x4D\xF0\xC0"
"\xAC\xC8\xF3\xDE\x0B\x79\x9D\x63\x82\xC0\xCD\x0F\x03\xB3\xE2\x3F\x9E\x67\x21\x0C"
"\x36\x2F\x60\x5A\x22\x0C\x5F\xFE\xFA\x88\x3C\x0B\x3E\x78\x1D\x61\x9A\x0F\x7F\x05"
"\xF0\x87\x58\x78\x16\x7C\xF3\x33\xBF\x9D\xD3\xAC\xEB\x0C\x23\xA8\xF2\x30\x60\xC1"
"\xDE\x3D\xC7\x4F\x69\xED\x04\xAC\xCC\xC0\x4C\xD8\x78\xB0\xB4\x7B\x8E\xBD\xA6\x37"
"\xC7\x99\x80\x99\xB0\xEB\x7C\x21\xE0\x10\xF7\x33\x9A\x43\x0D\x87\x81\x96\x20\x9B"
"\xC3\xC7\x99\xC6\x78\x2D\x04\x2E\x13\x0E\x59\x0C\x36\x1E\x01\x27\x84\x21\x86\xC0"
"\x42\xDE\x8E\xBF\xD8\x9A\x2F\xC7\x99\xCB\x21\x86\xC0\x54\xDB\x8F\xDD\x1B\x28\xEF"
"\x1E\xE3\xA0\xE3\x8C\x81\x0F\x85\xA3\x95\xA7\xD1\xF4\x7B\x8E\x84\x38\xE4\x20\x43"
"\x98\x73\x59\xF4\x7D\x1E\xE3\xA1\x0E\x39\x44\x08\x73\x0E\x78\x81\x06\xE1\xCB\x20"
"\x44\xE2\x28\xE3\x67\xD1\xF4\x7B\x8F\x71\xD0\xB0\xE5\xB3\xDA\x58\x32\xC3\xDA\x32"
"\x3C\xCE\x87\x2C\xF7\x1E\x87\x61\x02\x0F\x27\x07\xB6\x8F\x74\xE1\x7E\x70\xBE\x7A"
"\x78\x3F\xE8\xCA\x54\x64\x31\x9F\x0F\x65\x33\x65\x1D\x86\xBB\x33\xB0\x41\xA4\x7B"
"\x17\xBE\x19\xF0\xF6\x0A\xAA\x19\xE3\xCC\xEC\x3B\x05\xF0\xC3\x41\xE3\xA0\x78\x34"
"\xEC\x33\xDF\x1D\x7C\xE8\x7F\x3E\x68\x76\x7A\xAF\x84\xB0\xB3\x99\xD8\x2C\x68\x80"
"\x8F\x5C\xE8\x37\x78\xE8\x6B\xF1\xEC\x3F\x0F\x43\xB0\x10\x72\xC3\xF0\xF4\x13\x4C"
"\xD6\x88\x7C\x3D\x83\x4C\x81\x0B\x2A\x01\x3D\x8B\xD4\x64\x13\x3E\x1E\xC0\x4C\xE1"
"\x88\xF2\x30\x60\xC1\xE0\x10\xA3\x9C\x6D\x90\x21\x72\xA6\x73\xED\x90\xC3\x60\x21"
"\xF1\xA8\x73\x1B\x20\x44\xE2\xB8\x11\xB9\x4C\x0B\x47\x85\x50\xF7\xEC\xC8\xF1\xF7"
"\xED\x36\xB3\xCC\x76\x50\xA3\xC1\xEC\x3F\x08\x5F\x58\xE0\x9A\xAC\x41\x65\x88\x8C"
"\xF7\xC7\x43\x5F\x8F\x43\xB0\x4D\x33\x3F\x01\x67\x86\x33\xF0\xCE\xFE\x83\xCE\xAB"
"\xDE\x7F\x3E\x09\x81\x8B\x1A\xFA\x8E\x83\xCE\x89\x84\xC6\xBE\xA2\x1C\x64\x5A\x21"
"\xDD\x04\x6E\x0C\x8E\xF1\xE0\xCE\xFE\xB0\x65\x6E\x77\x8F\x87\xB4\x7B\xF8\x2C\x67"
"\x8F\x33\xDB\x87\x99\xED\xF0\xAB\x18\xCF\x33\xD8\x1E\xFC\x30\x99\xEC\x3A\x81\x07"
"\x83\xD3\xD8\x79\x08\x73\x74\xF6\x1E\xE3\xA8\xBE\x08\x97\x07\x61\xB0\x11\x6C\x98"
"\x1C\x73\xC7\xB0\xF7\x1D\x44\xC1\x12\xCB\x08\x2D\x19\xE0\x46\xC6\xAC\x43\x07\xB0"
"\xF7\x1E\xE3\xDC\x78\x33\xBF\xA1\x2E\xAC\xF8\x7B\x67\x0B\xE0\x83\x24\x10\xB6\xC3"
"\xE7\x31\xF4\x67\xBE\x3A\x17\x02\x0C\xC3\xBA\x08\x9C\x14\x9D\x42\x5D\x59\xD4\x08"
"\x5C\x02\x9D\xE3\xC0\x22\x72\x0C\x08\x7C\xBA\x9F\x9E\x74\x55\xA3\x5E\x0B\xA3\xBA"
"\x60\x5F\x07\x5B\x9C\x77\x4E\xF1\xED\x0B\x03\xBA\xDC\xE3\xA7\xD8\x59\x62\x1D\xD3"
"\xBC\x78\x3D\xC7\x51\xC8\x93\x20\x48\xC7\x86\x1F\x87\xA1\xD8\x30\xFC\x3D\x0C\x67"
"\xC6\xAB\x0E\xB7\x38\xF8\x7D\x9B\x47\x7C\xFB\x43\x5D\x0A\xC1\x0F\x87\xD8\xF3\xA3"
"\xEC\xFC\x3D\x07\x0B\xAA\xCE\x3F\x0F\xAF\x1E\x87\x60\x21\x47\x3D\x0E\xC3\x19\xF1"
"\xA7\xE4\xE1\x7C\xF4\xAF\xA0\xC2\xBF\x78\xF8\x7D\x9B\x68\x44\x2A\x2B\xBE\x7D\x9F"
"\x87\xA5\x08\x7E\x1E\x83\x95\x6D\x04\xCF\x87\xD9\xC6\x46\xC3\xE8\xE3\xC2\x23\x62"
"\x3E\xBC\x8E\xB4\x7D\x78\xFB\x04\x1C\x84\xFC\x3D\x0E\xCA\x10\xFC\x3D\x28\x43\xF0"
"\xFA\xF0\x22\x47\x3D\x04\xD3\x30\x43\xC4\x88\x22\x35\x16\xA3\xEB\xC7\xD8\x21\xE7"
"\x1E\xD3\xEC\xFC\x9C\x2F\x9E\x9A\x08\x52\xCF\x60\xEA\x3D\x80\x85\x82\x9E\xC3\xE8"
"\x43\xE8\xFA\x3E\xBC\x08\x9D\x2A\x01\x03\xAC\xEB\x1C\x11\xE6\x7D\x08\x30\xD8\x08"
"\x7C\xFA\x1F\x47\x1D\x11\xB0\xFA\x38\xE8\x8D\x87\xD1\xC7\x44\x6C\x3D\x87\xE1\xE8"
"\x76\x69\xF9\x38\x5F\x3D\x3C\x32\xF8\x10\xF4\x52\x1E\xFB\x7C\x88\x66\x0F\xBF\x9F"
"\x60\x85\x90\x9F\x60\x85\x8B\x9C\xC2\x23\x07\x30\xF0\x7D\x9F\x84\x43\xC4\x30\xF4"
"\x3B\x3C\x32\xF8\xFC\x9C\x2F\x9E\x94\x20\x21\xE8\x60\xA1\x9C\x9F\xA3\xC8\xD8\x72"
"\x11\x18\x39\xBB\xE3\xC1\xF4\xE8\x84\x3E\x83\x9C\x2F\xA0\x46\xE0\x34\xD8\x08\xDB"
"\xF0\x61\x1E\x67\x91\xF4\x71\xD1\x11\xB0\xFA\x38\xE8\x88\xD8\x7D\x1C\x74\x44\x6C"
"\x04\x1D\xCC\x12\x27\x82\x3F\x16\x80\x87\xC5\x82\x0F\x02\xF0\xCB\xE3\xE1\xCC\x3F"
"\x0F\xD1\xE4\xB3\xDF\x3C\x14\xE1\x7D\x02\x3F\x04\xE7\xB0\x83\x2A\x2B\x47\xD0\x87"
"\xB0\xFC\x3D\x3C\x36\xC2\x08\xFC\x3F\x47\x91\xC5\xF5\xF3\xC1\xDC\x3D\x0E\xC2\x04"
"\x19\x87\xD0\x84\x68\x08\x9C\x12\x82\x0F\x42\xB4\xEC\xA1\x0F\xC3\xEB\xC7\xB5\x9E"
"\xE9\xC2\xF8\x21\xF4\xEB\xCF\x6D\x1E\xE9\xC2\xF9";
// ++++++++++++++++++++^^^^^^^^^^^^^^^^^^^++++++++++++++++++++
// ++++++++++++++++++++ DO NOT EDIT ABOVE ++++++++++++++++++++
@ -2182,15 +2181,16 @@ const char HTTP_ZB_VERSION[] PROGMEM =
"</div>";
const char HTTP_BTN_ZB_BUTTONS[] PROGMEM =
"<button onclick='la(\"&zbj=1\");'>" D_ZIGBEE_PERMITJOIN "</button>"
"<button %s onclick='la(\"&zbj=1\");'>%s%s</button>"
"<p></p>"
"<a href='zbm'><button>" D_ZIGBEE_MAP "</button></a>"
"<p></p>";
const char HTTP_BTN_ZB_BUTTONS_DISABLED[] PROGMEM =
"<button style='background-color:#%06X' disabled>" D_ZIGBEE_PERMITJOIN "</button>"
"<p></p>"
"<button style='background-color:#%06X' disabled>" D_ZIGBEE_MAP "</button>"
"<button style='background-color:var(--c_frm)' disabled>" D_ZIGBEE_PERMITJOIN "</button>"
"<p></p>"
"<button style='background-color:var(--c_frm)' disabled>" D_ZIGBEE_MAP "</button>"
"<p></p>";
void ZigbeeShow(bool json)
@ -2204,7 +2204,7 @@ void ZigbeeShow(bool json)
if ((zigbee_num > 0) && (!zigbee.init_phase)) { // don't displays devices on UI if still in initialization phase
if (zigbee_num > 255) { zigbee_num = 255; }
WSContentSend_P(msg[ZB_WEB_CSS], WebColor(COL_TEXT));
WSContentSend_P(msg[ZB_WEB_CSS]);
// WSContentSend_compressed(ZB_WEB, 0);
// sort elements by name, then by id
@ -2262,12 +2262,12 @@ void ZigbeeShow(bool json)
}
uint32_t num_bars = 0;
char slqi[4];
char slqi[16];
slqi[0] = '-';
slqi[1] = '\0';
if (device.validLqi()){
num_bars = changeUIntScale(device.lqi, 0, 254, 0, 4);
snprintf_P(slqi, sizeof(slqi), PSTR("%d"), device.lqi);
snprintf_P(slqi, sizeof(slqi), PSTR("%d (%d%%)"), device.lqi, changeUIntScale(device.lqi, 0, 254, 0, 100));
}
WSContentSend_PD(msg[ZB_WEB_STATUS_LINE],
@ -2389,21 +2389,22 @@ void ZigbeeShow(bool json)
WSContentSend_P(msg[ZB_WEB_LINE_END]); // Terminate current multi column table and open new table
}
if (zigbee.permit_end_time) {
// PermitJoin in progress
WSContentSend_P(msg[ZB_WEB_PERMITJOIN_ACTIVE], PSTR(D_ZIGBEE_PERMITJOIN_ACTIVE));
}
// show Zigbee MCU version
WSContentSend_P(PSTR("<tr><td colspan=2>"));
if (!zigbee.init_phase) {
WSContentSend_P(HTTP_ZB_VERSION,
zigbee.major_rel, zigbee.minor_rel,
zigbee.maint_rel, zigbee.revision);
WSContentSend_P(HTTP_BTN_ZB_BUTTONS);
zigbee.maint_rel, zigbee.revision); // show Zigbee MCU version
if (zigbee.permit_end_time) { // PermitJoin in progress
char sectemp[16];
snprintf_P(sectemp, sizeof(sectemp), PSTR(" (%d " D_UNIT_SECOND ")"), TimePassedSince(zigbee.permit_end_time) / -1000);
WSContentSend_P(HTTP_BTN_ZB_BUTTONS, "class='button bgrn'", D_ZIGBEE_PERMITJOIN_ACTIVE, sectemp);
} else {
WSContentSend_P(HTTP_BTN_ZB_BUTTONS, "", D_ZIGBEE_PERMITJOIN, "");
}
} else {
uint32_t grey = WebColor(COL_FORM);
WSContentSend_P(HTTP_BTN_ZB_BUTTONS_DISABLED, grey, grey);
WSContentSend_P(HTTP_BTN_ZB_BUTTONS_DISABLED);
}
WSContentSend_P(PSTR("{e}"));
#endif
}
}