remove PresenceDetection code
This commit is contained in:
@@ -27,7 +27,6 @@ set(SRCFILES
|
|||||||
../src/MqttTopics.h
|
../src/MqttTopics.h
|
||||||
../src/WebCfgServerConstants.h
|
../src/WebCfgServerConstants.h
|
||||||
../src/WebCfgServer.cpp
|
../src/WebCfgServer.cpp
|
||||||
../src/PresenceDetection.cpp
|
|
||||||
../src/PreferencesKeys.h
|
../src/PreferencesKeys.h
|
||||||
../src/Gpio.cpp
|
../src/Gpio.cpp
|
||||||
../src/Logger.cpp
|
../src/Logger.cpp
|
||||||
|
|||||||
@@ -23,9 +23,8 @@ extern const uint8_t x509_crt_imported_bundle_bin_start[] asm("_binary_x509_crt_
|
|||||||
extern const uint8_t x509_crt_imported_bundle_bin_end[] asm("_binary_x509_crt_bundle_end");
|
extern const uint8_t x509_crt_imported_bundle_bin_end[] asm("_binary_x509_crt_bundle_end");
|
||||||
|
|
||||||
#ifndef NUKI_HUB_UPDATER
|
#ifndef NUKI_HUB_UPDATER
|
||||||
NukiNetwork::NukiNetwork(Preferences *preferences, PresenceDetection* presenceDetection, Gpio* gpio, const String& maintenancePathPrefix, char* buffer, size_t bufferSize)
|
NukiNetwork::NukiNetwork(Preferences *preferences, Gpio* gpio, const String& maintenancePathPrefix, char* buffer, size_t bufferSize)
|
||||||
: _preferences(preferences),
|
: _preferences(preferences),
|
||||||
_presenceDetection(presenceDetection),
|
|
||||||
_gpio(gpio),
|
_gpio(gpio),
|
||||||
_buffer(buffer),
|
_buffer(buffer),
|
||||||
_bufferSize(bufferSize)
|
_bufferSize(bufferSize)
|
||||||
@@ -399,22 +398,6 @@ bool NukiNetwork::update()
|
|||||||
|
|
||||||
_lastConnectedTs = ts;
|
_lastConnectedTs = ts;
|
||||||
|
|
||||||
#if PRESENCE_DETECTION_ENABLED
|
|
||||||
if(_presenceDetection != nullptr && (_lastPresenceTs == 0 || (ts - _lastPresenceTs) > 3000))
|
|
||||||
{
|
|
||||||
char* presenceCsv = _presenceDetection->generateCsv();
|
|
||||||
bool success = publishString(_mqttPresencePrefix, mqtt_topic_presence, presenceCsv, true);
|
|
||||||
|
|
||||||
if(!success)
|
|
||||||
{
|
|
||||||
Log->println(F("Failed to publish presence CSV data."));
|
|
||||||
Log->println(presenceCsv);
|
|
||||||
}
|
|
||||||
|
|
||||||
_lastPresenceTs = ts;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if(_device->signalStrength() != 127 && _rssiPublishInterval > 0 && ts - _lastRssiTs > _rssiPublishInterval)
|
if(_device->signalStrength() != 127 && _rssiPublishInterval > 0 && ts - _lastRssiTs > _rssiPublishInterval)
|
||||||
{
|
{
|
||||||
_lastRssiTs = ts;
|
_lastRssiTs = ts;
|
||||||
@@ -753,14 +736,6 @@ void NukiNetwork::gpioActionCallback(const GpioAction &action, const int &pin)
|
|||||||
_gpioTs[pin] = (esp_timer_get_time() / 1000);
|
_gpioTs[pin] = (esp_timer_get_time() / 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if PRESENCE_DETECTION_ENABLED
|
|
||||||
void NukiNetwork::setMqttPresencePath(char *path)
|
|
||||||
{
|
|
||||||
memset(_mqttPresencePrefix, 0, sizeof(_mqttPresencePrefix));
|
|
||||||
strcpy(_mqttPresencePrefix, path);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void NukiNetwork::disableAutoRestarts()
|
void NukiNetwork::disableAutoRestarts()
|
||||||
{
|
{
|
||||||
_networkTimeout = 0;
|
_networkTimeout = 0;
|
||||||
|
|||||||
@@ -14,7 +14,6 @@
|
|||||||
#include "Gpio.h"
|
#include "Gpio.h"
|
||||||
#include <ArduinoJson.h>
|
#include <ArduinoJson.h>
|
||||||
#include "NukiConstants.h"
|
#include "NukiConstants.h"
|
||||||
#include "PresenceDetection.h"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define JSON_BUFFER_SIZE 1024
|
#define JSON_BUFFER_SIZE 1024
|
||||||
@@ -37,12 +36,9 @@ public:
|
|||||||
#ifdef NUKI_HUB_UPDATER
|
#ifdef NUKI_HUB_UPDATER
|
||||||
explicit NukiNetwork(Preferences* preferences);
|
explicit NukiNetwork(Preferences* preferences);
|
||||||
#else
|
#else
|
||||||
explicit NukiNetwork(Preferences* preferences, PresenceDetection* presenceDetection, Gpio* gpio, const String& maintenancePathPrefix, char* buffer, size_t bufferSize);
|
explicit NukiNetwork(Preferences* preferences, Gpio* gpio, const String& maintenancePathPrefix, char* buffer, size_t bufferSize);
|
||||||
|
|
||||||
void registerMqttReceiver(MqttReceiver* receiver);
|
void registerMqttReceiver(MqttReceiver* receiver);
|
||||||
#if PRESENCE_DETECTION_ENABLED
|
|
||||||
void setMqttPresencePath(char* path);
|
|
||||||
#endif
|
|
||||||
void disableAutoRestarts(); // disable on OTA start
|
void disableAutoRestarts(); // disable on OTA start
|
||||||
void disableMqtt();
|
void disableMqtt();
|
||||||
String localIP();
|
String localIP();
|
||||||
@@ -148,7 +144,6 @@ private:
|
|||||||
String _lockPath;
|
String _lockPath;
|
||||||
String _discoveryTopic;
|
String _discoveryTopic;
|
||||||
|
|
||||||
PresenceDetection* _presenceDetection;
|
|
||||||
Gpio* _gpio;
|
Gpio* _gpio;
|
||||||
|
|
||||||
int _mqttConnectionState = 0;
|
int _mqttConnectionState = 0;
|
||||||
@@ -177,9 +172,6 @@ private:
|
|||||||
int64_t _lastConnectedTs = 0;
|
int64_t _lastConnectedTs = 0;
|
||||||
int64_t _lastMaintenanceTs = 0;
|
int64_t _lastMaintenanceTs = 0;
|
||||||
int64_t _lastUpdateCheckTs = 0;
|
int64_t _lastUpdateCheckTs = 0;
|
||||||
#if PRESENCE_DETECTION_ENABLED
|
|
||||||
int64_t _lastPresenceTs = 0;
|
|
||||||
#endif
|
|
||||||
int64_t _lastRssiTs = 0;
|
int64_t _lastRssiTs = 0;
|
||||||
bool _mqttEnabled = true;
|
bool _mqttEnabled = true;
|
||||||
int _rssiPublishInterval = 0;
|
int _rssiPublishInterval = 0;
|
||||||
|
|||||||
@@ -60,10 +60,6 @@ void NukiNetworkLock::initialize()
|
|||||||
_preferences->putString(preference_mqtt_lock_path, _mqttPath);
|
_preferences->putString(preference_mqtt_lock_path, _mqttPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if PRESENCE_DETECTION_ENABLED
|
|
||||||
_network->setMqttPresencePath(_mqttPath);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
_haEnabled = _preferences->getString(preference_mqtt_hass_discovery, "") != "";
|
_haEnabled = _preferences->getString(preference_mqtt_hass_discovery, "") != "";
|
||||||
_disableNonJSON = _preferences->getBool(preference_disable_non_json, false);
|
_disableNonJSON = _preferences->getBool(preference_disable_non_json, false);
|
||||||
_offEnabled = _preferences->getBool(preference_official_hybrid, false);
|
_offEnabled = _preferences->getBool(preference_official_hybrid, false);
|
||||||
|
|||||||
@@ -51,6 +51,8 @@ NukiWrapper::~NukiWrapper()
|
|||||||
|
|
||||||
void NukiWrapper::initialize(const bool& firstStart)
|
void NukiWrapper::initialize(const bool& firstStart)
|
||||||
{
|
{
|
||||||
|
_preferences->remove(preference_presence_detection_timeout);
|
||||||
|
|
||||||
_nukiLock.initialize();
|
_nukiLock.initialize();
|
||||||
|
|
||||||
esp_power_level_t powerLevel;
|
esp_power_level_t powerLevel;
|
||||||
@@ -134,9 +136,6 @@ void NukiWrapper::initialize(const bool& firstStart)
|
|||||||
_preferences->putInt(preference_query_interval_configuration, 3600);
|
_preferences->putInt(preference_query_interval_configuration, 3600);
|
||||||
_preferences->putInt(preference_query_interval_battery, 1800);
|
_preferences->putInt(preference_query_interval_battery, 1800);
|
||||||
_preferences->putInt(preference_query_interval_keypad, 1800);
|
_preferences->putInt(preference_query_interval_keypad, 1800);
|
||||||
#if PRESENCE_DETECTION_ENABLED
|
|
||||||
_preferences->putInt(preference_presence_detection_timeout, -1);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_nrOfRetries < 0 || _nrOfRetries == 200)
|
if(_nrOfRetries < 0 || _nrOfRetries == 200)
|
||||||
|
|||||||
@@ -1,242 +0,0 @@
|
|||||||
#include "PresenceDetection.h"
|
|
||||||
#include "PreferencesKeys.h"
|
|
||||||
#include "Logger.h"
|
|
||||||
#include "CharBuffer.h"
|
|
||||||
#include <NimBLEDevice.h>
|
|
||||||
#include <NimBLEAdvertisedDevice.h>
|
|
||||||
#include "NimBLEBeacon.h"
|
|
||||||
#include "NukiUtils.h"
|
|
||||||
|
|
||||||
PresenceDetection::PresenceDetection(Preferences* preferences, BleScanner::Scanner *bleScanner, char* buffer, size_t bufferSize)
|
|
||||||
: _preferences(preferences),
|
|
||||||
_bleScanner(bleScanner),
|
|
||||||
_csv(buffer),
|
|
||||||
_bufferSize(bufferSize)
|
|
||||||
{
|
|
||||||
_timeout = _preferences->getInt(preference_presence_detection_timeout, 0) * 1000;
|
|
||||||
if(_timeout == 0)
|
|
||||||
{
|
|
||||||
_timeout = 60000;
|
|
||||||
_preferences->putInt(preference_presence_detection_timeout, 60);
|
|
||||||
}
|
|
||||||
|
|
||||||
Log->print(F("Presence detection timeout (ms): "));
|
|
||||||
Log->println(_timeout);
|
|
||||||
}
|
|
||||||
|
|
||||||
PresenceDetection::~PresenceDetection()
|
|
||||||
{
|
|
||||||
_bleScanner->unsubscribe(this);
|
|
||||||
_bleScanner = nullptr;
|
|
||||||
|
|
||||||
delete _csv;
|
|
||||||
_csv = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PresenceDetection::initialize()
|
|
||||||
{
|
|
||||||
_bleScanner->subscribe(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
char* PresenceDetection::generateCsv()
|
|
||||||
{
|
|
||||||
if(!enabled()) return nullptr;
|
|
||||||
memset(_csv, 0, _bufferSize);
|
|
||||||
|
|
||||||
_csvIndex = 0;
|
|
||||||
int64_t ts = esp_timer_get_time() / 1000;
|
|
||||||
{
|
|
||||||
std::lock_guard<std::mutex> lock(mtx);
|
|
||||||
|
|
||||||
for (auto it: _devices)
|
|
||||||
{
|
|
||||||
if (ts - _timeout < it.second->timestamp)
|
|
||||||
{
|
|
||||||
buildCsv(it.second);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prevent csv buffer overflow
|
|
||||||
if (_csvIndex > _bufferSize - (sizeof(it.second->name) + sizeof(it.second->address) + 10))
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(_csvIndex == 0)
|
|
||||||
{
|
|
||||||
strcpy(_csv, ";;");
|
|
||||||
return _csv;
|
|
||||||
}
|
|
||||||
|
|
||||||
_csv[_csvIndex-1] = 0x00;
|
|
||||||
return _csv;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void PresenceDetection::buildCsv(const std::shared_ptr<PdDevice>& device)
|
|
||||||
{
|
|
||||||
for(int i = 0; i < 17; i++)
|
|
||||||
{
|
|
||||||
_csv[_csvIndex] = device->address[i];
|
|
||||||
++_csvIndex;
|
|
||||||
}
|
|
||||||
_csv[_csvIndex] = ';';
|
|
||||||
++_csvIndex;
|
|
||||||
|
|
||||||
int i=0;
|
|
||||||
while(device->name[i] != 0x00 && i < sizeof(device->name))
|
|
||||||
{
|
|
||||||
_csv[_csvIndex] = device->name[i];
|
|
||||||
++_csvIndex;
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
_csv[_csvIndex] = ';';
|
|
||||||
++_csvIndex;
|
|
||||||
|
|
||||||
char rssiStr[20] = {0};
|
|
||||||
itoa(device->rssi, rssiStr, 10);
|
|
||||||
|
|
||||||
int j=0;
|
|
||||||
while(rssiStr[j] != 0x00 && j < 20)
|
|
||||||
{
|
|
||||||
_csv[_csvIndex] = rssiStr[j];
|
|
||||||
++_csvIndex;
|
|
||||||
++j;
|
|
||||||
}
|
|
||||||
|
|
||||||
_csv[_csvIndex] = '\n';
|
|
||||||
_csvIndex++;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PresenceDetection::onResult(NimBLEAdvertisedDevice *device)
|
|
||||||
{
|
|
||||||
std::string addressStr = device->getAddress().toString();
|
|
||||||
char addrArrComp[13] = {0};
|
|
||||||
|
|
||||||
// Log->println(addressStr.c_str());
|
|
||||||
|
|
||||||
addrArrComp[0] = addressStr.at(0);
|
|
||||||
addrArrComp[1] = addressStr.at(1);
|
|
||||||
addrArrComp[2] = addressStr.at(3);
|
|
||||||
addrArrComp[3] = addressStr.at(4);
|
|
||||||
addrArrComp[4] = addressStr.at(6);
|
|
||||||
addrArrComp[5] = addressStr.at(7);
|
|
||||||
addrArrComp[6] = addressStr.at(9);
|
|
||||||
addrArrComp[7] = addressStr.at(10);
|
|
||||||
addrArrComp[8] = addressStr.at(12);
|
|
||||||
addrArrComp[9] = addressStr.at(13);
|
|
||||||
addrArrComp[10] = addressStr.at(15);
|
|
||||||
addrArrComp[11] = addressStr.at(16);
|
|
||||||
|
|
||||||
int64_t addr = strtoll(addrArrComp, nullptr, 16);
|
|
||||||
|
|
||||||
bool found;
|
|
||||||
{
|
|
||||||
std::lock_guard<std::mutex> lock(mtx);
|
|
||||||
auto it = _devices.find(addr);
|
|
||||||
found = (it != _devices.end());
|
|
||||||
|
|
||||||
if(found)
|
|
||||||
{
|
|
||||||
it->second->timestamp = esp_timer_get_time() / 1000;
|
|
||||||
it->second->rssi = device->getRSSI();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!found)
|
|
||||||
{
|
|
||||||
std::shared_ptr<PdDevice> pdDevice = std::make_shared<PdDevice>();
|
|
||||||
|
|
||||||
int i=0;
|
|
||||||
size_t len = addressStr.length();
|
|
||||||
while(i < len)
|
|
||||||
{
|
|
||||||
pdDevice->address[i] = addressStr.at(i);
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
pdDevice->rssi = device->getRSSI();
|
|
||||||
|
|
||||||
std::string nameStr = "-";
|
|
||||||
if(device->haveName())
|
|
||||||
{
|
|
||||||
std::string nameStr = device->getName();
|
|
||||||
|
|
||||||
i=0;
|
|
||||||
len = nameStr.length();
|
|
||||||
while(i < len && i < sizeof(pdDevice->name)-1)
|
|
||||||
{
|
|
||||||
pdDevice->name[i] = nameStr.at(i);
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
pdDevice->timestamp = esp_timer_get_time() / 1000;
|
|
||||||
|
|
||||||
{
|
|
||||||
std::lock_guard<std::mutex> lock(mtx);
|
|
||||||
_devices[addr] = pdDevice;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (device->haveManufacturerData())
|
|
||||||
{
|
|
||||||
std::string strManufacturerData = device->getManufacturerData();
|
|
||||||
|
|
||||||
uint8_t cManufacturerData[100];
|
|
||||||
strManufacturerData.copy((char *)cManufacturerData, std::min(strManufacturerData.length(), sizeof(cManufacturerData)), 0);
|
|
||||||
|
|
||||||
if (strManufacturerData.length() == 25 && cManufacturerData[0] == 0x4C && cManufacturerData[1] == 0x00)
|
|
||||||
{
|
|
||||||
BLEBeacon oBeacon = BLEBeacon();
|
|
||||||
oBeacon.setData(strManufacturerData);
|
|
||||||
|
|
||||||
// if(ENDIAN_CHANGE_U16(oBeacon.getMinor()) == 40004)
|
|
||||||
// {
|
|
||||||
pdDevice->timestamp = esp_timer_get_time() / 1000;
|
|
||||||
strcpy(pdDevice->name, oBeacon.getProximityUUID().toString().c_str());
|
|
||||||
{
|
|
||||||
std::lock_guard<std::mutex> lock(mtx);
|
|
||||||
_devices[addr] = pdDevice;
|
|
||||||
}
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
std::string nameStr = "-";
|
|
||||||
i=0;
|
|
||||||
len = nameStr.length();
|
|
||||||
while(i < len && i < sizeof(pdDevice->name)-1)
|
|
||||||
{
|
|
||||||
pdDevice->name[i] = nameStr.at(i);
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
pdDevice->timestamp = esp_timer_get_time() / 1000;
|
|
||||||
|
|
||||||
{
|
|
||||||
std::lock_guard<std::mutex> lock(mtx);
|
|
||||||
_devices[addr] = pdDevice;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// if(device->haveName())
|
|
||||||
// {
|
|
||||||
// Log->print(" | ");
|
|
||||||
// Log->print(device->getName().c_str());
|
|
||||||
// if(device->haveRSSI())
|
|
||||||
// {
|
|
||||||
// Log->print(" | ");
|
|
||||||
// Log->print(device->getRSSI());
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// Log->println();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool PresenceDetection::enabled()
|
|
||||||
{
|
|
||||||
return _timeout > 0;
|
|
||||||
}
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include <Preferences.h>
|
|
||||||
#include "BleScanner.h"
|
|
||||||
#include "BleInterfaces.h"
|
|
||||||
#include <memory>
|
|
||||||
#include <mutex>
|
|
||||||
#include <map>
|
|
||||||
|
|
||||||
struct PdDevice
|
|
||||||
{
|
|
||||||
char address[18] = {0};
|
|
||||||
char name[37] = {0};
|
|
||||||
int64_t timestamp = 0;
|
|
||||||
int rssi = 0;
|
|
||||||
bool hasRssi = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
class PresenceDetection : public BleScanner::Subscriber
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
PresenceDetection(Preferences* preferences, BleScanner::Scanner* bleScanner, char* buffer, size_t bufferSize);
|
|
||||||
virtual ~PresenceDetection();
|
|
||||||
|
|
||||||
void initialize();
|
|
||||||
char* generateCsv();
|
|
||||||
bool enabled();
|
|
||||||
|
|
||||||
void onResult(NimBLEAdvertisedDevice* advertisedDevice) override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
void buildCsv(const std::shared_ptr<PdDevice>& device);
|
|
||||||
|
|
||||||
std::mutex mtx;
|
|
||||||
|
|
||||||
Preferences* _preferences;
|
|
||||||
BleScanner::Scanner* _bleScanner;
|
|
||||||
char* _csv = {0};
|
|
||||||
size_t _bufferSize = 0;
|
|
||||||
std::map<int64_t, std::shared_ptr<PdDevice>> _devices;
|
|
||||||
int _timeout = 20000;
|
|
||||||
int _csvIndex = 0;
|
|
||||||
};
|
|
||||||
@@ -1378,18 +1378,6 @@ bool WebCfgServer::processArgs(AsyncWebServerRequest *request, String& message)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if PRESENCE_DETECTION_ENABLED
|
|
||||||
else if(key == "PRDTMO")
|
|
||||||
{
|
|
||||||
if(_preferences->getInt(preference_presence_detection_timeout, 60) != value.toInt())
|
|
||||||
{
|
|
||||||
_preferences->putInt(preference_presence_detection_timeout, value.toInt());
|
|
||||||
Log->print(F("Setting changed: "));
|
|
||||||
Log->println(key);
|
|
||||||
configChanged = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
else if(key == "RSBC")
|
else if(key == "RSBC")
|
||||||
{
|
{
|
||||||
if(_preferences->getInt(preference_restart_ble_beacon_lost, 60) != value.toInt())
|
if(_preferences->getInt(preference_restart_ble_beacon_lost, 60) != value.toInt())
|
||||||
@@ -3103,9 +3091,6 @@ void WebCfgServer::buildNukiConfigHtml(AsyncWebServerRequest *request)
|
|||||||
printInputField(response, "TRYDLY", "Delay between retries (milliseconds)", _preferences->getInt(preference_command_retry_delay), 10, "");
|
printInputField(response, "TRYDLY", "Delay between retries (milliseconds)", _preferences->getInt(preference_command_retry_delay), 10, "");
|
||||||
if(_preferences->getBool(preference_lock_enabled, true)) printCheckBox(response, "REGAPP", "Lock: Nuki Bridge is running alongside Nuki Hub (needs re-pairing if changed)", _preferences->getBool(preference_register_as_app), "");
|
if(_preferences->getBool(preference_lock_enabled, true)) printCheckBox(response, "REGAPP", "Lock: Nuki Bridge is running alongside Nuki Hub (needs re-pairing if changed)", _preferences->getBool(preference_register_as_app), "");
|
||||||
if(_preferences->getBool(preference_opener_enabled, false)) printCheckBox(response, "REGAPPOPN", "Opener: Nuki Bridge is running alongside Nuki Hub (needs re-pairing if changed)", _preferences->getBool(preference_register_opener_as_app), "");
|
if(_preferences->getBool(preference_opener_enabled, false)) printCheckBox(response, "REGAPPOPN", "Opener: Nuki Bridge is running alongside Nuki Hub (needs re-pairing if changed)", _preferences->getBool(preference_register_opener_as_app), "");
|
||||||
#if PRESENCE_DETECTION_ENABLED
|
|
||||||
printInputField(response, "PRDTMO", "Presence detection timeout (seconds; -1 to disable)", _preferences->getInt(preference_presence_detection_timeout), 10, "");
|
|
||||||
#endif
|
|
||||||
printInputField(response, "RSBC", "Restart if bluetooth beacons not received (seconds; -1 to disable)", _preferences->getInt(preference_restart_ble_beacon_lost), 10, "");
|
printInputField(response, "RSBC", "Restart if bluetooth beacons not received (seconds; -1 to disable)", _preferences->getInt(preference_restart_ble_beacon_lost), 10, "");
|
||||||
printInputField(response, "TXPWR", "BLE transmit power in dB (minimum -12, maximum 9)", _preferences->getInt(preference_ble_tx_power, 9), 10, "");
|
printInputField(response, "TXPWR", "BLE transmit power in dB (minimum -12, maximum 9)", _preferences->getInt(preference_ble_tx_power, 9), 10, "");
|
||||||
|
|
||||||
|
|||||||
15
src/main.cpp
15
src/main.cpp
@@ -11,7 +11,6 @@
|
|||||||
#ifndef NUKI_HUB_UPDATER
|
#ifndef NUKI_HUB_UPDATER
|
||||||
#include "NukiWrapper.h"
|
#include "NukiWrapper.h"
|
||||||
#include "NukiNetworkLock.h"
|
#include "NukiNetworkLock.h"
|
||||||
#include "PresenceDetection.h"
|
|
||||||
#include "NukiOpenerWrapper.h"
|
#include "NukiOpenerWrapper.h"
|
||||||
#include "Gpio.h"
|
#include "Gpio.h"
|
||||||
#include "CharBuffer.h"
|
#include "CharBuffer.h"
|
||||||
@@ -33,7 +32,6 @@ NukiNetworkOpener* networkOpener = nullptr;
|
|||||||
BleScanner::Scanner* bleScanner = nullptr;
|
BleScanner::Scanner* bleScanner = nullptr;
|
||||||
NukiWrapper* nuki = nullptr;
|
NukiWrapper* nuki = nullptr;
|
||||||
NukiOpenerWrapper* nukiOpener = nullptr;
|
NukiOpenerWrapper* nukiOpener = nullptr;
|
||||||
PresenceDetection* presenceDetection = nullptr;
|
|
||||||
NukiDeviceId* deviceIdLock = nullptr;
|
NukiDeviceId* deviceIdLock = nullptr;
|
||||||
NukiDeviceId* deviceIdOpener = nullptr;
|
NukiDeviceId* deviceIdOpener = nullptr;
|
||||||
Gpio* gpio = nullptr;
|
Gpio* gpio = nullptr;
|
||||||
@@ -42,7 +40,6 @@ bool lockEnabled = false;
|
|||||||
bool openerEnabled = false;
|
bool openerEnabled = false;
|
||||||
|
|
||||||
TaskHandle_t nukiTaskHandle = nullptr;
|
TaskHandle_t nukiTaskHandle = nullptr;
|
||||||
TaskHandle_t presenceDetectionTaskHandle = nullptr;
|
|
||||||
|
|
||||||
int64_t restartTs = ((2^64) - (5 * 1000 * 60000)) / 1000;
|
int64_t restartTs = ((2^64) - (5 * 1000 * 60000)) / 1000;
|
||||||
|
|
||||||
@@ -175,7 +172,6 @@ void nukiTask(void *pvParameters)
|
|||||||
{
|
{
|
||||||
delay(5000);
|
delay(5000);
|
||||||
}
|
}
|
||||||
#ifndef PRESENCE_DETECTION_ENABLED
|
|
||||||
else if (!whiteListed)
|
else if (!whiteListed)
|
||||||
{
|
{
|
||||||
whiteListed = true;
|
whiteListed = true;
|
||||||
@@ -188,7 +184,6 @@ void nukiTask(void *pvParameters)
|
|||||||
bleScanner->whitelist(nukiOpener->getBleAddress());
|
bleScanner->whitelist(nukiOpener->getBleAddress());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if(lockEnabled)
|
if(lockEnabled)
|
||||||
{
|
{
|
||||||
@@ -459,20 +454,12 @@ void setup()
|
|||||||
bleScanner->initialize("NukiHub", true, 40, 40);
|
bleScanner->initialize("NukiHub", true, 40, 40);
|
||||||
bleScanner->setScanDuration(0);
|
bleScanner->setScanDuration(0);
|
||||||
|
|
||||||
#if PRESENCE_DETECTION_ENABLED
|
|
||||||
if(preferences->getInt(preference_presence_detection_timeout) >= 0)
|
|
||||||
{
|
|
||||||
presenceDetection = new PresenceDetection(preferences, bleScanner, CharBuffer::get(), buffer_size);
|
|
||||||
presenceDetection->initialize();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
lockEnabled = preferences->getBool(preference_lock_enabled);
|
lockEnabled = preferences->getBool(preference_lock_enabled);
|
||||||
openerEnabled = preferences->getBool(preference_opener_enabled);
|
openerEnabled = preferences->getBool(preference_opener_enabled);
|
||||||
|
|
||||||
const String mqttLockPath = preferences->getString(preference_mqtt_lock_path);
|
const String mqttLockPath = preferences->getString(preference_mqtt_lock_path);
|
||||||
|
|
||||||
network = new NukiNetwork(preferences, presenceDetection, gpio, mqttLockPath, CharBuffer::get(), buffer_size);
|
network = new NukiNetwork(preferences, gpio, mqttLockPath, CharBuffer::get(), buffer_size);
|
||||||
network->initialize();
|
network->initialize();
|
||||||
|
|
||||||
networkLock = new NukiNetworkLock(network, preferences, CharBuffer::get(), buffer_size);
|
networkLock = new NukiNetworkLock(network, preferences, CharBuffer::get(), buffer_size);
|
||||||
|
|||||||
Reference in New Issue
Block a user