mirror of
https://github.com/lumapu/ahoy.git
synced 2025-05-21 21:06:10 +02:00
improved wifi scan (must be fired now, not automatically any more)
This commit is contained in:
parent
4ad6219be7
commit
3764aa4ce1
7 changed files with 53 additions and 18 deletions
|
@ -209,24 +209,25 @@ time_t ahoywifi::getNtpTime(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void ahoywifi::scanAvailNetworks(void) {
|
||||||
|
int n = WiFi.scanComplete();
|
||||||
|
if(n == -2)
|
||||||
|
WiFi.scanNetworks(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void ahoywifi::getAvailNetworks(JsonObject obj) {
|
void ahoywifi::getAvailNetworks(JsonObject obj) {
|
||||||
JsonArray nets = obj.createNestedArray("networks");
|
JsonArray nets = obj.createNestedArray("networks");
|
||||||
|
|
||||||
int n = WiFi.scanComplete();
|
int n = WiFi.scanComplete();
|
||||||
if(n == -2) {
|
if(n > 0) {
|
||||||
WiFi.scanNetworks(true);
|
|
||||||
} else if(n) {
|
|
||||||
for (int i = 0; i < n; ++i) {
|
for (int i = 0; i < n; ++i) {
|
||||||
nets[i]["ssid"] = WiFi.SSID(i);
|
nets[i]["ssid"] = WiFi.SSID(i);
|
||||||
nets[i]["rssi"] = WiFi.RSSI(i);
|
nets[i]["rssi"] = WiFi.RSSI(i);
|
||||||
// TODO: does github workflow use another version of this library?
|
|
||||||
// ahoywifi.cpp:223:38: error: 'class WiFiClass' has no member named 'isHidden'
|
|
||||||
//nets[i]["hidden"] = WiFi.isHidden(i) ? true : false;
|
|
||||||
}
|
}
|
||||||
WiFi.scanDelete();
|
WiFi.scanDelete();
|
||||||
if(WiFi.scanComplete() == -2)
|
|
||||||
WiFi.scanNetworks(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ class ahoywifi {
|
||||||
bool setupStation(uint32_t timeout);
|
bool setupStation(uint32_t timeout);
|
||||||
bool getApActive(void);
|
bool getApActive(void);
|
||||||
time_t getNtpTime(void);
|
time_t getNtpTime(void);
|
||||||
|
void scanAvailNetworks(void);
|
||||||
void getAvailNetworks(JsonObject obj);
|
void getAvailNetworks(JsonObject obj);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -609,6 +609,12 @@ bool app::getWifiApActive(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void app::scanAvailNetworks(void) {
|
||||||
|
mWifi->scanAvailNetworks();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void app::getAvailNetworks(JsonObject obj) {
|
void app::getAvailNetworks(JsonObject obj) {
|
||||||
mWifi->getAvailNetworks(obj);
|
mWifi->getAvailNetworks(obj);
|
||||||
|
|
|
@ -68,6 +68,7 @@ class app {
|
||||||
void saveValues(void);
|
void saveValues(void);
|
||||||
void resetPayload(Inverter<>* iv);
|
void resetPayload(Inverter<>* iv);
|
||||||
bool getWifiApActive(void);
|
bool getWifiApActive(void);
|
||||||
|
void scanAvailNetworks(void);
|
||||||
void getAvailNetworks(JsonObject obj);
|
void getAvailNetworks(JsonObject obj);
|
||||||
|
|
||||||
uint8_t getIrqPin(void) {
|
uint8_t getIrqPin(void) {
|
||||||
|
|
|
@ -77,6 +77,13 @@ function sel(name, opt, selId) {
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function selDelAllOpt(sel) {
|
||||||
|
var i, l = sel.options.length - 1;
|
||||||
|
for(i = l; i >= 0; i--) {
|
||||||
|
sel.remove(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function opt(val, html) {
|
function opt(val, html) {
|
||||||
o = document.createElement('option');
|
o = document.createElement('option');
|
||||||
o.value = val;
|
o.value = val;
|
||||||
|
|
|
@ -44,9 +44,11 @@
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend class="des">WiFi</legend>
|
<legend class="des">WiFi</legend>
|
||||||
<p>Enter the credentials to your prefered WiFi station. After rebooting the device tries to connect with this information.</p>
|
<p>Enter the credentials to your prefered WiFi station. After rebooting the device tries to connect with this information.</p>
|
||||||
|
<label for="scanbtn">Search Networks</label>
|
||||||
|
<input type="button" name="scanbtn" id="scanbtn" class="btn" value="scan" onclick="scan()"/><br/>
|
||||||
<label for="networks">Avail Networks</label>
|
<label for="networks">Avail Networks</label>
|
||||||
<select name="networks" id="networks" onChange="selNet()">
|
<select name="networks" id="networks" onChange="selNet()">
|
||||||
<option value="-1">scanning ...</option>
|
<option value="-1">not scanned</option>
|
||||||
</select>
|
</select>
|
||||||
<label for="ssid">SSID</label>
|
<label for="ssid">SSID</label>
|
||||||
<input type="text" name="ssid" class="text"/>
|
<input type="text" name="ssid" class="text"/>
|
||||||
|
@ -162,6 +164,15 @@
|
||||||
ivHtml(JSON.parse('{"name":"","serial":"","channels":4,"ch_max_power":[0,0,0,0],"ch_name":["","","",""]}'), highestId + 1);
|
ivHtml(JSON.parse('{"name":"","serial":"","channels":4,"ch_max_power":[0,0,0,0],"ch_name":["","","",""]}'), highestId + 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function apiCbWifi(obj) {
|
||||||
|
var e = document.getElementById("networks");
|
||||||
|
selDelAllOpt(e);
|
||||||
|
if(obj["success"])
|
||||||
|
e.appendChild(opt("-1", "scanning ..."))
|
||||||
|
else
|
||||||
|
e.appendChild(opt("-1", "Error: " + obj["error"]));
|
||||||
|
}
|
||||||
|
|
||||||
function apiCbNtp(obj) {
|
function apiCbNtp(obj) {
|
||||||
var e = document.getElementById("apiResultNtp");
|
var e = document.getElementById("apiResultNtp");
|
||||||
if(obj["success"])
|
if(obj["success"])
|
||||||
|
@ -186,6 +197,13 @@
|
||||||
getAjax("/api/setup", apiCbNtp, "POST", JSON.stringify(obj));
|
getAjax("/api/setup", apiCbNtp, "POST", JSON.stringify(obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function scan() {
|
||||||
|
var obj = new Object();
|
||||||
|
obj.cmd = "scan_wifi";
|
||||||
|
getAjax("/api/setup", apiCbWifi, "POST", JSON.stringify(obj));
|
||||||
|
setTimeout(function() {getAjax('/api/setup/networks', listNetworks)}, 7000);
|
||||||
|
}
|
||||||
|
|
||||||
function syncTime() {
|
function syncTime() {
|
||||||
var obj = new Object();
|
var obj = new Object();
|
||||||
obj.cmd = "sync_ntp";
|
obj.cmd = "sync_ntp";
|
||||||
|
@ -402,26 +420,25 @@
|
||||||
parseRadio(root["radio"]);
|
parseRadio(root["radio"]);
|
||||||
parseSerial(root["serial"]);
|
parseSerial(root["serial"]);
|
||||||
}
|
}
|
||||||
window.setInterval("getAjax('/api/setup/networks', listNetworks)", 7000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function listNetworks(root) {
|
function listNetworks(root) {
|
||||||
if(root["networks"].length > 0) {
|
|
||||||
var s = document.getElementById("networks");
|
var s = document.getElementById("networks");
|
||||||
var i, l = s.options.length - 1;
|
selDelAllOpt(s);
|
||||||
for(i = l; i >= 0; i--) {
|
if(root["networks"].length > 0) {
|
||||||
s.remove(i);
|
s.appendChild(opt("-1", "please select network"));
|
||||||
}
|
|
||||||
|
|
||||||
for(i = 0; i < root["networks"].length; i++) {
|
for(i = 0; i < root["networks"].length; i++) {
|
||||||
s.appendChild(opt(root["networks"][i]["ssid"], root["networks"][i]["ssid"] + " (" + root["networks"][i]["rssi"] + " dBm)"));
|
s.appendChild(opt(root["networks"][i]["ssid"], root["networks"][i]["ssid"] + " (" + root["networks"][i]["rssi"] + " dBm)"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
s.appendChild(opt("-1", "no network found"));
|
||||||
}
|
}
|
||||||
|
|
||||||
function selNet() {
|
function selNet() {
|
||||||
var s = document.getElementById("networks");
|
var s = document.getElementById("networks");
|
||||||
var e = document.getElementsByName("ssid")[0];
|
var e = document.getElementsByName("ssid")[0];
|
||||||
|
if(-1 != s.value)
|
||||||
e.value = s.value;
|
e.value = s.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -456,7 +456,9 @@ bool webApi::setCtrl(DynamicJsonDocument jsonIn, JsonObject jsonOut) {
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
bool webApi::setSetup(DynamicJsonDocument jsonIn, JsonObject jsonOut) {
|
bool webApi::setSetup(DynamicJsonDocument jsonIn, JsonObject jsonOut) {
|
||||||
if(F("set_time") == jsonIn[F("cmd")])
|
if(F("scan_wifi"))
|
||||||
|
mApp->scanAvailNetworks();
|
||||||
|
else if(F("set_time") == jsonIn[F("cmd")])
|
||||||
mApp->setTimestamp(jsonIn[F("ts")]);
|
mApp->setTimestamp(jsonIn[F("ts")]);
|
||||||
else if(F("sync_ntp") == jsonIn[F("cmd")])
|
else if(F("sync_ntp") == jsonIn[F("cmd")])
|
||||||
mApp->setTimestamp(0); // 0: update ntp flag
|
mApp->setTimestamp(0); // 0: update ntp flag
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue