parent
23681c9a0f
commit
5bb7a303b3
@ -1,3 +1,3 @@ |
||||
#!/bin/bash |
||||
|
||||
xterm -title "ESP html build" -e "source $HOME/.bashrc && make flash -B -j4" |
||||
xterm -title "ESP flash" -e "source $HOME/.bashrc && make flash -B -j4" |
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@ |
||||
{ |
||||
"uptime": "%uptime%", |
||||
"heap": %heap%, |
||||
"wifiMode": "%wifiMode%", |
||||
"sta": %staInfo%, |
||||
"ap": %apInfo% |
||||
} |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,78 +0,0 @@ |
||||
<?php $page='home'; include "_start.php"; ?> |
||||
|
||||
<h1>System Status</h1> |
||||
|
||||
<div class="Box"> |
||||
<h2>Runtime</h2> |
||||
<table> |
||||
<tbody> |
||||
<tr> |
||||
<th>Uptime:</th> |
||||
<td>%uptime%</td> |
||||
</tr> |
||||
<tr> |
||||
<th>Free heap:</th> |
||||
<td>%heap% bytes</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
|
||||
<div class="Box"> |
||||
<h2>Wireless</h2> |
||||
<table> |
||||
<tbody> |
||||
<tr> |
||||
<th>WiFi mode:</th> |
||||
<td>%wifiMode%</td> |
||||
</tr> |
||||
<tr class="sta-only"> |
||||
<th>SSID:</th> |
||||
<td>%staSSID%</td> |
||||
</tr> |
||||
<tr class="sta-only"> |
||||
<th>RSSI:</th> |
||||
<td><span id="rssi-perc"></span>, <span id="rssi-dbm"></span></td> |
||||
</tr> |
||||
<tr> |
||||
<th>Client MAC:</th> |
||||
<td>%staMAC%</td> |
||||
</tr> |
||||
<tr> |
||||
<th>AP MAC:</th> |
||||
<td>%apMAC%</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
|
||||
<div class="Box"> |
||||
<h2>Hardware</h2> |
||||
<table> |
||||
<tbody> |
||||
<tr> |
||||
<th>ESP8266 S/N:</th> |
||||
<td>%chipID%</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
|
||||
<script> |
||||
var wifiMode = '%wifiMode%'; |
||||
var staRSSI = '%staRSSI%'; |
||||
|
||||
$().ready(function() { |
||||
if (wifiMode == 'SoftAP') { |
||||
$('.sta-only').hide(); |
||||
} else { |
||||
$('#rssi-perc').html(rssiPerc(staRSSI)); |
||||
$('#rssi-dbm').html(staRSSI); |
||||
} |
||||
|
||||
// TODO use json + ajax instead |
||||
setTimeout(function(){location.reload()}, 10000); |
||||
}); |
||||
</script> |
||||
|
||||
<?php include "_end.php"; ?> |
@ -1,5 +0,0 @@ |
||||
<?php $page='fft'; include "_start.php"; ?> |
||||
|
||||
Home page. |
||||
|
||||
<?php include "_end.php"; ?> |
@ -0,0 +1,58 @@ |
||||
var page_status = (function() { |
||||
var st = {}; |
||||
|
||||
function onUpdate(resp, status) { |
||||
if (status != 200) { |
||||
// bad response
|
||||
console.error('Update failed.'); |
||||
} else { |
||||
try { |
||||
// OK
|
||||
var j = JSON.parse(resp); |
||||
|
||||
$('.sta-only').toggle(j.sta); |
||||
$('.ap-only').toggle(j.ap); |
||||
|
||||
$('#uptime').html(j.uptime); |
||||
$('#heap').html(j.heap + " bytes"); |
||||
$('#wmode').html(j.wifiMode); |
||||
|
||||
if (j.sta) { |
||||
$('#staSSID').html(j.sta.SSID); |
||||
$('#staRSSIperc').html(j.sta.RSSIperc); |
||||
$('#staRSSI').html(j.sta.RSSI); |
||||
$('#staMAC').html(j.sta.MAC); |
||||
} |
||||
|
||||
if (j.ap) { |
||||
$('#apSSID').html(j.ap.SSID); |
||||
$('#apHidden').html(j.ap.hidden ? "Yes" : "No"); |
||||
$('#apAuth').html(j.ap.auth); |
||||
|
||||
// hide the password row if auth is Open
|
||||
$('.ap-auth-only').toggle(j.ap.auth != 'Open'); |
||||
|
||||
$('#apPwd').html(j.ap.pwd); |
||||
$('#apChan').html(j.ap.chan); |
||||
$('#apMAC').html(j.ap.MAC); |
||||
} |
||||
// chip ID & macs don't change
|
||||
} catch(e) { |
||||
console.error(e); |
||||
} |
||||
} |
||||
|
||||
setTimeout(requestUpdate, 10000); |
||||
} |
||||
|
||||
function requestUpdate() { |
||||
$().get('/api/status.json', onUpdate, true, true); |
||||
} |
||||
|
||||
st.init = function() { |
||||
requestUpdate(); |
||||
setTimeout(requestUpdate, 10000); |
||||
}; |
||||
|
||||
return st; |
||||
})(); |
@ -1,4 +1,4 @@ |
||||
var wfm = (function () { |
||||
var page_waveform = (function () { |
||||
var wfm = {}; |
||||
|
||||
function buildChart(samples, xlabel, ylabel) { |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,95 @@ |
||||
<?php $page = 'home'; |
||||
include "_start.php"; ?> |
||||
|
||||
<h1>System Status</h1> |
||||
|
||||
<div class="Box"> |
||||
<h2>Runtime</h2> |
||||
<table> |
||||
<tbody> |
||||
<tr> |
||||
<th>Uptime:</th> |
||||
<td id="uptime">%uptime%</td> |
||||
</tr> |
||||
<tr> |
||||
<th>Free heap:</th> |
||||
<td id="heap">%heap%</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
|
||||
<div class="Box"> |
||||
<h2>WiFi</h2> |
||||
<table> |
||||
<tbody> |
||||
<tr> |
||||
<th>WiFi mode:</th> |
||||
<td id="wmode">%wifiMode%</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
|
||||
<!-- WiFi info is read & updated using AJAX --> |
||||
|
||||
<div class="Box sta-only" style="display:none"> |
||||
<h2>WiFi Station</h2> |
||||
<table> |
||||
<tbody> |
||||
<tr> |
||||
<th>SSID:</th> |
||||
<td id="staSSID"></td> |
||||
</tr> |
||||
<tr> |
||||
<th>RSSI:</th> |
||||
<td> |
||||
<span id="staRSSIperc"></span>, |
||||
<span id="staRSSI"></span> |
||||
</td> |
||||
</tr> |
||||
<tr> |
||||
<th>MAC:</th> |
||||
<td id="staMAC"></td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
|
||||
<div class="Box ap-only" style="display:none"> |
||||
<h2>WiFi AP</h2> |
||||
<table> |
||||
<tbody> |
||||
<tr> |
||||
<th>SSID:</th> |
||||
<td id="apSSID"></td> |
||||
</tr> |
||||
<tr> |
||||
<th>Hidden:</th> |
||||
<td id="apHidden"></td> |
||||
</tr> |
||||
<tr> |
||||
<th>Auth. mode:</th> |
||||
<td id="apAuth"></td> |
||||
</tr> |
||||
<tr class="ap-auth-only"> |
||||
<th>Password:</th> |
||||
<td id="apPwd"></td> |
||||
</tr> |
||||
<tr> |
||||
<th>Channel:</th> |
||||
<td id="apChan"></td> |
||||
</tr> |
||||
<tr> |
||||
<th>MAC:</th> |
||||
<td id="apMAC"></td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
|
||||
<script> |
||||
$().ready(page_status.init); |
||||
</script> |
||||
|
||||
<?php include "_end.php"; ?> |
@ -1,9 +0,0 @@ |
||||
#ifndef CGI_H |
||||
#define CGI_H |
||||
|
||||
#include <esp8266.h> |
||||
#include "httpd.h" |
||||
|
||||
int tplReadSamplesJSON(HttpdConnData *connData, char *token, void **arg); |
||||
|
||||
#endif |
@ -1,72 +0,0 @@ |
||||
#include <esp8266.h> |
||||
#include <httpd.h> |
||||
#include "page_home.h" |
||||
#include "uptime.h" |
||||
|
||||
|
||||
/** System Status page */ |
||||
int FLASH_FN tplHome(HttpdConnData *connData, char *token, void **arg) |
||||
{ |
||||
// arg is unused
|
||||
(void)arg; |
||||
|
||||
struct station_config stconf; |
||||
char buff[128]; |
||||
u8 mac[6]; |
||||
|
||||
// empty string if no token matches
|
||||
buff[0] = 0; |
||||
|
||||
if (token == NULL) return HTTPD_CGI_DONE; |
||||
|
||||
if (strcmp(token, "uptime") == 0) { |
||||
// Uptime
|
||||
uptime_str(buff); |
||||
|
||||
} else if (strcmp(token, "heap") == 0) { |
||||
// Free heap
|
||||
sprintf(buff, "%u", system_get_free_heap_size()); |
||||
|
||||
} else if (strcmp(token, "wifiMode") == 0) { |
||||
// WiFi mode
|
||||
switch (wifi_get_opmode()) { |
||||
case STATION_MODE: strcpy(buff, "Client"); break; |
||||
case SOFTAP_MODE: strcpy(buff, "SoftAP"); break; |
||||
case STATIONAP_MODE: strcpy(buff, "STA+AP"); break; |
||||
default: strcpy(buff, "Unknown"); |
||||
} |
||||
|
||||
} else if (strcmp(token, "staSSID") == 0) { |
||||
// Station SSID (if in station mode)
|
||||
int opmode = wifi_get_opmode(); |
||||
if (opmode != STATION_MODE && opmode != STATIONAP_MODE) { |
||||
strcpy(buff, "N/A"); // no SSID in AP-only mode
|
||||
} else { |
||||
wifi_station_get_config(&stconf); |
||||
strcpy(buff, (char*)stconf.ssid); |
||||
} |
||||
|
||||
} else if (strcmp(token, "staRSSI") == 0) { |
||||
// Signal strength if in Station mode
|
||||
int rssi = wifi_station_get_rssi(); |
||||
sprintf(buff, "%d", rssi); |
||||
|
||||
} else if (strcmp(token, "staMAC") == 0) { |
||||
// Station MAC addr
|
||||
wifi_get_macaddr(STATION_IF, mac); |
||||
sprintf(buff, MACSTR, MAC2STR(mac)); |
||||
|
||||
} else if (strcmp(token, "apMAC") == 0) { |
||||
// SoftAP MAC addr
|
||||
wifi_get_macaddr(SOFTAP_IF, mac); |
||||
sprintf(buff, MACSTR, MAC2STR(mac)); |
||||
|
||||
} else if (strcmp(token, "chipID") == 0) { |
||||
// Chip serial number
|
||||
sprintf(buff, "%08x", system_get_chip_id()); |
||||
} |
||||
|
||||
httpdSend(connData, buff, -1); |
||||
|
||||
return HTTPD_CGI_DONE; |
||||
} |
@ -0,0 +1,159 @@ |
||||
#include <esp8266.h> |
||||
#include <httpd.h> |
||||
#include "page_status.h" |
||||
#include "uptime.h" |
||||
|
||||
#include "utils.h" |
||||
|
||||
|
||||
/** System Status page */ |
||||
int FLASH_FN tplSystemStatus(HttpdConnData *connData, char *token, void **arg) |
||||
{ |
||||
// arg is unused
|
||||
(void)arg; |
||||
|
||||
struct station_config stconf; |
||||
struct softap_config apconf; |
||||
|
||||
char buff[300]; |
||||
u8 mac[6]; |
||||
int rssi; |
||||
|
||||
// empty string if no token matches
|
||||
buff[0] = 0; |
||||
|
||||
if (token == NULL) return HTTPD_CGI_DONE; |
||||
|
||||
|
||||
// {
|
||||
// "uptime": "00:01:1200:01:12",
|
||||
// "heap": 3391233912,
|
||||
// "wifiMode": "ClientClient",
|
||||
// "sta": null,
|
||||
// "ap": {"SSID": "ESP_D58987", "pwd": "", "MAC": "1a:fe:34:d5:89:87", "chan": 1, "hidden": false, "auth": Open, }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
int opmode = wifi_get_opmode(); |
||||
bool is_sta = (opmode == STATION_MODE || opmode == STATIONAP_MODE); |
||||
bool is_ap = (opmode == SOFTAP_MODE || opmode == STATIONAP_MODE); |
||||
|
||||
if (streq(token, "uptime")) { |
||||
// Uptime
|
||||
uptime_str(buff); |
||||
|
||||
} else if (streq(token, "heap")) { |
||||
// Free heap
|
||||
sprintf(buff, "%u", system_get_free_heap_size()); |
||||
|
||||
} else if (streq(token, "wifiMode")) { |
||||
// WiFi mode
|
||||
strcpy(buff, opmode2str(opmode)); |
||||
|
||||
} else if (streq(token, "staInfo")) { |
||||
if (!is_sta) { |
||||
strcpy(buff, "null"); |
||||
} else { |
||||
// AP info
|
||||
wifi_station_get_config(&stconf); |
||||
wifi_get_macaddr(STATION_IF, mac); |
||||
rssi = wifi_station_get_rssi(); |
||||
|
||||
sprintf(buff, |
||||
"{" |
||||
"\"SSID\": \"%s\", " |
||||
"\"RSSI\": %d, " |
||||
"\"RSSIperc\": %d, " |
||||
"\"MAC\": \""MACSTR"\"" |
||||
"}", |
||||
stconf.ssid, |
||||
rssi, |
||||
rssi2perc(rssi), |
||||
MAC2STR(mac) |
||||
); |
||||
} |
||||
|
||||
} else if (streq(token, "apInfo")) { |
||||
if (!is_ap) { |
||||
strcpy(buff, "null"); |
||||
} else { |
||||
wifi_softap_get_config(&apconf); |
||||
wifi_get_macaddr(SOFTAP_IF, mac); |
||||
|
||||
// AP info
|
||||
sprintf(buff, |
||||
"{" |
||||
"\"SSID\": \"%s\", " |
||||
"\"pwd\": \"%s\", " |
||||
"\"MAC\": \""MACSTR"\", " |
||||
"\"chan\": %d, " |
||||
"\"hidden\": %s, " |
||||
"\"auth\": \"%s\"" |
||||
"}", |
||||
apconf.ssid, |
||||
apconf.password, |
||||
MAC2STR(mac), |
||||
apconf.channel, |
||||
apconf.ssid_hidden ? "true" : "false", |
||||
auth2str(apconf.authmode) |
||||
); |
||||
} |
||||
|
||||
/*} else if (streq(token, "staSSID")) {
|
||||
// Station SSID (if in station mode)
|
||||
if (!is_sta) { |
||||
strcpy(buff, "N/A"); |
||||
} else { |
||||
strcpy(buff, (char*)stconf.ssid); |
||||
} |
||||
|
||||
} else if (streq(token, "staRSSI")) { |
||||
// Signal strength if in Station mode
|
||||
if (!is_sta) { |
||||
strcpy(buff, "0"); |
||||
} else { |
||||
rssi = wifi_station_get_rssi(); |
||||
sprintf(buff, "%d", rssi); |
||||
} |
||||
|
||||
} else if (streq(token, "staRSSIperc")) { |
||||
// Signal strength if in Station mode
|
||||
if (!is_sta) { |
||||
strcpy(buff, "0"); |
||||
} else { |
||||
rssi = wifi_station_get_rssi(); |
||||
sprintf(buff, "%d", rssi2perc(rssi)); |
||||
} |
||||
|
||||
} else if (streq(token, "staMAC")) { |
||||
// Station MAC addr
|
||||
wifi_get_macaddr(STATION_IF, mac); |
||||
sprintf(buff, MACSTR, MAC2STR(mac)); |
||||
|
||||
} else if (streq(token, "apMAC")) { |
||||
// SoftAP MAC addr
|
||||
wifi_get_macaddr(SOFTAP_IF, mac); |
||||
sprintf(buff, MACSTR, MAC2STR(mac)); |
||||
|
||||
} else if (streq(token, "chipID")) { |
||||
// Chip serial number
|
||||
sprintf(buff, "%08x", system_get_chip_id());*/ |
||||
} |
||||
|
||||
httpdSend(connData, buff, -1); |
||||
|
||||
return HTTPD_CGI_DONE; |
||||
} |
||||
|
||||
/*
|
||||
"sta": { |
||||
"SSID": "%staSSID%", |
||||
"RSSI": %staRSSI%, |
||||
"RSSIperc": %staRSSIperc%, |
||||
"MAC": "%staMAC%" |
||||
}, |
||||
"ap": { |
||||
"MAC": "%apMAC%" |
||||
}, |
||||
*/ |
@ -0,0 +1,8 @@ |
||||
#ifndef PAGE_WAVEFORM_H |
||||
#define PAGE_WAVEFORM_H |
||||
|
||||
#include <httpd.h> |
||||
|
||||
int tplWaveformJSON(HttpdConnData *connData, char *token, void **arg); |
||||
|
||||
#endif // PAGE_WAVEFORM_H
|
@ -0,0 +1,42 @@ |
||||
#include <esp8266.h> |
||||
#include "utils.h" |
||||
|
||||
int FLASH_FN rssi2perc(int rssi) |
||||
{ |
||||
int r; |
||||
|
||||
// convert to percentage
|
||||
if (rssi > -50) |
||||
r = 100; |
||||
else if (rssi < -100) |
||||
r = 0; |
||||
else |
||||
r = 2 * (rssi + 100); // approx.
|
||||
|
||||
return r; |
||||
} |
||||
|
||||
const FLASH_FN char *auth2str(AUTH_MODE auth) |
||||
{ |
||||
switch (auth) { |
||||
case AUTH_OPEN: return "Open"; |
||||
case AUTH_WEP: return "WEP"; |
||||
case AUTH_WPA_PSK: return "WPA"; |
||||
case AUTH_WPA2_PSK: return "WPA2"; |
||||
case AUTH_WPA_WPA2_PSK: return "WPA/WPA2"; |
||||
default: |
||||
return "Unknown"; |
||||
} |
||||
} |
||||
|
||||
const FLASH_FN char *opmode2str(int opmode) |
||||
{ |
||||
switch (opmode) { |
||||
case NULL_MODE: return "Disabled"; |
||||
case STATION_MODE: return "Client"; |
||||
case SOFTAP_MODE: return "SoftAP"; |
||||
case STATIONAP_MODE: return "STA+AP"; |
||||
default: |
||||
return "Unknown"; |
||||
} |
||||
} |
@ -0,0 +1,10 @@ |
||||
#ifndef UTILS_H |
||||
#define UTILS_H |
||||
|
||||
#include <esp8266.h> |
||||
|
||||
int rssi2perc(int rssi); |
||||
const char *auth2str(AUTH_MODE auth); |
||||
const char *opmode2str(int opmode); |
||||
|
||||
#endif // UTILS_H
|
Loading…
Reference in new issue