From a6d7593446ca081546a94e7179c238a23e3645cf Mon Sep 17 00:00:00 2001
From: OtherCrashOverride <OtherCrashOverride@users.noreply.github.com>
Date: Sun, 22 Jan 2017 06:29:17 -0600
Subject: [PATCH] Make SSID unique to each device.

---
 data/js/settings.js   |  3 ---
 data/txt/settings.txt |  1 +
 src/smartpower2.ino   | 44 +++++++++++++++++++++++++++++++++++++++----
 3 files changed, 41 insertions(+), 7 deletions(-)

diff --git a/data/js/settings.js b/data/js/settings.js
index 6c1d9a3..e69de29 100644
--- a/data/js/settings.js
+++ b/data/js/settings.js
@@ -1,3 +0,0 @@
-ssid="smartpower2";
-ipaddr="192.168.4.1";
-passwd="12345678";
diff --git a/data/txt/settings.txt b/data/txt/settings.txt
index e94e0f5..d3c82da 100644
--- a/data/txt/settings.txt
+++ b/data/txt/settings.txt
@@ -1,2 +1,3 @@
 autorun=0
 voltage=5.00
+firstboot=1
diff --git a/src/smartpower2.ino b/src/smartpower2.ino
index 5756ab9..d4283c7 100644
--- a/src/smartpower2.ino
+++ b/src/smartpower2.ino
@@ -338,8 +338,10 @@ void handleClientData(uint8_t num, String data)
 
 void fs_init(void)
 {
+    String ssidTemp = "ssid=\"SmartPower2_" + String(ESP.getChipId(), HEX) + "\"";
+
     File f = SPIFFS.open("/js/settings.js", "w");
-    f.println("ssid=\"sp2\"");
+    f.println(ssidTemp.c_str());
     f.println("ipaddr=\"192.168.4.1\"");
     f.println("passwd=\"12345678\"");
     f.flush();
@@ -348,7 +350,8 @@ void fs_init(void)
 
     File f2 = SPIFFS.open("/txt/settings.txt", "w");
     f2.println("autorun=0");
-    f2.print("voltage=5.00");
+    f2.println("voltage=5.00");
+    f2.println("firstboot=0");
     f2.flush();
     f2.close();
     readHWSettings();
@@ -421,11 +424,44 @@ void readNetworkConfig(void)
     f.close();
 }
 
+bool isFirstBoot()
+{
+  File f = SPIFFS.open("/txt/settings.txt", "r");
+
+  f.seek(0, SeekSet);
+  f.findUntil("firstboot", "\n\r");
+  f.seek(1, SeekCur);
+  int value = f.readStringUntil('\n').toInt();
+
+  bool result;
+  if (value)
+  {
+    result = true;
+  }
+  else
+  {
+    result = false;
+  }
+
+  f.close();
+
+  return result;
+}
+
 void initSmartPower(void)
 {
-    readHWSettings();
+    if (isFirstBoot())
+    {
+      fs_init();
+    }
+    else
+    {
+      readHWSettings();
+      readNetworkConfig();
+    }
+
     onoff = !autorun;
-    readNetworkConfig();
+
 
     mcp4652_write(WRITE_WIPER0, quadraticRegression(setVoltage));
     pinMode(POWER, OUTPUT);
-- 
GitLab