Newer
Older
#endif
#ifndef ICBM_GIT_TIMESTAMP
#define ICBM_GIT_TIMESTAMP "UNKNOWN"
#endif
WebServer restServer(80);
void initializeRoutes() {
restServer.on("/idn", identify);
restServer.begin();
Serial.println("REST Server Started");
}
void identify() {
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
int seconds = millis() / 1000;
int hours = seconds / 3600;
int minutes = (seconds / 60) % 60;
seconds = seconds % 60;
String message = "{\n";
message += "\"mac\":\"";
message += ETH.macAddress();
message += "\",\n";
message += "\"version\":\"";
message += ICBM_GIT_VERSION;
message += "\",\n";
message += "\"build date\":\"";
message += ICBM_GIT_TIMESTAMP;
message += "\",\n";
message += "\"uptime\": \"";
message += hours;
message += ":";
message += minutes;
message += ":";
message += seconds;
message += "\",\n";
message += "\"inputs\":{\n";
message += "\"sib\":";
message += PINS.sib;
message += ",\n";
message += "\"plc\":";
message += PINS.plc;
message += ",\n";
message += "\"ups\":";
message += PINS.ups;
message += ",\n";
unsigned long elapsed_seconds = (millis() - PINS.last_triggered) / 1000;
message += "\"sec_since_interrupt\":";
message += elapsed_seconds;
message += ",\n";
message += "\n}";
// TODO: Add here power sequence status
// is_ramping_down
// current step
// percentage
restServer.send(200, "text/json", message);
}
unsigned long elapsed_seconds = (millis() - PINS.last_triggered) / 1000;
String content = buildPanel(
PINS.sib,
PINS.plc,
PINS.ups,
elapsed_seconds
);
restServer.send(200, "text/html", content);
}
String message = "{\n";
message += "\"uri\":\"";
message += (restServer.method() == HTTP_GET) ? "GET" : "POST";
message += "\",\n\"arguments\":{";
for (uint8_t i = 0; i < restServer.args(); i++) {
message += "\n\"" + restServer.argName(i) + "\":\"" + restServer.arg(i) + "\",";
if (restServer.args() != 0) {
message.remove(message.length()-1); // remove trailing comma for valid json
}
message += "\n}\n}";
restServer.send(404, "text/json", message);
Serial.println(message);
}
void restart() {
restServer.send(200);
ESP.restart();
NONE,
};
void sendSNMP() {
uint8_t output = NONE;
bool success = false;
for (uint8_t i = 0; i < restServer.args(); i++) {
if(restServer.argName(i) == "output") {
if(restServer.arg(i) == "on") {
output = ON;
} else if (restServer.arg(i) == "off") {
output = OFF;
}
}
}
SNMP::Message *snmp_msg = mpod.output(output);
snmp.send(snmp_msg, ipAddr, SNMP::Port::SNMP);
delete snmp_msg;
success = true;
}
String http_msg = "{\n";
http_msg += "\"target\":\"" + ipAddr.toString() + "\",";
http_msg += "\"arguments\":{\"output\":" + String(output) + "},\n";
http_msg += "\"success\":" + String(success);
http_msg += "\n}";
restServer.send(200, "text/json", http_msg);
}
void pollMPODChannel() {
auto ret = mpod.toJSON();
String http_msg = "{\n";
http_msg += ret;
http_msg += "\n}";
restServer.send(200, "text/json", http_msg);
}