diff --git a/Network.cpp b/Network.cpp index cc6b908..671d88c 100644 --- a/Network.cpp +++ b/Network.cpp @@ -155,10 +155,23 @@ int Network::update() _presenceCsv = nullptr; } - if(_device->signalStrength() != 127 && ts - _lastMaintenancePublish > 2000) + if(_device->signalStrength() != 127 && ts - _lastRssiTs > 2000) { - publishInt(_maintenancePathPrefix, mqtt_topic_wifi_rssi, _device->signalStrength()); - _lastMaintenancePublish = ts; + int8_t rssi = _device->signalStrength(); + + if(rssi != _lastRssi) + { + publishInt(_maintenancePathPrefix, mqtt_topic_wifi_rssi, _device->signalStrength()); + _lastRssi = rssi; + _lastRssiTs = ts; + } + } + + if(_lastMaintenanceTs == 0 || (ts - _lastMaintenanceTs) > 30000) + { + publishULong(_maintenancePathPrefix, mqtt_topic_uptime, ts / 1000 / 60); +// publishUInt(_maintenancePathPrefix, mqtt_topic_freeheap, esp_get_free_heap_size()); + _lastMaintenanceTs = ts; } _device->mqttClient()->loop(); diff --git a/Network.h b/Network.h index cfa5109..0842e26 100644 --- a/Network.h +++ b/Network.h @@ -73,5 +73,8 @@ private: std::map _initTopics; unsigned long _lastConnectedTs = 0; - unsigned long _lastMaintenancePublish = 0; + unsigned long _lastMaintenanceTs = 0; + unsigned long _lastRssiTs = 0; + + int8_t _lastRssi = 127; }; diff --git a/NetworkLock.cpp b/NetworkLock.cpp index 71624fe..992404b 100644 --- a/NetworkLock.cpp +++ b/NetworkLock.cpp @@ -69,18 +69,6 @@ void NetworkLock::initialize() } } -void NetworkLock::update() -{ - unsigned long ts = millis(); - - if(_lastMaintenanceTs == 0 || (ts - _lastMaintenanceTs) > 30000) - { - _lastMaintenanceTs = ts; - publishULong(mqtt_topic_uptime, ts / 1000 / 60); - // publishUInt(mqtt_topic_freeheap, esp_get_free_heap_size()); - } -} - void NetworkLock::onMqttDataReceived(char *&topic, byte *&payload, unsigned int &length) { char value[50] = {0}; diff --git a/NetworkLock.h b/NetworkLock.h index 67529d9..1de5c56 100644 --- a/NetworkLock.h +++ b/NetworkLock.h @@ -18,7 +18,6 @@ public: virtual ~NetworkLock(); void initialize(); - void update(); void publishKeyTurnerState(const NukiLock::KeyTurnerState& keyTurnerState, const NukiLock::KeyTurnerState& lastKeyTurnerState); void publishBinaryState(NukiLock::LockState lockState); diff --git a/main.cpp b/main.cpp index 76c4328..22e267e 100644 --- a/main.cpp +++ b/main.cpp @@ -37,7 +37,6 @@ void networkTask(void *pvParameters) // Network Device and MQTT is connected. Process all updates. case 0: case 1: - networkLock->update(); networkOpener->update(); network->update(); webCfgServer->update();