é?`q7@î ÿÿ W Ñ“˜Ú�{ê‚>±å¼û·Ä#?†;ÚM¹bwifi ipc: failed to post wifi taskfailed to post event=%d ret=%dwifi stop stage3: out of memory!wifi stop stage2: out of memory!wifi stop: out of memory!wifi deinit internal: wifi not stopalloc net80211 funcs fail MIC mismatch for the Bcast Mgmt frame(res=%d)MIC computation for BIP Failed(res=%d)BIP replay detectedInvalid MMIEMIC mismatch for the Bcast Mgmt frame(res=%d)MIC computation for BIP Failed(res=%d)BIP replay detectedInvalid MMIE%s %d Unknown Element Id - 0x%x!Invalid IE length - %d for IE Tagged 0x%xUnknown Element Id - 0x%x!Invalid IE length - %d for IE Tagged 0x%xFailed to allocate memory for FTM Request frame!Invalid Burst Period(%d), Burst Duration(%d) configuration!Failed to start Chm op!fail to get chan lockNo valid FTM Measurements found out of %d received measurements!Failed to allocate for FTM report!No FTM Measurements received from responder!%s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d age_reorder: null raprxa_eb mem fail tid=%drap mem fail tid=%d%s %d failed to start addba timeraddba index: unknow conn=%ptap to index: null conntap to index: null bssaddba response cb: status %d not success, no need to configure hardwareaddba response cb: ap bss deletedaddba response cb: ap conn deletedaddba response cb: bssid change from %02x:%02x:%02x:%02x:%02x:%02x to %02x:%02x:%02x:%02x:%02x:%02xaddba response cb: sta bss deletedaddba response cb: sta conn deletedaddba response invalid param%s %d %s %d %s %d %s %d alloc challenge: out of memory!%s %d ioctl_process: invalid argioctl: unsupported ioctl cmd=%dioctl: invalid cmd(%d)ioctl: null paraminvalid ipc cfgwpa2 ent enable, invalid param(%p)wifi stop stage error, stage=%d In function %s, fail to register function! invalid core id %drx ba window %d errormanagement short buf number %d is out of rangetx buf type %d errordynamic tx buf number %d is out of rangestatic tx buf number %d is out of rangedynamic rx buf number %d is out of rangestatic rx buf number %d is out of rangewpa crypto funcs expected size=%d version=%d, actual size=%d version=%dinvalid magic number %x, call WIFI_INIT_CONFIG_DEFAULT to init configparameter config should not be NULL%s %d %s %d %s %d %s %d Channel number %d is out of range from %d to %d in country code cc=%c%c%c.sta is connecting, return errorinit nvs: failed, ret=%xwifi nvs cfg alloc out of memorynvs invalid min %d max %dinvalid wifi nvs key index %d%s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d setup rate: out of memory!%s %d %s %d %s %d null wpa_parse_wpa_ienull wpa_parse_wpa_ienull wpa_parse_wpa_ieSAE H2E disabledwpa_config_parse_string is null%s %d %s %d Mem alloc fail for SA Q reqMem alloc fail for SA Q reqSet status to INITAssociation refused temporarily, comeback time %lu (TUs) too long, max allowed 5000 (TUs)%s %d invalid ac=%dwpa michael mic failure cb empty%s %d %s %d %s %d fail to alloc timer, type=%dfail to post timer, type=%dtimeout when WiFi un-init, type=%dtimeout but fail to get lock, type=%d%s %d invalid channel infoinvalid channel%s %d %s %d cnx_bss_init: null bss%s %d null wpa_sta_ap_set_rsnxesta_scan: STA not exist!ht2040 coex frame alloc fail%s %d CCMP replay detected: A1=%02x:%02x:%02x:%02x:%02x:%02x A2=%02x:%02x:%02x:%02x:%02x:%02x PN=%llu, RSC=%llu seq=%uCCMP mgmt frame from %02x:%02x:%02x:%02x:%02x:%02x used non-zero reserved bitExpected CCMP frame from %02x:%02x:%02x:%02x:%02x:%02x did not have ExtIV bit set to 1ebuf_free: invalid type=%desf_buf_alloc: invalid type=%desf_buf_alloc_dynamic: invalid type=%dset vif: invalid index=%d%s %s %u %s %s %u %s %s %u %s %s %u %s %s %u %s %s %u %s %s %u %s %s %u %s %s %u %s %s %u %s %s %u %s %s %u %s %s %u %s %s %u %s %s %u %s %s %u %s %s %u %s %s %u %s %s %u %s %s %u %s %s %u Error! Should enable WiFi modem sleep when both WiFi and Bluetooth are enabled!!!!!! %s %u create wifi task: failed to create taskcreate wifi task: failed to create semcreate wifi task: failed to create queuecreate wifi task: failed to create queue%s %u %s %u %s %u wifi assert: %d%s %u update default trc: invalid ifxtrc init fail, no memrc_enable_trc fail, no mem%s %s %u sched is null, if=%d tid=%d flags=%x%s %s %u desc is null%s %s %u rcGet11BHighestRateIdx: invalid max rate=%drcGet11GHighestRateIdx: invalid max rate=%drcGet11NHighestRateIdx: invalid max rate=%dalloc pp wdev funcs fail Expected to init %d rx buffer, actual is %dFailed to init rx desc space, buffer number=%d%s %s %u started No Wifi credentials available DeleteWifiCredentials //''""\\bf n r t truefalsenullEspressif ESP32-S3-DevKitC-1-N8 (8 MB QD, No PSRAM)ConfigurationsBoardDeviceConfigURLResetButtonRunning partition: %s Init OTA update, auto-update=%s, current version=%s WiFi connected %sConnected: IP=%s, RSSI=%d, channel=%d, current version=%s, OTA version=%s No WiFi connection after %d attempts 2Bô1Bà1BÍÌÌ= ×#<·Ñ8wÌ+2••æ$±O AÈB@F ¼¾LÊZ®Å�tš™™™™™¹?{®Gáz„?-Cëâ6?:Œ0âŽyE>¼‰Ø—²Òœ<3§¨Õ#öI9=§ôDý¥2�—ŒÏº[%Co¬d(È $@Y@ˆÃ@„×—A€à7yÃACnµµ¸“Fõù?éO8M20ùHw‚Z<¿sÝOuhttp://firmware.ledscount.com/fw_pager/firmware_pager_version.json9.9.9Value must be between 0 and 999%iSt9exceptionL.<¹ dodgerblueWelcome to Wi-Fi ProvisionESP32 Wi-Fi ProvisioningDevice KeyThis process cannot be undone.Your device is now provisioned and ready to use.All rights reserved © WiFiProvisionerFollow the steps to provision your deviceDevice SetupInitRfid PN532 not detected! Waiting for an NFC card... Pager #%i Scan Pager Request for pager %i send RFID authentication failed! initSettingsMy device ID: %s settingsWiFi network from preferences: %s %02X%02X%02X%02X%02X%02Xwebservices.ledscount.comDNS failed Resolved IP: %s %s?deviceID=%s&role=pagerReader&sessionId=%surl=%s web-socket could not connect reconnecting web-socket web-socket connected web-socket disconnected ProcessScanPagerResponse pagerReaderIDpagerNumberstatusreturnedissuedmessageTypescanPagerRequest\u0000, [ []{ {} %s deserialize Json failed messageType=%s callPagerRequestpagerNrcallPagerRequest for pager number %i on pager reader scanPagerResponse-----BEGIN CERTIFICATE----- MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg RW5jcnlwdDELMAkGA1UEAxMCRTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNCzqK a2GOtu/cX1jnxkJFVKtj9mZhSAouWXW0gQI3ULc/FnncmOyhKJdyIBwsz9V8UiBO VHhbhBRrwJCuhezAUUE8Wod/Bk3U/mDR+mwt4X2VEIiiCFQPmRpM5uoKrNijgfgw gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSfK1/PPCFPnQS37SssxMZw i9LXDTAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAH3KdNEVCQdqk0LKyuNImTKdRJY1C 2uw2SJajuhqkyGPY8C+zzsufZ+mgnhnq1A2KVQOSykOEnUbx1cy637rBAihx97r+ bcwbZM6sTDIaEriR/PLk6LKs9Be0uoVxgOKDcpG9svD33J+G9Lcfv1K9luDmSTgG 6XNFIN5vfI5gs/lMPyojEMdIzK9blcl2/1vKxO8WGCcjvsQ1nJ/Pwt8LQZBfOFyV XP8ubAp/au3dc4EKWG9MO5zcx1qT9+NXRGdVWxGvmBFRAajciMfXME1ZuGmk3/GO koAM7ZkjZmleyokP1LGzmfJcUd9s7eeu1/9/eg5XlXd/55GtYjAM+C4DG5i7eaNq cm2F+yxYIPt6cbbtYVNJCGfHWqHEQ4FYStUyFnv8sjyqU8ypgZaNJ9aVcWSICLOI E1/Qv/7oKsnZCWJ926wU6RqG1OYPGOi1zuABhLw61cuPVDT28nQS/e6z95cJXq0e K1BcaJ6fJZsmbjRgD5p3mvEf5vdQM7MCEvU0tHbsx2I5mHHJoABHb8KVBgWp/lcX GWiWaeOyB7RP+OfDtvi2OsapxXiV7vNVs7fMlrRjY1joKaqmmycnBvAq14AEbtyL sVfOS66B8apkeFX2NY4XPEYV4ZSCe8VHPrdrERk2wILG3T/EGmSIkCYVUMSnjmJd VQD9F6Na/+zmXCc= -----END CERTIFICATE----- wss://webservices.ledscount.com/device/esp32s3-%s%02X%02X%02X/home/etienne/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFiGeneric.cpp[%6u][E][%s:%u] %s(): Set Main DNS Failed! [%6u][E][%s:%u] %s(): Set Backup DNS Failed! [%6u][E][%s:%u] %s(): Set Fallback DNS Failed! [%6u][E][%s:%u] %s(): Arduino Event Malloc Failed! [%6u][E][%s:%u] %s(): Arduino Event Send Failed! Authentication FailedAP Not Found[%6u][E][%s:%u] %s(): Provisioning Failed: Reason : %s [%6u][E][%s:%u] %s(): Network Event Group Create Failed! [%6u][E][%s:%u] %s(): Network Event Queue Create Failed! [%6u][E][%s:%u] %s(): esp_event_loop_create_default failed! arduino_events[%6u][E][%s:%u] %s(): Network Event Task Start Failed! [%6u][E][%s:%u] %s(): event_handler_instance_register for WIFI_EVENT Failed! [%6u][E][%s:%u] %s(): event_handler_instance_register for IP_EVENT Failed! [%6u][E][%s:%u] %s(): event_handler_instance_register for SC_EVENT Failed! [%6u][E][%s:%u] %s(): event_handler_instance_register for ETH_EVENT Failed! [%6u][E][%s:%u] %s(): event_handler_instance_register for WIFI_PROV_EVENT Failed! [%6u][E][%s:%u] %s(): esp_netif_init failed! [%6u][E][%s:%u] %s(): esp_wifi_init %d [%6u][E][%s:%u] %s(): Could not stop WiFi! %d [%6u][E][%s:%u] %s(): Could not set hostname! %d [%6u][E][%s:%u] %s(): Could not set mode! %d [%6u][E][%s:%u] %s(): Could not enable long range on STA! %d [%6u][E][%s:%u] %s(): Could not enable long range on AP! %d [%6u][E][%s:%u] %s(): esp_wifi_start %d [%6u][E][%s:%u] %s(): DNS Failed for %s [%6u][E][%s:%u] %s(): DHCPC Get Status Failed! 0x%04x [%6u][E][%s:%u] %s(): DHCPC Stop Failed! 0x%04x [%6u][E][%s:%u] %s(): Netif Set IP Failed! 0x%04x [%6u][E][%s:%u] %s(): DHCPC Start Failed! 0x%04x [%6u][E][%s:%u] %s(): DHCPS Get Status Failed! 0x%04x [%6u][E][%s:%u] %s(): DHCPS Stop Failed! 0x%04x [%6u][E][%s:%u] %s(): Bad netmask. It must be from /24 to /28 (255.255.255. 0<->240) [%6u][E][%s:%u] %s(): The AP IP address (%s) and the DHCP start address (%s) must be in the same subnet [%6u][E][%s:%u] %s(): The AP IP address (%s) can't be within the DHCP range (%s -- %s) [%6u][E][%s:%u] %s(): The GatewayP address (%s) can't be within the DHCP range (%s -- %s) [%6u][E][%s:%u] %s(): DHCPS Set Lease Failed! 0x%04x [%6u][E][%s:%u] %s(): DHCPS Start Failed! 0x%04x [%6u][E][%s:%u] %s(): esp_wifi_set_ps failed hostByNameespWiFiStartespWiFiStopmode_eventCallbackwifiLowLevelInit_arduino_event_cb_start_network_event_tasktcpipInitpostArduinoEventset_esp_interface_ip/home/etienne/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFiSTA.cpp[%6u][E][%s:%u] %s(): STA Status Group Create Failed! [%6u][E][%s:%u] %s(): STA enable failed! [%6u][E][%s:%u] %s(): SSID too long or missing! [%6u][E][%s:%u] %s(): passphrase too long! [%6u][E][%s:%u] %s(): get current config failed! [%6u][E][%s:%u] %s(): disconnect failed! [%6u][E][%s:%u] %s(): set config failed! [%6u][E][%s:%u] %s(): connect failed! [%6u][E][%s:%u] %s(): config failed [%6u][E][%s:%u] %s(): set ip failed! [%6u][E][%s:%u] %s(): connect failed! 0x%x [%6u][E][%s:%u] %s(): clear config failed! [%6u][E][%s:%u] %s(): Netif Get IP Failed! %02X:%02X:%02X:%02X:%02X:%02XlocalIPdisconnectbeginbegin_setStatushttpshttp/home/etienne/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp[%6u][E][%s:%u] %s(): failed to parse protocol ConnectionUser-AgentHostAuthorization HTTP/1. Host: User-Agent: Connection: keep-aliveAccept-Encoding: identity;q=1,chunked;q=0.1,*;q=0 Authorization: [%6u][E][%s:%u] %s(): failed to create client ESP32HTTPClientBasic[%6u][E][%s:%u] %s(): could not create transport traits ;%a, %d %b %Y %H:%M:%Sexpires=max-age=domain=path=httponlysecureDateContent-LengthTransfer-EncodingLocationSet-CookiechunkedidentityGET[%6u][E][%s:%u] %s(): Failed to send chunk! HEADconnectsendRequestbeginInternalbeginbeginŒ" BÈ“B8”B”" Bœ" B¸“B ”BØ“B/home/etienne/.platformio/packages/framework-arduinoespressif32/libraries/Update/src/Updater.cpp[%6u][E][%s:%u] %s(): bad command %u [%6u][E][%s:%u] %s(): too large %u > %u [%6u][E][%s:%u] %s(): malloc failed [%6u][E][%s:%u] %s(): premature end: res:%u, pos:%u/%u end_writeBufferbeginupgradeWebsocketconnectionSec-WebSocket-AcceptGET HTTP/1.1 Sec-WebSocket-Key: UpgradeUpgrade: websocket Sec-WebSocket-VersionConnection: Upgrade Sec-WebSocket-Version: 13 User-Agent: TinyWebsockets Client Origin: https://github.com/gilmaimon/TinyWebsockets HTTP/1.1 101http://ws://wswss://wsshttps://„ëBtëBœëB¼ëB�# BXëB<ëB ëBëBPêB4êBêB„ëBtëBÐëBäëB�# BXëB<ëB ëBëBPêB4êBêBìéB8èBHèBhèBˆ# BÐéB´éB˜éB|éBÈèB¬èB|èB$íBhíB`# BäÈBp# BôÈB€# Bh# BÉB˜# B@ÊBÐÈBbasic_string::_M_construct null not validòB(òB0123456789abcdef258EAFA5-E914-47DA-95CA-C5AB0DC85B11ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/HTTP/1.0 OKContent-Type: Content-Length: Connection: close[%s] Stopping server [%s] Stopping DNS server ERROR[%s] Failed to switch to AP+STA mode [%s] Failed to configure AP IP settings [%s] Failed to start Access Point [%s] Failed to start DNS server /configure/update/generate_204/fwlink/factoryreset[%s] Provision server started at %s [%s] Attempting to connect to SSID: %s [%s] Invalid SSID provided [%s] WiFi connection timeout reached for SSID: %s [%s] Successfully connected to SSID: %s text/htmlWARN[%s] Sent 400 Bad Request response to client [%s] Calculated Content Length: %zu [%s] Factory reset completed. Reloading UI. successapplication/jsonshow_code[%s] Starting Network Scan... [%s] Network scan complete plain[%s] No 'plain' argument found in request [%s] JSON parsing failed: %s password[%s] SSID: %s, PASSWORD: %s, INPUT: %s [%s] SSID missing from request [%s] Failed to connect to WiFi: %s with password %s [%s] Input check callback failed. hB|B¤B”& B�BOkEmptyInputIncompleteInputInvalidInputNoMemoryTooDeep; window.addEventListener("DOMContentLoaded", (event) => { document.getElementById("logo-container").innerHTML = title_logo; document.getElementById("app-title").textContent = title_text; document.getElementById("app-subtitle").textContent = title_sub; let infoParagraph = document.getElementById("info-text"); infoParagraph.textContent = title_info; let codeInput = document.getElementById("code"); codeInput.setAttribute("maxlength", input_lenght); codeInput.placeholder = input_name_text; document.getElementById("label-code").textContent = input_name_text; document.getElementById("copyright").textContent = footer_text; if (!reset_show) { const resetLink = document.getElementById("factorylink"); resetLink.style.display = "none"; } }); window.addEventListener("load", (event) => { loadSSID(); }); function updateValue(e) { showError(e.target.id, "", false); } function isRadioChecked() { return Array.from( document.querySelectorAll('input[type="radio"]') ).some((radio) => radio.checked); } function showError(name, message, state) { const block = name.toLowerCase() === "submit" ? null : document.getElementById(`error-${name}-input`); const messageElem = document.getElementById(`error-${name}-message`); if (block) block.classList.toggle("error", state); if (messageElem) messageElem.textContent = state ? message : ""; } function resetErrors() { ["submit", "code", "password", "ssid"].forEach((field) => { showError(field, "", false); }); } function connectingState(state) { const ring = document.getElementById("connecting-ring"); const submitBtn = document.getElementById("submit-btn"); if (!ring || !submitBtn) { return; } const buttonTxt = state ? "Connecting" : "Connect"; const ringVisi = state ? "" : "none"; submitBtn.innerHTML = `${buttonTxt}`; submitBtn.disabled = state; } function submitForm(event) { event.preventDefault(); const validations = [ { condition: !isRadioChecked(), field: "submit", message: "Select Network", }, { condition: isCodeVisible(), field: "code", message: (() => { if (!code_listener.value) { return `${input_name_text} is required`; } if (code_listener.value.length !== input_lenght) { return `${input_name_text} should be ${input_lenght} characters long`; } return null; })(), }, { condition: isSsidVisible() && !ssid_listener.value, field: "ssid", message: "SSID is required", }, { condition: isPasswordVisible() && !isHidden() && !password_listener.value, field: "password", message: "Password is required", }, ]; let hasErrors = false; validations.forEach(({ condition, field, message }) => { if (condition && message) { showError(field, message, true); hasErrors = true; } }); if (hasErrors) return; resetErrors(); connectingState(true); disableForm(true); let payload = {}; if (isHidden()) { payload.ssid = ssid_listener.value; } else { payload.ssid = document.querySelector( 'input[name="ssid"]:checked' )?.value; } if ((isAuth() || isHidden()) && password_listener.value) { payload.password = password_listener.value; } if (isCodeVisible()) { payload.code = code_listener.value; } fetch("/configure", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload), }) .then((response) => { if (!response.ok) throw new Error("Failed to connect"); return response.json(); }) .then((jsonResponse) => { if (jsonResponse.success) { successPage(payload.ssid); } else { if (jsonResponse.reason === "code") { showError("code", `Invalid ${input_name_text}`, true); } else if ( jsonResponse.reason === "ssid" && payload.password && !isHidden() ) { showError("password", "Invalid password", true); } else { showError( "submit", `Couldn't connect to ${payload.ssid}`, true ); } } }) .catch(() => showError("submit", "Error on connection request", true)) .finally(() => { connectingState(false); disableForm(false); }); } function successPage(ssid_text) { const card = document.getElementById("main-card"); card.innerHTML = ""; card.innerHTML = `

