publish wifi rssi

This commit is contained in:
technyon
2022-09-10 10:17:28 +02:00
parent e55ba8007f
commit 6bfc7f686d
9 changed files with 36 additions and 3 deletions

View File

@@ -39,4 +39,5 @@
#define mqtt_topic_reset "/maintenance/reset"
#define mqtt_topic_uptime "/maintenance/uptime"
#define mqtt_topic_wifi_rssi "/maintenance/wifiRssi"
#define mqtt_topic_freeheap "/maintenance/freeHeap"

View File

@@ -7,11 +7,19 @@
Network* Network::_inst = nullptr;
Network::Network(const NetworkDeviceType networkDevice, Preferences *preferences)
Network::Network(const NetworkDeviceType networkDevice, Preferences *preferences, const String& maintenancePathPrefix)
: _preferences(preferences)
{
_inst = this;
_hostname = _preferences->getString(preference_hostname);
memset(_maintenancePathPrefix, 0, sizeof(_maintenancePathPrefix));
size_t len = maintenancePathPrefix.length();
for(int i=0; i < len; i++)
{
_maintenancePathPrefix[i] = maintenancePathPrefix.charAt(i);
}
setupDevice(networkDevice);
}
@@ -147,6 +155,12 @@ int Network::update()
_presenceCsv = nullptr;
}
if(_device->signalStrength() != 127 && ts - _lastMaintenancePublish > 2000)
{
publishInt(_maintenancePathPrefix, mqtt_topic_wifi_rssi, _device->signalStrength());
_lastMaintenancePublish = ts;
}
_device->mqttClient()->loop();
return 0;
}

View File

@@ -15,7 +15,7 @@ enum class NetworkDeviceType
class Network
{
public:
explicit Network(const NetworkDeviceType networkDevice, Preferences* preferences);
explicit Network(const NetworkDeviceType networkDevice, Preferences* preferences, const String& maintenancePathPrefix);
void initialize();
int update();
@@ -63,6 +63,7 @@ private:
char _mqttUser[31] = {0};
char _mqttPass[31] = {0};
char _mqttPresencePrefix[181] = {0};
char _maintenancePathPrefix[181] = {0};
int _networkTimeout = 0;
std::vector<MqttReceiver*> _mqttReceivers;
char* _presenceCsv = nullptr;
@@ -72,4 +73,5 @@ private:
std::map<String, String> _initTopics;
unsigned long _lastConnectedTs = 0;
unsigned long _lastMaintenancePublish = 0;
};

View File

@@ -173,7 +173,8 @@ void setup()
// const NetworkDeviceType networkDevice = NetworkDeviceType::WiFi;
const NetworkDeviceType networkDevice = digitalRead(NETWORK_SELECT) == HIGH ? NetworkDeviceType::WiFi : NetworkDeviceType::W5500;
network = new Network(networkDevice, preferences);
const String mqttLockPath = preferences->getString(preference_mqtt_lock_path);
network = new Network(networkDevice, preferences, mqttLockPath);
network->initialize();
networkLock = new NetworkLock(network, preferences);
networkLock->initialize();

View File

@@ -19,6 +19,7 @@ public:
virtual void update() = 0;
virtual bool isConnected() = 0;
virtual int8_t signalStrength() = 0;
protected:
const uint16_t _mqttMaxBufferSize = 6144;

View File

@@ -165,3 +165,8 @@ void W5500Device::update()
{
_maintainResult = Ethernet.maintain();
}
int8_t W5500Device::signalStrength()
{
return 127;
}

View File

@@ -19,6 +19,8 @@ public:
virtual bool isConnected();
int8_t signalStrength() override;
virtual PubSubClient *mqttClient();
private:

View File

@@ -130,3 +130,8 @@ void WifiDevice::onDisconnected()
ESP.restart();
}
}
int8_t WifiDevice::signalStrength()
{
return WiFi.RSSI();
}

View File

@@ -20,6 +20,8 @@ public:
virtual bool isConnected();
int8_t signalStrength() override;
virtual PubSubClient *mqttClient();
private: