@ -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" >
@ -516,25 +526,25 @@
< div class = "pure-g" >
< div class = "pure-g" >
< label class = "pure-u-1 pure-u-lg-1-4" > Settings< / label >
< label class = "pure-u-1 pure-u-lg-1-4" > Settings< / label >
< div class = "pure-u-1-3 pure-u-lg-1-4" > < button class = "pure-button button-settings-backup pure-u-23-24" > Backup< / button > < / div >
< div class = "pure-u-1-3 pure-u-lg-1-4" > < button class = "pure-button button-settings-restore pure-u-23-24" > Restore< / button > < / div >
< div class = "pure-u-1-3 pure-u-lg-1-4" > < button class = "pure-button button-settings-factory pure-u-1" > Factory Reset< / button > < / div >
< div class = "pure-u-1-3 pure-u-lg-1-4" > < button type = "button" class = "pure-button button-settings-backup pure-u-23-24" > Backup< / button > < / div >
< div class = "pure-u-1-3 pure-u-lg-1-4" > < button type = "button" class = "pure-button button-settings-restore pure-u-23-24" > Restore< / button > < / div >
< div class = "pure-u-1-3 pure-u-lg-1-4" > < button type = "button" class = "pure-button button-settings-factory pure-u-1" > Factory Reset< / button > < / div >
< / div >
< / div >
< 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" / >
@ -570,7 +580,7 @@
< div class = "pure-g module module-api" >
< div class = "pure-g module module-api" >
< label class = "pure-u-1 pure-u-lg-1-4" > HTTP API Key< / label >
< label class = "pure-u-1 pure-u-lg-1-4" > HTTP API Key< / label >
< input name = "apiKey" class = "pure-u-3-4 pure-u-lg-1-2" type = "text" tabindex = "14" / >
< input name = "apiKey" class = "pure-u-3-4 pure-u-lg-1-2" type = "text" tabindex = "14" / >
< div class = " pure-u-1-4 pure-u-lg-1-4" > < button class = "pure-button button-apikey pure-u-23-24" > Auto< / button > < / div >
< div class = "pure-u-1-4 pure-u-lg-1-4" > < button type = "button" class = "pure-button button-apikey pure-u-23-24" > Auto< / button > < / div >
< 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" >
This is the key you will have to pass with every HTTP request to the API, either to get or write values.
This is the key you will have to pass with every HTTP request to the API, either to get or write values.
@ -603,8 +613,8 @@
< div class = "pure-g" >
< div class = "pure-g" >
< label class = "pure-u-1 pure-u-lg-1-4" > Upgrade< / label >
< label class = "pure-u-1 pure-u-lg-1-4" > Upgrade< / label >
< input class = "pure-u-1-2 pure-u-lg-1-2" name = "filename" type = "text" readonly / >
< input class = "pure-u-1-2 pure-u-lg-1-2" name = "filename" type = "text" readonly / >
< div class = " pure-u-1-4 pure-u-lg-1-8" > < button class = "pure-button button-upgrade-browse pure-u-23-24" > Browse< / button > < / div >
< div class = " pure-u-1-4 pure-u-lg-1-8" > < button class = "pure-button button-upgrade pure-u-23-24" > Upgrade< / button > < / div >
< div class = "pure-u-1-4 pure-u-lg-1-8" > < button type = "button" class = "pure-button button-upgrade-browse pure-u-23-24" > Browse< / button > < / div >
< div class = "pure-u-1-4 pure-u-lg-1-8" > < button type = "button" class = "pure-button button-upgrade pure-u-23-24" > Upgrade< / button > < / div >
< 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" > The device has < span name = "free_size" > < / span > bytes available for OTA updates. If your image is larger than this consider doing a < a href = "https://github.com/xoseperez/espurna/wiki/TwoStepUpdates" target = "_blank" > < strong > two-step update< / strong > < / a > .< / div >
< div class = "pure-u-1 pure-u-lg-3-4 hint" > The device has < span name = "free_size" > < / span > bytes available for OTA updates. If your image is larger than this consider doing a < a href = "https://github.com/xoseperez/espurna/wiki/TwoStepUpdates" target = "_blank" > < strong > two-step update< / strong > < / a > .< / div >
< div class = "pure-u-0 pure-u-lg-1-4" > < / div >
< div class = "pure-u-0 pure-u-lg-1-4" > < / div >
@ -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 >
@ -746,15 +764,17 @@
< / tbody >
< / tbody >
< / table >
< / table >
< button class = "pure-button button-clear-filters" > Clear filters< / button >
< button class = "pure-button button-clear-messages" > Clear messages< / button >
< button class = "pure-button button-clear-counts" > Clear counts< / button >
< button type = "button" class = "pure-button button-clear-filters" > Clear filters< / button >
< button type = "button" class = "pure-button button-clear-messages" > Clear messages< / button >
< button type = "button" class = "pure-button button-clear-counts" > Clear counts< / button >
< / 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" >
@ -1001,7 +1028,7 @@
< div class = "pure-g" >
< div class = "pure-g" >
< label class = "pure-u-1 pure-u-lg-1-4" > Configuration< / label >
< label class = "pure-u-1 pure-u-lg-1-4" > Configuration< / label >
< div class = "pure-u-1-4 pure-u-lg-3-4" > < button class = "pure-button button-ha-config pure-u-1-3" > Show< / button > < / div >
< div class = "pure-u-1-4 pure-u-lg-3-4" > < button type = "button" class = "pure-button button-ha-config pure-u-1-3" > Show< / button > < / div >
< 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" >
These are the settings you should copy to your Home Assistant "configuration.yaml" file.
These are the settings you should copy to your Home Assistant "configuration.yaml" file.
@ -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" >
@ -1127,12 +1161,12 @@
Write a command and click send to execute it on the device. The output will be shown in the debug text area below.
Write a command and click send to execute it on the device. The output will be shown in the debug text area below.
< / div >
< / div >
< input name = "dbgcmd" class = "pure-u-3-4" type = "text" tabindex = "2" / >
< input name = "dbgcmd" class = "pure-u-3-4" type = "text" tabindex = "2" / >
< div class = " pure-u-1-4 pure-u-lg-1-4" > < button class = "pure-button button-dbgcmd pure-u-23-24" > Send< / button > < / div >
< div class = "pure-u-1-4 pure-u-lg-1-4" > < button type = "button" class = "pure-button button-dbgcmd pure-u-23-24" > Send< / button > < / div >
< / div >
< / div >
< div class = "pure-g" >
< div class = "pure-g" >
< textarea class = "pure-u-1 terminal" id = "weblog" name = "weblog" wrap = "off" readonly > < / textarea >
< textarea class = "pure-u-1 terminal" id = "weblog" name = "weblog" wrap = "off" readonly > < / textarea >
< div class = " pure-u-1-4 pure-u-lg-1-4" > < button class = "pure-button button-dbg-clear pure-u-23-24" > Clear< / button > < / div >
< div class = "pure-u-1-4 pure-u-lg-1-4" > < button type = "button" class = "pure-button button-dbg-clear pure-u-23-24" > Clear< / button > < / div >
< / div >
< / div >
< / fieldset >
< / fieldset >
@ -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 >