diff --git a/data/static/basic.js b/data/static/basic.js new file mode 100644 index 00000000..38fd5078 --- /dev/null +++ b/data/static/basic.js @@ -0,0 +1,51 @@ +var meshtasticClient; +var connectionOne; + + +// run init when DOM is ready +document.addEventListener("DOMContentLoaded", function() { + + // Create new client instance + meshtasticClient = new meshtasticjs.Client; + +}); + + +// Important: the connect action must be called from a user interaction (e.g. button press), otherwise the browsers won't allow the connect +function connect() { + + // Create new connection + connectionOne = meshtasticClient.createBLEConnection(); + + // Add event listeners that get called when a new packet is received / state of device changes + connectionOne.addEventListener('dataPacket', function(packet) { console.log(packet)}); + connectionOne.addEventListener('userPacket', function(packet) { console.log(packet)}); + connectionOne.addEventListener('positionPacket', function(packet) { console.log(packet)}); + connectionOne.addEventListener('connected', function() { console.log('connected!')}); + connectionOne.addEventListener('disconnected', function() { console.log('disconnected!')}); + + // Connect to the device async, then send a text message + connectionOne.connect() + .then(result => { + + // This gets called when the connection has been established + // -> send a message over the mesh network. If no recipient node is provided, it gets sent as a broadcast + return connectionOne.sendText('meshtastic is awesome'); + + }) + .then(result => { + + // This gets called when the message has been sucessfully sent + console.log('Message sent!');}) + + .catch(error => { console.log(error); }); + +} + + + + + + + + diff --git a/data/static/index.html b/data/static/index.html new file mode 100644 index 00000000..66320301 --- /dev/null +++ b/data/static/index.html @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/static/index.html.gz b/data/static/index.html.gz deleted file mode 100644 index 56af1fca..00000000 Binary files a/data/static/index.html.gz and /dev/null differ diff --git a/data/static/meshtastic.js.gz b/data/static/meshtastic.js.gz index 9dc9aacd..3f02faf0 100644 Binary files a/data/static/meshtastic.js.gz and b/data/static/meshtastic.js.gz differ diff --git a/src/meshwifi/meshhttp.cpp b/src/meshwifi/meshhttp.cpp index eb90a8d3..f0303418 100644 --- a/src/meshwifi/meshhttp.cpp +++ b/src/meshwifi/meshhttp.cpp @@ -323,7 +323,7 @@ void handleStaticBrowse(HTTPRequest *req, HTTPResponse *res) } res->println("

Upload new file

"); - res->println("

This interface is experemntal!

"); + res->println("

*** This interface is experimental ***

"); res->println("

This form allows you to upload files. Keep your filenames very short and files small. Big filenames and big " "files are a known problem.

"); res->println("
"); @@ -350,7 +350,8 @@ void handleStaticBrowse(HTTPRequest *req, HTTPResponse *res) modifiedFile.remove((modifiedFile.length() - 3), 3); res->print("" + String(file.name()).substring(1) + ""); } else { - res->print("" + String(file.name()).substring(1) + ""); + res->print("" + String(file.name()).substring(1) + + ""); } res->println(""); res->println(""); @@ -699,9 +700,35 @@ void handleAPIv1ToRadio(HTTPRequest *req, HTTPResponse *res) void handleRoot(HTTPRequest *req, HTTPResponse *res) { res->setHeader("Content-Type", "text/html"); - res->setHeader("Content-Encoding", "gzip"); - File file = SPIFFS.open("/static/index.html.gz"); + std::string filename = "/static/index.html"; + std::string filenameGzip = "/static/index.html.gz"; + + if (!SPIFFS.exists(filename.c_str()) && !SPIFFS.exists(filenameGzip.c_str())) { + // Send "404 Not Found" as response, as the file doesn't seem to exist + res->setStatusCode(404); + res->setStatusText("Not found"); + res->println("404 Not Found"); + res->printf("

File not found: %s

\n", filename.c_str()); + return; + } + + // Try to open the file from SPIFFS + File file; + + if (SPIFFS.exists(filename.c_str())) { + file = SPIFFS.open(filename.c_str()); + if (!file.available()) { + DEBUG_MSG("File not available - %s\n", filename.c_str()); + } + + } else if (SPIFFS.exists(filenameGzip.c_str())) { + file = SPIFFS.open(filenameGzip.c_str()); + res->setHeader("Content-Encoding", "gzip"); + if (!file.available()) { + DEBUG_MSG("File not available\n"); + } + } // Read the file from SPIFFS and write it to the HTTP response body size_t length = 0;