Success

Succesfully connected to

${ssid_text}

${connection_successful_text}

You can close the window

`; } function onRadio(element) { resetErrors(); const isHiddenNetwork = element.id === "hiddennetwork_radio"; if (isHiddenNetwork) { const radios = document.querySelectorAll( 'input[name="ssid"]:not(#hiddennetwork_radio)' ); radios.forEach((radio) => (radio.checked = false)); } else { document.getElementById("hiddennetwork_radio").checked = false; } showssidField(isHiddenNetwork); showpasswordField(isHiddenNetwork || element.dataset.auth > 0); } function disableForm(state) { Array.from(form.elements).forEach((el) => (el.disabled = state)); disableLinks(state); } function refreshSpin(state) { document .getElementById("refresh-icon") .classList.toggle("icn-spinner", state); } function loadSSID() { disableForm(true); refreshSpin(true); resetErrors(); fetch("/update") .then((response) => { if (!response.ok) throw new Error("Network response was not ok"); return response.json(); }) .then((jsonResponse) => { document.getElementById("table-body").innerHTML = ""; jsonResponse.network.forEach(({ ssid, authmode, rssi }) => addTableRow(ssid, authmode, rssi) ); showcodeField(jsonResponse.show_code); }) .catch(() => { console.error("Error on Refresh"); showError("submit", "Error on Refresh", true); }) .finally(() => { refreshSpin(false); disableForm(false); }); } function addTableRow(ssid, authmode, rssi) { const locked = authmode > 0 ? 1 : 0; const icon = svgs["" + rssi + locked]; table.innerHTML += ` ${ssid} `; } function togglePassShow() { const input = document.getElementById("password"); const isPassword = input.type === "password"; input.type = isPassword ? "text" : "password"; document .getElementById("eye_icon") .setAttribute("d", isPassword ? eye_open : eye_close); } function showssidField(state) { document.getElementById("hiddenNetwork").style.display = state ? "" : "none"; } function showpasswordField(state) { document.getElementById("hiddenPassword").style.display = state ? "" : "none"; } function showcodeField(state) { document.getElementById("codeinputBlock").style.display = state ? "" : "none"; } function isHidden() { return document.getElementById("hiddennetwork_radio").checked; } function isAuth() { const selectedRadio = document.querySelector( 'input[name="ssid"]:checked' ); return selectedRadio ? parseInt(selectedRadio.dataset.auth) > 0 : false; } function isCodeVisible() { return document.getElementById("codeinputBlock").style.display === "" ? true : false; } function isPasswordVisible() { return document.getElementById("hiddenPassword").style.display === "" ? true : false; } function isSsidVisible() { return document.getElementById("hiddenNetwork").style.display === "" ? true : false; } function disableLinks(state) { let linkstate; state ? (linkstate = "none") : (linkstate = ""); document.getElementById("factorylink").style.pointerEvents = linkstate; } function connectingState(state) { const ring = document.getElementById("connecting-ring"); const submitBtn = document.getElementById("submit-btn"); if (!ring || !submitBtn) { return; } const buttonTxt = state ? "Connecting" : "Connect"; const ringVisi = state ? "" : "none"; submitBtn.innerHTML = `${buttonTxt}`; submitBtn.disabled = state; } function factoryReset() { const card = document.getElementById("main-card"); card.innerHTML = `

