publish lock and opener rssi

This commit is contained in:
technyon
2022-09-10 10:59:10 +02:00
parent 72b712690f
commit b8d32914ee
10 changed files with 41 additions and 1 deletions

View File

@@ -18,6 +18,7 @@
#define mqtt_topic_lock_action_command_result "/lock/commandResult"
#define mqtt_topic_lock_door_sensor_state "/lock/doorSensorState"
#define mqtt_topic_lock_action "/lock/action"
#define mqtt_topic_lock_rssi "/lock/rssi"
#define mqtt_topic_config_button_enabled "/configuration/buttonEnabled"
#define mqtt_topic_config_led_enabled "/configuration/ledEnabled"

View File

@@ -364,6 +364,11 @@ void NetworkLock::publishAdvancedConfig(const NukiLock::AdvancedConfig &config)
publishBool(mqtt_topic_config_auto_lock, config.autoLockEnabled == 1);
}
void NetworkLock::publishRssi(const int& rssi)
{
publishInt(mqtt_topic_lock_rssi, rssi);
}
void NetworkLock::publishKeypad(const std::list<NukiLock::KeypadEntry>& entries, uint maxKeypadCodeCount)
{
uint index = 0;

View File

@@ -27,6 +27,7 @@ public:
void publishBatteryReport(const NukiLock::BatteryReport& batteryReport);
void publishConfig(const NukiLock::Config& config);
void publishAdvancedConfig(const NukiLock::AdvancedConfig& config);
void publishRssi(const int& rssi);
void publishHASSConfig(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState);
void removeHASSConfig(char* uidString);
void publishKeypad(const std::list<NukiLock::KeypadEntry>& entries, uint maxKeypadCodeCount);

View File

@@ -360,6 +360,11 @@ void NetworkOpener::publishAdvancedConfig(const NukiOpener::AdvancedConfig &conf
publishUInt(mqtt_topic_config_sound_level, config.soundLevel);
}
void NetworkOpener::publishRssi(const int &rssi)
{
publishInt(mqtt_topic_lock_rssi, rssi);
}
void NetworkOpener::publishHASSConfig(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState)
{
_network->publishHASSConfig(deviceType, baseTopic, name, uidString, lockAction, unlockAction, openAction, lockedState, unlockedState);
@@ -441,3 +446,4 @@ bool NetworkOpener::comparePrefixedPath(const char *fullPath, const char *subPat
buildMqttPath(subPath, prefixedPath);
return strcmp(fullPath, prefixedPath) == 0;
}

View File

@@ -28,6 +28,7 @@ public:
void publishBatteryReport(const NukiOpener::BatteryReport& batteryReport);
void publishConfig(const NukiOpener::Config& config);
void publishAdvancedConfig(const NukiOpener::AdvancedConfig& config);
void publishRssi(const int& rssi);
void publishHASSConfig(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState);
void removeHASSConfig(char* uidString);

View File

@@ -104,6 +104,17 @@ void NukiOpenerWrapper::update()
_nextConfigUpdateTs = ts + _intervalConfig * 1000;
updateConfig();
}
if(_nextRssiTs == 0 || ts > _nextRssiTs)
{
_nextRssiTs = ts + 3000;
int rssi = _nukiOpener.getRssi();
if(rssi != _lastRssi)
{
_network->publishRssi(rssi);
_lastRssi = rssi;
}
}
if(_nextLockAction != (NukiOpener::LockAction)0xff)
{

View File

@@ -73,5 +73,7 @@ private:
unsigned long _nextBatteryReportTs = 0;
unsigned long _nextConfigUpdateTs = 0;
unsigned long _nextPairTs = 0;
unsigned long _nextRssiTs = 0;
unsigned long _lastRssi = 0;
NukiOpener::LockAction _nextLockAction = (NukiOpener::LockAction)0xff;
};

View File

@@ -114,6 +114,17 @@ void NukiWrapper::update()
_nextConfigUpdateTs = ts + _intervalConfig * 1000;
updateConfig();
}
if(_nextRssiTs == 0 || ts > _nextRssiTs)
{
_nextRssiTs = ts + 3000;
int rssi = _nukiLock.getRssi();
if(rssi != _lastRssi)
{
_network->publishRssi(rssi);
_lastRssi = rssi;
}
}
if(_hasKeypad && _keypadEnabled && (_nextKeypadUpdateTs == 0 || ts > _nextKeypadUpdateTs))
{
_nextKeypadUpdateTs = ts + _intervalKeypad * 1000;

View File

@@ -84,5 +84,7 @@ private:
unsigned long _nextBatteryReportTs = 0;
unsigned long _nextConfigUpdateTs = 0;
unsigned long _nextKeypadUpdateTs = 0;
unsigned long _nextRssiTs = 0;
unsigned long _lastRssi = 0;
NukiLock::LockAction _nextLockAction = (NukiLock::LockAction)0xff;
};