abort events, polling instead
This commit is contained in:
parent
3fad0f86f6
commit
1785f07706
@ -15,6 +15,8 @@
|
|||||||
<div class="ct-chart chart1"></div>
|
<div class="ct-chart chart1"></div>
|
||||||
<h1> Monthly </h1>
|
<h1> Monthly </h1>
|
||||||
<div class="ct-chart chart2"></div>
|
<div class="ct-chart chart2"></div>
|
||||||
|
<h1> Log </h1>
|
||||||
|
<div id="log"></div>
|
||||||
<script >
|
<script >
|
||||||
var chart;
|
var chart;
|
||||||
function load_chart( url , clazz ){
|
function load_chart( url , clazz ){
|
||||||
@ -34,27 +36,22 @@
|
|||||||
load_chart("/weekly" , ".chart1");
|
load_chart("/weekly" , ".chart1");
|
||||||
load_chart("/monthly" , ".chart2");
|
load_chart("/monthly" , ".chart2");
|
||||||
}
|
}
|
||||||
if (!!window.EventSource) {
|
var log = document.getElementById("log")
|
||||||
var source = new EventSource('/events');
|
|
||||||
|
|
||||||
source.addEventListener('open', function(e) {
|
function myCallback() {
|
||||||
console.log("Events Connected");
|
function get_log( ){
|
||||||
}, false);
|
var xhttp = new XMLHttpRequest();
|
||||||
|
xhttp.onreadystatechange = function() {
|
||||||
source.addEventListener('error', function(e) {
|
if (this.readyState == 4 && this.status == 200) {
|
||||||
if (e.target.readyState != EventSource.OPEN) {
|
console.log(this.responseText);
|
||||||
console.log("Events Disconnected");
|
log.innerHTML += this.responseText;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, false);
|
xhttp.open("GET", "/log", true);
|
||||||
|
xhttp.send();
|
||||||
source.addEventListener('message', function(e) {
|
};
|
||||||
console.log("message", e.data);
|
|
||||||
}, false);
|
|
||||||
|
|
||||||
source.addEventListener('myevent', function(e) {
|
|
||||||
console.log("myevent", e.data);
|
|
||||||
}, false);
|
|
||||||
}
|
}
|
||||||
|
var intervalID = window.setInterval(get_log, 1500);
|
||||||
</script>
|
</script>
|
||||||
<script onload="load_charts();" src="/chartist.min.js.gz"> </script>
|
<script onload="load_charts();" src="/chartist.min.js.gz"> </script>
|
||||||
|
|
||||||
|
@ -1,27 +1,24 @@
|
|||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <queue>
|
#include <queue>
|
||||||
|
|
||||||
void serial_setup();
|
|
||||||
void serial_loop();
|
|
||||||
|
|
||||||
class WsSerial{
|
class WsSerial{
|
||||||
std::queue<String> debug;
|
std::queue<String> debug;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void print(const String& );
|
inline void print(const String& line){ debug.push(line); }
|
||||||
void println(const String& );
|
inline void println(const String& line){ debug.push(line); }
|
||||||
inline void println(const float num){ println(String(num)) ; };
|
inline void println(const float num){ println(String(num)) ; };
|
||||||
|
|
||||||
inline const String& pop(){ const String& first = debug.front(); debug.pop(); return first;};
|
inline const String& pop(){ const String& first = debug.front(); debug.pop(); return first;};
|
||||||
inline bool empty(){ return debug.empty();};
|
inline bool empty(){ return debug.empty();};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static WsSerial debug_out;
|
||||||
|
|
||||||
#if(false)
|
#if(false)
|
||||||
#define DEBUG_OUT Serial
|
#define DEBUG_OUT Serial
|
||||||
#define DEBUG_SERIAL true
|
#define DEBUG_SERIAL true
|
||||||
#else
|
#else
|
||||||
#define DEBUG_SERIAL false
|
#define DEBUG_SERIAL false
|
||||||
static WsSerial debug_out;
|
|
||||||
#define DEBUG_OUT debug_out
|
#define DEBUG_OUT debug_out
|
||||||
#endif
|
#endif
|
||||||
|
@ -23,5 +23,5 @@ lib_deps =
|
|||||||
monitor_speed = 115200
|
monitor_speed = 115200
|
||||||
upload_speed = 115200
|
upload_speed = 115200
|
||||||
|
|
||||||
upload_port = 192.168.4.1
|
;upload_port = 192.168.4.1
|
||||||
upload_protocol = espota
|
;upload_protocol = espota
|
||||||
|
@ -10,9 +10,8 @@ const char* ssid = "fan_XXX";
|
|||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
server_setup();
|
|
||||||
serial_setup();
|
|
||||||
ota_setup(ssid);
|
ota_setup(ssid);
|
||||||
|
server_setup();
|
||||||
collector_setup();
|
collector_setup();
|
||||||
DEBUG_OUT.println(F("Setup done"));
|
DEBUG_OUT.println(F("Setup done"));
|
||||||
DEBUG_OUT.print("IP address: ");
|
DEBUG_OUT.print("IP address: ");
|
||||||
@ -22,6 +21,5 @@ void setup() {
|
|||||||
void loop() {
|
void loop() {
|
||||||
ArduinoOTA.handle();
|
ArduinoOTA.handle();
|
||||||
server_loop();
|
server_loop();
|
||||||
serial_loop();
|
collector_loop();
|
||||||
collector_loop();
|
|
||||||
}
|
}
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
#include "serial.hpp"
|
|
||||||
#include "server.hpp"
|
|
||||||
|
|
||||||
void WsSerial::print(const String& line){
|
|
||||||
debug.push(line);
|
|
||||||
}
|
|
||||||
void WsSerial::println(const String& line){
|
|
||||||
debug.push(line);
|
|
||||||
}
|
|
||||||
|
|
||||||
void serial_setup(){
|
|
||||||
events.onConnect([](AsyncEventSourceClient *client){
|
|
||||||
if(client->lastId()){
|
|
||||||
Serial.printf("Client reconnected! Last message ID that it gat is: %u\n", client->lastId());
|
|
||||||
}
|
|
||||||
//send event with message "hello!", id current millis
|
|
||||||
// and set reconnect delay to 1 second
|
|
||||||
client->send("hello!",NULL,millis(),1000);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void serial_loop(){
|
|
||||||
#if DEBUG_SERIAL
|
|
||||||
return;
|
|
||||||
#else
|
|
||||||
if(debug_out.empty()) return ;
|
|
||||||
const String & line = debug_out.pop();
|
|
||||||
Serial.println(line.c_str());
|
|
||||||
events.send(line.c_str() , "message");
|
|
||||||
#endif
|
|
||||||
}
|
|
@ -37,6 +37,7 @@ void server_setup(){
|
|||||||
|
|
||||||
if(week_counter == 2*WEEK){ // sent all data (ret 0), reset counter
|
if(week_counter == 2*WEEK){ // sent all data (ret 0), reset counter
|
||||||
week_counter = 0;
|
week_counter = 0;
|
||||||
|
DEBUG_OUT.println("weekly end");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
String to_send = "";
|
String to_send = "";
|
||||||
@ -51,7 +52,6 @@ void server_setup(){
|
|||||||
return to_send.length();
|
return to_send.length();
|
||||||
});
|
});
|
||||||
request->send(response);
|
request->send(response);
|
||||||
DEBUG_OUT.println("weekly end");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
server.on("/monthly", HTTP_ANY, [](AsyncWebServerRequest * request) {
|
server.on("/monthly", HTTP_ANY, [](AsyncWebServerRequest * request) {
|
||||||
@ -61,6 +61,7 @@ void server_setup(){
|
|||||||
|
|
||||||
if(month_counter == 2*MONTH){ // sent all data (ret 0), reset counter
|
if(month_counter == 2*MONTH){ // sent all data (ret 0), reset counter
|
||||||
month_counter = 0;
|
month_counter = 0;
|
||||||
|
DEBUG_OUT.println("monthly done");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
String to_send = "";
|
String to_send = "";
|
||||||
@ -76,8 +77,18 @@ void server_setup(){
|
|||||||
return to_send.length();
|
return to_send.length();
|
||||||
});
|
});
|
||||||
request->send(response);
|
request->send(response);
|
||||||
DEBUG_OUT.println("monthly done");
|
});
|
||||||
|
|
||||||
|
server.on("/log", HTTP_ANY, [](AsyncWebServerRequest * request) {
|
||||||
|
DEBUG_OUT.println("log start");
|
||||||
|
AsyncWebServerResponse *response = request->beginChunkedResponse("text/html", [](uint8_t *buffer, size_t maxLen, size_t index) -> size_t {
|
||||||
|
if(debug_out.empty()) return 0;
|
||||||
|
String to_send = debug_out.pop();
|
||||||
|
to_send += "<br/>";
|
||||||
|
to_send.getBytes(buffer, maxLen);
|
||||||
|
return to_send.length();
|
||||||
|
});
|
||||||
|
request->send(response);
|
||||||
});
|
});
|
||||||
|
|
||||||
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
|
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
|
||||||
|
Loading…
Reference in New Issue
Block a user