From a6d59af73b61d2b43f04a17d77d7607497e94a16 Mon Sep 17 00:00:00 2001 From: technyon Date: Sat, 2 Apr 2022 18:02:49 +0200 Subject: [PATCH] use random device id --- Network.cpp | 3 --- PreferencesKeys.h | 1 + main.cpp | 30 +++++++++++++++++++++++++----- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/Network.cpp b/Network.cpp index de55e14..7c72ceb 100644 --- a/Network.cpp +++ b/Network.cpp @@ -19,9 +19,6 @@ void Network::initialize() WiFi.mode(WIFI_STA); // explicitly set mode, esp defaults to STA+AP // it is a good practice to make sure your code sets wifi mode how you want it. - // put your setup code here, to run once: - Serial.begin(115200); - //WiFiManager, Local intialization. Once its business is done, there is no need to keep it around WiFiManager wm; diff --git a/PreferencesKeys.h b/PreferencesKeys.h index 84e7fac..c9ecf22 100644 --- a/PreferencesKeys.h +++ b/PreferencesKeys.h @@ -1,5 +1,6 @@ #pragma once +#define preference_deviceId "deviceId" #define preference_mqtt_broker "mqttbroker" #define preference_mqtt_broker_port "mqttport" #define preference_query_interval_lockstate "lockStInterval" diff --git a/main.cpp b/main.cpp index b25f0ec..b3a6283 100644 --- a/main.cpp +++ b/main.cpp @@ -3,6 +3,7 @@ #include "Network.h" #include "WebCfgServer.h" #include +#include "PreferencesKeys.h" #define ESP32 @@ -34,21 +35,40 @@ void setupTasks() xTaskCreate(nukiTask, "nuki", 16384, NULL, 1, NULL); } +uint32_t getRandomId() +{ + uint8_t rnd[4]; + for(int i=0; i<4; i++) + { + rnd[i] = random(255); + } + uint32_t deviceId; + memcpy(&deviceId, &rnd, sizeof(deviceId)); + return deviceId; +} + void setup() { + Serial.begin(115200); + preferences = new Preferences(); preferences->begin("nukihub", false); network = new Network(preferences); - nuki = new NukiWrapper("ESP", 2020001, network, preferences); - webCfgServer = new WebCfgServer(nuki, network, preferences); - network->initialize(); + + uint32_t deviceId = preferences->getUInt(preference_deviceId); + if(deviceId == 0) + { + deviceId = getRandomId(); + preferences->putUInt(preference_deviceId, deviceId); + } + + nuki = new NukiWrapper("ESP", deviceId, network, preferences); + webCfgServer = new WebCfgServer(nuki, network, preferences); webCfgServer->initialize(); nuki->initialize(); setupTasks(); - -// Serial.println(byte_array_dec[0]); } void loop()