From 701ac714302f3da23b7ab7c1640fd3cd00ca962c Mon Sep 17 00:00:00 2001
From: Eric Duminil <eric.duminil@gmail.com>
Date: Fri, 30 Apr 2021 00:33:32 +0200
Subject: [PATCH] Adding 'wifi_scan' as command

---
 ampel-firmware/wifi_util.cpp | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/ampel-firmware/wifi_util.cpp b/ampel-firmware/wifi_util.cpp
index a845140..21680e7 100644
--- a/ampel-firmware/wifi_util.cpp
+++ b/ampel-firmware/wifi_util.cpp
@@ -14,8 +14,29 @@ namespace config {
 
 namespace wifi {
   char local_ip[16]; // "255.255.255.255\0"
-  // Initialize Wi-Fi
+
+  void scanNetworks() {
+    Serial.println();
+    Serial.println(F("WiFi - Scanning..."));
+    bool async = false;
+    bool showHidden = true;
+    int n = WiFi.scanNetworks(async, showHidden);
+    for (int i = 0; i < n; ++i) {
+      Serial.print(F("  * '"));
+      Serial.print(WiFi.SSID(i));
+      Serial.print(F("' ("));
+      int16_t quality = 2 * (100 + WiFi.RSSI(i));
+      Serial.print(util::min(util::max(quality, 0), 100));
+      Serial.println(F(" %)"));
+    }
+    Serial.println(F("Done!"));
+    Serial.println();
+  }
+
+// Initialize Wi-Fi
   void connect(const char *hostname) {
+
+    sensor_console::defineCommand("wifi_scan", scanNetworks, F(" (Scans available WiFi networks)"));
     //NOTE: WiFi Multi could allow multiple SSID and passwords.
     WiFi.persistent(false); // Don't write user & password to Flash.
     WiFi.mode(WIFI_STA); // Set ESP to be a WiFi-client only
-- 
GitLab