@ -28,40 +28,45 @@
< div class = "content" >
< div class = "content" >
< form id = "formPassword" class = "pure-form" action = "/" method = "post" >
< form id = "formPassword" class = "pure-form" >
< div class = "panel block" >
< div class = "panel block" id = "panel-password" >
< div class = "header" >
< div class = "header" >
< h1 > SECURITY< / h1 >
< h1 > SECURITY< / h1 >
< h2 > Before using this device you have to change the default password for the user 'admin' . This password will be used for the < strong > AP mode hotspot< / strong > , the < strong > web interface< / strong > (where you are now) and the < strong > over-the-air updates< / strong > .< / h2 >
< h2 > Before using this device you have to change the default password for the user < strong > admin< / strong > . This password will be used for the < strong > AP mode hotspot< / strong > , the < strong > web interface< / strong > (where you are now) and the < strong > over-the-air updates< / strong > .< / h2 >
< / div >
< / div >
< div class = "page" >
< div class = "page" >
< fieldset >
< fieldset >
< div class = "pure-g" >
< div class = "pure-g" >
< label class = "pure-u-1 pure-u-lg-1-4" > Admin password< / label >
< input name = "adminPass" class = "pure-u-1 pure-u-lg-3-4" maxlength = "63" type = "password" tabindex = "1" autocomplete = "false" / >
< div class = "pure-u-0 pure-u-lg-1-4" > < / div >
< div class = "pure-u-1 pure-u-lg-3-4 hint" >
The administrator password is used to access this web interface (user 'admin'), but also to connect to the device when in AP mode or to flash a new firmware over-the-air (OTA).< br / >
It must be < strong > 8..63 characters< / strong > (numbers and letters and any of these special characters: _,.;:~!?@#$%^& *< > \|(){}[]) and have at least < strong > one lowercase< / strong > and < strong > one uppercase< / strong > or < strong > one number< / strong > .< / div >
< label class = "pure-u-1 pure-u-lg-1-4" for = "adminPass" > New Password< / label >
< input class = "pure-u-1 pure-u-lg-3-4" name = "adminPass" maxlength = "63" type = "password" tabindex = "1" autocomplete = "false" spellcheck = "false" / >
< span class = "no-select password-reveal" > < / span >
< / div >
< / div >
< div class = "pure-g" >
< div class = "pure-g" >
< label class = "pure-u-1 pure-u-lg-1-4" > Repeat password< / label >
< input name = "adminPass" class = "pure-u-1 pure-u-lg-3-4" type = "password" tabindex = "2" autocomplete = "false" / >
< label class = "pure-u-1 pure-u-lg-1-4" for = "adminPass_confirm" > Repeat password< / label >
< input class = "pure-u-1 pure-u-lg-3-4" name = "adminPass_confirm" type = "password" tabindex = "2" autocomplete = "false" spellcheck = "false" / >
< span class = "no-select password-reveal" > < / span >
< / div >
< / div >
< / fieldset >
< div class = "pure-u-0 pure-u-lg-1-4 more" > < / div >
< button class = "pure-button button-update-password" type = "button" > Update< / button >
< div class = "pure-g" >
< div class = "pure-u-1 pure-u-lg-1 hint" >
Password must be < strong > 8..63 characters< / strong > (numbers and letters and any of these special characters: _,.;:~!?@#$%^& *< > \|(){}[]) and have at least < strong > one lowercase< / strong > and < strong > one uppercase< / strong > or < strong > one number< / strong > .< / div >
< / div >
< div class = "pure-g" >
< button class = "pure-u-11-24 pure-u-lg-1-4 pure-button button-generate-password" type = "button" title = "Generate password based on password policy" > Generate< / button >
< div class = "pure-u-2-24 pure-u-lg-1-2" > < / div >
< button class = "pure-u-11-24 pure-u-lg-1-4 pure-button button-update-password" title = "Save new password" > Save< / button >
< / div >
< / fieldset >
< / div >
< / div >
< / div >
< / div >
< / form >
< / form >
< / div > <!-- content -->
< / div > <!-- content -->
@ -309,8 +314,7 @@
< / div >
< / div >
< / div >
< / div >
< form id = "formSave" class = "pure-form" action = "/" method = "post" enctype = "multipart/form-data" >
< form id = "form-general" class = "pure-form form-settings" >
< div class = "panel" id = "panel-general" >
< div class = "panel" id = "panel-general" >
< div class = "header" >
< div class = "header" >
@ -382,7 +386,9 @@
< / fieldset >
< / fieldset >
< / div >
< / div >
< / div >
< / div >
< / form >
< form id = "form-relay" class = "pure-form form-settings" >
< div class = "panel" id = "panel-relay" >
< div class = "panel" id = "panel-relay" >
< div class = "header" >
< div class = "header" >
@ -414,8 +420,10 @@
< / div >
< / div >
< / div >
< / div >
< / form >
<!-- removeIf(!light) -->
<!-- removeIf(!light) -->
< form id = "form-color" class = "pure-form form-settings" >
< div class = "panel" id = "panel-color" >
< div class = "panel" id = "panel-color" >
< div class = "header" >
< div class = "header" >
@ -501,8 +509,10 @@
< / fieldset >
< / fieldset >
< / div >
< / div >
< / div >
< / div >
<!-- endRemoveIf(!light) -->
< / form >
<!-- endRemoveIf(!light) -->
< form id = "form-admin" class = "pure-form form-settings" >
< div class = "panel" id = "panel-admin" >
< div class = "panel" id = "panel-admin" >
< div class = "header" >
< div class = "header" >
@ -523,18 +533,18 @@
< div class = "pure-g" >
< div class = "pure-g" >
< label class = "pure-u-1 pure-u-lg-1-4" > Admin password< / label >
< label class = "pure-u-1 pure-u-lg-1-4" > Admin password< / label >
< input name = "adminPass" class = "pure-u-1 pure-u-lg-3-4" maxlength = "63" type = "password" action = "reboot" tabindex = "11" autocomplete = "false" / >
< input name = "adminPass" class = "pure-u-1 pure-u-lg-3-4" placeholder = "New password" maxlength = "63" type = "password" action = "reboot" tabindex = "11" autocomplete = "false" spellcheck = "false" / >
< span class = "no-select password-reveal" > < / span >
< div class = "pure-u-1 pure-u-lg-1-4" > < / div >
< input name = "adminPass_confirm" class = "pure-u-1 pure-u-lg-3-4" placeholder = "Repeat password" maxlength = "63" type = "password" action = "reboot" tabindex = "12" autocomplete = "false" spellcheck = "false" / >
< span class = "no-select password-reveal" > < / span >
< div class = "pure-u-0 pure-u-lg-1-4" > < / div >
< div class = "pure-u-0 pure-u-lg-1-4" > < / div >
< div class = "pure-u-1 pure-u-lg-3-4 hint" >
< div class = "pure-u-1 pure-u-lg-3-4 hint" >
The administrator password is used to access this web interface (user 'admin'), but also to connect to the device when in AP mode or to flash a new firmware over-the-air (OTA).< br / >
The administrator password is used to access this web interface (user 'admin'), but also to connect to the device when in AP mode or to flash a new firmware over-the-air (OTA).< br / >
It must be < strong > 8..63 characters< / strong > (numbers and letters and any of these special characters: _,.;:~!?@#$%^& *< > \|(){}[]) and have at least < strong > one lowercase< / strong > and < strong > one uppercase< / strong > or < strong > one number< / strong > .< / div >
It must be < strong > 8..63 characters< / strong > (numbers and letters and any of these special characters: _,.;:~!?@#$%^& *< > \|(){}[]) and have at least < strong > one lowercase< / strong > and < strong > one uppercase< / strong > or < strong > one number< / strong > .< / div >
< / div >
< / div >
< div class = "pure-g" >
< label class = "pure-u-1 pure-u-lg-1-4" > Repeat password< / label >
< input name = "adminPass" class = "pure-u-1 pure-u-lg-3-4" maxlength = "63" type = "password" action = "reboot" tabindex = "12" autocomplete = "false" / >
< / div >
< div class = "pure-g" >
< div class = "pure-g" >
< label class = "pure-u-1 pure-u-lg-1-4" > HTTP port< / label >
< label class = "pure-u-1 pure-u-lg-1-4" > HTTP port< / label >
< input name = "webPort" class = "pure-u-1 pure-u-lg-1-4" type = "text" action = "reboot" tabindex = "13" / >
< input name = "webPort" class = "pure-u-1 pure-u-lg-1-4" type = "text" action = "reboot" tabindex = "13" / >
@ -615,7 +625,9 @@
< / fieldset >
< / fieldset >
< / div >
< / div >
< / div >
< / div >
< / form >
< form id = "form-wifi" class = "pure-form form-settings" >
< div class = "panel" id = "panel-wifi" >
< div class = "panel" id = "panel-wifi" >
< div class = "header" >
< div class = "header" >
@ -657,7 +669,9 @@
< / fieldset >
< / fieldset >
< / div >
< / div >
< / div >
< / div >
< / form >
< form id = "form-schedule" class = "pure-form form-settings" >
< div class = "panel" id = "panel-schedule" >
< div class = "panel" id = "panel-schedule" >
< div class = "header" >
< div class = "header" >
@ -681,8 +695,10 @@
< / div >
< / div >
< / div >
< / div >
< / form >
<!-- removeIf(!rfm69) -->
<!-- removeIf(!rfm69) -->
< form id = "form-mapping" class = "pure-form form-settings" >
< div class = "panel" id = "panel-mapping" >
< div class = "panel" id = "panel-mapping" >
< div class = "header" >
< div class = "header" >
@ -711,10 +727,12 @@
< / fieldset >
< / fieldset >
< / div >
< / div >
< / div >
< / div >
< / form >
< form id = "form-messages" class = "pure-form" >
< div class = "panel" id = "panel-messages" >
< div class = "panel" id = "panel-messages" >
< div class = "header" >
< div class = "header" >
< h1 > MESSAGES< / h1 >
< h1 > MESSAGES< / h1 >
< h2 >
< h2 >
@ -753,8 +771,10 @@
< / div >
< / div >
< / div >
< / div >
<!-- endRemoveIf(!rfm69) -->
< / form >
<!-- endRemoveIf(!rfm69) -->
< form id = "form-mqtt" class = "pure-form form-settings" >
< div class = "panel" id = "panel-mqtt" >
< div class = "panel" id = "panel-mqtt" >
< div class = "header" >
< div class = "header" >
@ -783,12 +803,13 @@
< div class = "pure-g" >
< div class = "pure-g" >
< label class = "pure-u-1 pure-u-lg-1-4" > MQTT User< / label >
< label class = "pure-u-1 pure-u-lg-1-4" > MQTT User< / label >
< input class = "pure-u-1 pure-u-lg-1-4" name = "mqttUser" type = "text" tabindex = "23" placeholder = "Leave blank if no user" autocomplete = "false " / >
< input class = "pure-u-1 pure-u-lg-1-4" name = "mqttUser" type = "text" tabindex = "23" placeholder = "Leave blank if no user" autocomplete = "off " / >
< / div >
< / div >
< div class = "pure-g" >
< div class = "pure-g" >
< label class = "pure-u-1 pure-u-lg-1-4" > MQTT Password< / label >
< label class = "pure-u-1 pure-u-lg-1-4" > MQTT Password< / label >
< input class = "pure-u-1 pure-u-lg-1-4" name = "mqttPassword" type = "password" tabindex = "24" placeholder = "Leave blank if no pass" autocomplete = "false" / >
< input class = "pure-u-1 pure-u-lg-1-4" name = "mqttPassword" type = "password" tabindex = "24" placeholder = "Leave blank if no pass" autocomplete = "new-password" spellcheck = "false" / >
< span class = "no-select password-reveal" > < / span >
< / div >
< / div >
< div class = "pure-g" >
< div class = "pure-g" >
@ -873,7 +894,9 @@
< / div >
< / div >
< / div >
< / div >
< / form >
< form id = "form-ntp" class = "pure-form form-settings" >
< div class = "panel" id = "panel-ntp" >
< div class = "panel" id = "panel-ntp" >
< div class = "header" >
< div class = "header" >
@ -917,7 +940,9 @@
< / div >
< / div >
< / div >
< / div >
< / form >
< form id = "form-domoticz" class = "pure-form form-settings" >
< div class = "panel" id = "panel-domoticz" >
< div class = "panel" id = "panel-domoticz" >
< div class = "header" >
< div class = "header" >
@ -964,7 +989,9 @@
< / div >
< / div >
< / div >
< / div >
< / form >
< form id = "form-ha" class = "pure-form form-settings" >
< div class = "panel" id = "panel-ha" >
< div class = "panel" id = "panel-ha" >
< div class = "header" >
< div class = "header" >
@ -1018,7 +1045,9 @@
< / div >
< / div >
< / div >
< / div >
< / form >
< form id = "form-thingspeak" class = "pure-form form-settings" >
< div class = "panel" id = "panel-thingspeak" >
< div class = "panel" id = "panel-thingspeak" >
< div class = "header" >
< div class = "header" >
@ -1060,7 +1089,9 @@
< / div >
< / div >
< / div >
< / div >
< / form >
< form id = "form-idb" class = "pure-form form-settings" >
< div class = "panel" id = "panel-idb" >
< div class = "panel" id = "panel-idb" >
< div class = "header" >
< div class = "header" >
@ -1096,19 +1127,22 @@
< div class = "pure-g" >
< div class = "pure-g" >
< label class = "pure-u-1 pure-u-lg-1-4" > Username< / label >
< label class = "pure-u-1 pure-u-lg-1-4" > Username< / label >
< input class = "pure-u-1 pure-u-lg-3-4" name = "idbUsername" type = "text" tabindex = "44" autocomplete = "false " / >
< input class = "pure-u-1 pure-u-lg-3-4" name = "idbUsername" type = "text" tabindex = "44" autocomplete = "off " / >
< / div >
< / div >
< div class = "pure-g" >
< div class = "pure-g" >
< label class = "pure-u-1 pure-u-lg-1-4" > Password< / label >
< label class = "pure-u-1 pure-u-lg-1-4" > Password< / label >
< input class = "pure-u-1 pure-u-lg-3-4" name = "idbPassword" type = "password" tabindex = "45" autocomplete = "false" / >
< input class = "pure-u-1 pure-u-lg-3-4" name = "idbPassword" type = "password" tabindex = "45" autocomplete = "new-password" spellcheck = "false" / >
< span class = "no-select password-reveal" > < / span >
< / div >
< / div >
< / fieldset >
< / fieldset >
< / div >
< / div >
< / div >
< / div >
< / form >
< form id = "form-dbg" class = "pure-form" >
< div class = "panel" id = "panel-dbg" >
< div class = "panel" id = "panel-dbg" >
< div class = "header" >
< div class = "header" >
@ -1140,8 +1174,10 @@
< / div >
< / div >
< / div >
< / div >
< / form >
<!-- removeIf(!sensor) -->
<!-- removeIf(!sensor) -->
< form id = "form-sns" class = "pure-form form-settings" >
< div class = "panel" id = "panel-sns" >
< div class = "panel" id = "panel-sns" >
< div class = "header" >
< div class = "header" >
@ -1297,9 +1333,11 @@
< / div >
< / div >
< / div >
< / div >
<!-- endRemoveIf(!sensor) -->
< / form >
<!-- endRemoveIf(!sensor) -->
<!-- removeIf(!rfbridge) -->
<!-- removeIf(!rfbridge) -->
< form id = "form-rfb" class = "pure-form form-settings" >
< div class = "panel" id = "panel-rfb" >
< div class = "panel" id = "panel-rfb" >
< div class = "header" >
< div class = "header" >
@ -1319,10 +1357,10 @@
< div id = "rfbNodes" > < / div >
< div id = "rfbNodes" > < / div >
< / fieldset >
< / fieldset >
< / div >
< / div >
< / div >
<!-- endRemoveIf(!rfbridge) -->
< / div >
< / form >
< / form >
<!-- endRemoveIf(!rfbridge) -->
< / div > <!-- content -->
< / div > <!-- content -->
@ -1363,7 +1401,8 @@
< div class = "pure-u-1-6 pure-u-lg-1-12" > < button type = "button" class = "pure-button button-more-network pure-u-1" > ...< / button > < / div >
< div class = "pure-u-1-6 pure-u-lg-1-12" > < button type = "button" class = "pure-button button-more-network pure-u-1" > ...< / button > < / div >
< label class = "pure-u-1 pure-u-lg-1-4 more" > Password< / label >
< label class = "pure-u-1 pure-u-lg-1-4 more" > Password< / label >
< input class = "pure-u-1 pure-u-lg-3-4 more" name = "pass" type = "password" action = "reconnect" value = "" tabindex = "0" autocomplete = "false" / >
< input class = "pure-u-1 pure-u-lg-3-4 more" name = "pass" type = "password" action = "reconnect" value = "" tabindex = "0" autocomplete = "new-password" spellcheck = "false" / >
< span class = "no-select password-reveal more" > < / span >
< label class = "pure-u-1 pure-u-lg-1-4 more" > Static IP< / label >
< label class = "pure-u-1 pure-u-lg-1-4 more" > Static IP< / label >
< input class = "pure-u-1 pure-u-lg-3-4 more" name = "ip" type = "text" action = "reconnect" value = "" maxlength = "15" tabindex = "0" autocomplete = "false" / >
< input class = "pure-u-1 pure-u-lg-3-4 more" name = "ip" type = "text" action = "reconnect" value = "" maxlength = "15" tabindex = "0" autocomplete = "false" / >
@ -1586,7 +1625,7 @@
<!-- removeIf(!rfm69) -->
<!-- removeIf(!rfm69) -->
< div id = "nodeTemplate" class = "template" >
< div id = "nodeTemplate" class = "template" >
< div class = "pure-g" >
< div class = "pure-g" >
< div class = "pure-u-md-1-6 pure-u-1-2" > < input name = "node" type = "text" class = "pure-u-11-12" value = "" size = "8" tabindex = "0" placeholder = "Node ID" > < / div >
< div class = "pure-u-md-1-6 pure-u-1-2" > < input name = "node" type = "text" class = "pure-u-11-12" value = "" size = "8" tabindex = "0" placeholder = "Node ID" autocomplete = "false" > < / div >
< div class = "pure-u-md-1-6 pure-u-1-2" > < input name = "key" type = "text" class = "pure-u-11-12" value = "" size = "8" tabindex = "0" placeholder = "Key" > < / div >
< div class = "pure-u-md-1-6 pure-u-1-2" > < input name = "key" type = "text" class = "pure-u-11-12" value = "" size = "8" tabindex = "0" placeholder = "Key" > < / div >
< div class = "pure-u-md-1-2 pure-u-3-4" > < input name = "topic" type = "text" class = "pure-md-11-12 pure-u-23-24" value = "" size = "8" tabindex = "0" placeholder = "MQTT Topic" > < / div >
< div class = "pure-u-md-1-2 pure-u-3-4" > < input name = "topic" type = "text" class = "pure-md-11-12 pure-u-23-24" value = "" size = "8" tabindex = "0" placeholder = "MQTT Topic" > < / div >
< div class = "pure-u-md-1-6 pure-u-1-4" > < button type = "button" class = "pure-button button-del-mapping pure-u-5-6 pure-u-md-5-6" > Del< / button > < / div >
< div class = "pure-u-md-1-6 pure-u-1-4" > < button type = "button" class = "pure-button button-del-mapping pure-u-5-6 pure-u-md-5-6" > Del< / button > < / div >