Factory Reset

Are you sure you want to reset the device to factory settings?

${reset_confirmation_text}

`; } function disableFactoryReset(state) { disableLinks(state); const resetButton = (document.getElementById("resetYes").disabled = state); const cancelButton = (document.getElementById("cancelReset").disabled = state); } function startFactoryReset() { disableFactoryReset(true); const resetButton = document.getElementById("resetYes"); const factoryResetSection = document.getElementById( "factory-reset-section" ); resetButton.innerHTML = `Resetting`; fetch("/factoryreset", { method: "POST", headers: { "Content-Type": "application/json" }, }) .then((response) => { if (!response.ok) { throw new Error("Failed to reset the device."); } factoryResetSection.innerHTML = `

Reset Success

Factory reset was successful.

Redirecting to the homepage in a few seconds...

`; setTimeout(() => { window.location.href = "/"; }, 7000); }) .catch((error) => { disableFactoryReset(false); }); } function cancelFactoryReset() { disableFactoryReset(true); const spinner = document.getElementById("cancel-spinner"); spinner.style.display = "inline-block"; spinner.innerHTML = ``; window.location.href = "/"; } `; const reset_show = `; const reset_confirmation_text = ``; const footer_text = `; const connection_successful_text = ``; const input_lenght = `; const input_name_text = ``; const title_info = ``; const title_sub = ``; const title_text = `; --shadow-color: rgba(0, 0, 0, 0.1); --border-color: #cccccc; } * { font-family: Poppins, sans-serif; color: var(--font-color); } body { touch-action: manipulation; color: var(--font-color); background-color: var(--background-color); margin: 2rem 0; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; } table { border-collapse: collapse; width: 100%; margin-bottom: 0.5rem; margin-top: 0.5rem; } th, td { padding: 0.75rem; text-align: left; } th { font-weight: bold; color: #333333; } .header { text-align: center; } @supports (-webkit-appearance: none) or (-moz-appearance: none) { input[type="radio"] { --active: var(--theme-color); --active-inner: var(--card-background); --border-hover: var(--theme-color); --background: var(--card-background); -webkit-appearance: none; -moz-appearance: none; -webkit-tap-highlight-color: transparent; height: 1.3125rem; vertical-align: middle; outline: none; display: inline-block; position: relative; margin: 0; cursor: pointer; border: 0.0625rem solid var(--bc, var(--border-color)); background: var(--b, var(--background)); transition: background 0.3s, border-color 0.3s, box-shadow 0.2s; &:after { content: ""; display: block; left: 0; top: 0; position: absolute; transition: transform var(--d-t, 0.3s) var(--d-t-e, ease), opacity var(--d-o, 0.2s); } &:checked { --b: var(--active); --bc: var(--active); --d-o: 0.3s; --d-t: 0.6s; --d-t-e: cubic-bezier(0.2, 0.85, 0.32, 1.2); } &:hover { &:not(:checked) { &:not(:disabled) { --bc: var(--border-hover); } } } &:focus { box-shadow: 0 0 0 var(--shadow-color); } &:not(.switch) { width: 1.3125rem; &:after { opacity: var(--o, 0); } &:checked { --o: 1; } } } input[type="radio"] { border-radius: 50%; &:after { width: 1.1875rem; height: 1.1875rem; border-radius: 50%; background: var(--active-inner); opacity: 0; transform: scale(var(--s, 0.7)); } &:checked { --s: 0.5; } } } @supports (not (-webkit-appearance: none)) and (not (-moz-appearance: none)) { input[type="radio"]:checked { accent-color: var(--theme-color); } } a:disabled, input:disabled, button:disabled { cursor: not-allowed; pointer-events: none; opacity: 0.5; } .signal, .radiossid { text-align: center; } .card { background-color: var(--card-background); box-shadow: 0 0.25rem 0.75rem var(--shadow-color); border-radius: 0.75rem; max-width: 50rem; width: calc(100% - 5rem); padding: 2rem; margin: 1rem; text-align: center; } .container { padding-top: 1.25rem; text-align: center; } #hidden-network-selector { margin-left: 7%; margin-right: 7%; text-align: left; } .icon_button { -webkit-tap-highlight-color: transparent; background-color: transparent; background-repeat: no-repeat; border: none; cursor: pointer; overflow: hidden; outline: none; } .icn-spinner { animation: spin-animation 0.5s infinite; display: inline-block; } @keyframes spin-animation { 0% { transform: rotate(0deg); } 100% { transform: rotate(359deg); } } .textinput { width: 75%; box-sizing: border-box; max-width: 18.75rem; padding: 0.625rem; border: 0.125rem solid var(--border-color); -webkit-border-radius: 0.3125rem; border-radius: 0.3125rem; -webkit-transition: 0.5s; transition: 0.5s; outline: none; } #password { padding: 0.625rem 1.5625rem 0.625rem 0.625rem; } .textinput:focus { border-color: var(--theme-color); } label { display: block; font-size: 0.9rem; padding-bottom: 0.125rem; } #footer .copyright { width: 100%; margin: 2.5em 0 2em 0; font-size: 0.8em; text-align: center; } .error-message { color: #cc0033; display: block; font-size: 0.75rem; line-height: 0.9375rem; margin: 0.3125rem 0 0; } .error input[type="text"], .error input[type="password"] { background-color: #fce4e4; border-color: #cc0033; } .btn-process { -webkit-tap-highlight-color: transparent; background-color: var(--theme-color); box-shadow: 0 0.25rem 0.5rem var(--shadow-color), 0 0.5rem 1.5rem var(--shadow-color); font-size: 1rem; border: none; outline: none; padding: 0.625rem; border-radius: 0.3125rem; color: #fff; cursor: pointer; } .connect-header { margin-top: 0rem; margin-bottom: 0em; padding: 0; text-align: center; } #connecting-ring:after { content: ""; display: inline-block; width: 1em; margin-left: 0.5rem; height: 1em; vertical-align: middle; border-radius: 50%; border: 0.1875rem solid #fff; border-color: #fff transparent #fff transparent; animation: ring 1.2s linear infinite; } @keyframes ring { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .wrapper { display: flex; justify-content: center; align-items: center; } .checkmark__circle { stroke-dasharray: 166; stroke-dashoffset: 166; stroke-width: 2; stroke-miterlimit: 10; stroke: #7ac142; fill: none; animation: stroke 0.6s cubic-bezier(0.65, 0, 0.45, 1) forwards; } .checkmark { width: 3.5rem; height: 3.5rem; border-radius: 50%; display: block; stroke-width: 2; stroke: #fff; stroke-miterlimit: 10; margin-top: 3rem; box-shadow: inset 0rem 0rem 0rem #7ac142; animation: fill 0.4s ease-in-out 0.4s forwards, scale 0.3s ease-in-out 0.9s both; } .checkmark__check { transform-origin: 50% 50%; stroke-dasharray: 48; stroke-dashoffset: 48; animation: stroke 0.3s cubic-bezier(0.65, 0, 0.45, 1) 0.8s forwards; } @keyframes stroke { 100% { stroke-dashoffset: 0; } } @keyframes scale { 0%, 100% { transform: none; } 50% { transform: scale3d(1.1, 1.1, 1); } } @keyframes fill { 100% { box-shadow: inset 0rem 0rem 0rem 1.875rem #7ac142; } }

Connect to Wifi

SSID Signal

Hidden Network ?

Hidden Network