Most recent activity
-
Hi gyes. Recently write code of internet online clock. But my happiness was not long, because i had unresolved trouble for me. All of operativ memory for some time is went out, and code is stopping. Where could I make a mistake and how to fix it?
p.s Intervals of lost all memory every time is different.
all code:I2C1.setup({ scl: 5, sda: 4 }); var wifi = require("Wifi"); var esp8266 = require("ESP8266"); var lcd; var masterPass = "q1w2e3r4"; var serverStarted = false; var allDate = ""; var yr = 999; var oldYr = 99; var mns = 999; var oldMns = 99; var dy = 999; var oldDy = 99; var hr = 999; var oldHr = 99; var min = 999; var oldMin = 99; var sec = 999; var oldSec = 99; //setup part-------------------------------------------------------------------------- wifi.on('sta_joined', function (details) { if (!serverStarted) { serverStart(); serverStarted = true; } }); function getPage(text) { text = typeof text !== 'undefined' ? text : wifi.getStatus().station; return `<!doctype html> <html> <head> <title>System setup</title> </head> <body> <p style="text-align: center;">Status: `+ text + `</p> <form action="" method="post"> <h2 style="text-align: center;">Setup configuration:</h2> <hr /> <p style="text-align: center;"><span style="color:#FF0000;">Access pass: <input name="accpsName" required type="password" /></span></p> <p style="text-align: center;"><span style="color:#000000;">SSID name: <input name="ssidName" required type="text" /></span></p> <p style="text-align: center;"><span style="color:#000000;">SSID pass: <input name="passName" type="password" /></span></p> <p style="text-align: center;"><input type="submit" value="SEND" /></p> </form> <p style="text-align: center;"> </p> </body> </html>`; } function parseData(data) { var arr = data.split("&"); var result = {}; arr.forEach(function (pair) { var elem = pair.split("="); result[elem[0]] = elem[1]; }); return result; } function serverStart() { function onPageRequest(req, res) { var reqData; if (req.method == "GET") { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(getPage()); } else { req.on("close", function () { reqData = req.read(); reqData = parseData(reqData); if (reqData.accpsName == masterPass) { wifi.connect(reqData.ssidName, { password: reqData.passName }, function (ap) { }); wifi.save(); setTimeout(function () { esp8266.reboot(); }, 5000); } }); res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(getPage()); } } require("http").createServer(onPageRequest).listen(8080); } //Inet time part------------------------------------------------------------------------- wifi.on('connected', function (details) { lcd = require("HD44780").connectI2C(I2C1, 0x27); if (!serverStarted) { serverStart(); serverStarted = true; } /*if (wifi.getStatus().station != "connected") { lcd.clear(); lcd.setCursor(0, 3); lcd.print("setup wifi connection"); }*/ setInterval(function () { try { getTimeOnline(); } catch (error) { } updateDisplay(); }, 1000); }); function getTimeOnline() { allDate = ""; var options = { host: 'api.timezonedb.com', port: '80', path: '/v2/get-time-zone?format=json&by=zone&zone=Europe/Minsk&key=5CZHRPQ83HOC', method: 'GET', headers: { "Content-Type": "application/json" } }; require("http").request(options, function (res) { res.on('data', function (partOfData) { allDate += partOfData; }); res.on('close', function (data) { try { allDate = allDate.split('{'); allDate = allDate[1].split('}'); allDate = '{' + allDate[0] + '}'; allDate = JSON.parse(allDate); displayTextParse(allDate.formatted); } catch (error) { } }); }).end(); } function displayTextParse(params) { var date = params.split("-"); var temp = date[2].split(" "); date[2] = temp[0]; var tme = temp[1]; tme = tme.split(":"); yr = date[0]; mns = date[1]; dy = date[2]; hr = tme[0]; min = tme[1]; sec = tme[2]; } function updateDisplay() { if (oldYr != yr) { lcd.setCursor(0, 1); lcd.print(yr); oldYr = yr; lcd.print("-"); } if (oldMns != mns) { lcd.setCursor(5, 1); lcd.print(mns); oldMns = mns; lcd.print("-"); } if (oldDy != dy) { lcd.setCursor(8, 1); lcd.print(dy); oldDy = dy; lcd.print(" "); } if (oldHr != hr) { lcd.setCursor(12, 1); lcd.print(hr); oldHr = hr; lcd.print(":"); } if (oldMin != min) { lcd.setCursor(15, 1); lcd.print(min); oldMin = min; lcd.print(":"); } if (oldSec != sec) { lcd.setCursor(18, 1); lcd.print(sec); oldSec = sec; } }
-
-
-
@MaBe,
Bingo, it's works well)) Thanks! -
Same problem...
1.95 not work after wifi.save() and reboot1st erase flash command line:
python esptool.py --port COM7 erase_flash
2nd flash esp12 4mb command line:
python esptool.py --port COM7 --baud 115200 write_flash --flash_freq 80m --flash_mode dio --flash_size 32m 0x0000 boot_v1.6.bin 0x1000 espruino_esp8266_user1.bin 0x3FC000 esp_init_data_default.bin 0x3FE000 blank.bin
or
python "../esptool/esptool.py" --port COM7 --baud 115200 write_flash --flash_freq 80m --flash_mode qio --flash_size 4MB 0x0000 boot_v1.6.bin 0x1000 espruino_esp8266_user1.bin 0x3FC000 esp_init_data_default.bin 0x3FE000 blank.bin
-
...and also more correct variant
var wifi = require("Wifi"); var page = "<!DOCTYPE html>\r\n<html>\r\n<body>\r\n\r\n"; page += "<form action=\"\" method=\"post\">\r\n First name: "; page += "<input type=\"text\" value=\"\" name=\"fname\"><br>\r\n "; page += "Last name: <input type=\"text\" value=\"\" name=\"lname\"><br>\r\n "; page += "<input type=\"submit\" value=\"Submit\">\r\n</form>\r\n\r\n"; page += "<p>Click on the submit button, and the input will be sent to Espruino."; page += "</p>\r\n\r\n</body>\r\n</html>"; var b; function onPageRequest(req, res) { if (req.method == "GET") { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(page); } else { req.on("close", function () { console.log("AVAIL:" + req.available()); b = req.read(); console.log("BODY: " + b); }); res.writeHead(200, { 'Content-Type': 'application/json' }); res.end("ok"); } } require("http").createServer(onPageRequest).listen(8080);
var b consist all your data, but data requires parse. (example data: "fname=Pavel&lname=123&xname=rtavel&zname=12673")
for do this i developed little parser:
var str = "fname=Pavel&lname=123&xname=rtavel&zname=12673"; function splitData(data) { var dataReady = []; var part = true; var commVal = ""; for (var index = 0; index < data.length; index++) { if (part) { if (data[index] != '=') commVal += data[index]; else { dataReady.push(commVal); commVal = ""; part = false; } } else { if (data[index] != '&') commVal += data[index]; if (data[index] == '&') { dataReady.push(commVal); commVal = ""; part = true; } if (index == data.length - 1) { dataReady.push(commVal); return dataReady; } } } } console.log(splitData(str));
or more simple variant parser:
var str = "fname=Pavel&lname=Dubailo&xname=TEST" var arr = str.split("&") var result = {}; arr.forEach(function (pair) { var elem = pair.split("="); result[elem[0]] = elem[1]; }); console.log(result);
-
i developed most brut variant, but it working)))
var wifi = require("Wifi"); var page = "<!DOCTYPE html>\r\n<html>\r\n<body>\r\n\r\n"; page += "<form action=\"\" method=\"get\">\r\n First name: "; page += "<input type=\"text\" value=\"\" name=\"fname\"><br>\r\n "; page += "Last name: <input type=\"text\" value=\"\" name=\"lname\"><br>\r\n "; page += "<input type=\"submit\" value=\"Submit\">\r\n</form>\r\n\r\n"; page += "<p>Click on the submit button, and the input will be sent to Espruino."; page += "</p>\r\n\r\n</body>\r\n</html>"; var b; function onPageRequest(req, res) { var a = url.parse(req.url, true); res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(page); if (a.query) b = a.query; } require("http").createServer(onPageRequest).listen(8080);
var b consist all your data)
in error output i see:
sometime this:
ERROR: Error processing Serial data handler - removing it.
ERROR: Error processing Serial data handler - removing it.
Execution Interrupted during event processing.
New interpreter error: CALLBACK,MEMORY
sometime this:
ERROR: Ctrl-C while processing interval - removing it.
Execution Interrupted during event processing.
Uncaught InternalError: Unable to create socket
at line 130 col 10
}).end();
in function "getTimeOnline" called from line 103 col 21
try { getTimeOnline(); } catch (error) { }
process.env:
"VERSION": "1v99",
"GIT_COMMIT": "f0d66ba",
"BOARD": "ESP8266_4MB",
"FLASH": 0, "RAM": 81920,
"SERIAL": "5ccf7fed-7f68",
"CONSOLE": "Telnet",
"MODULES": "Flash,Storage,net" ... "r,crypto,neopixel",
"EXPTR": 1073643636 }