diff --git a/MqttTopics.h b/MqttTopics.h index ee80b27..baac76f 100644 --- a/MqttTopics.h +++ b/MqttTopics.h @@ -7,6 +7,7 @@ #define mqtt_topic_battery_drain "/battery/drain" #define mqtt_topic_battery_max_turn_current "/battery/maxTurnCurrent" #define mqtt_topic_battery_lock_distance "/battery/lockDistance" +#define mqtt_topic_battery_keypad_critical "/battery/keypadCritical" #define mqtt_topic_lock_state "/lock/state" #define mqtt_topic_lock_binary_state "/lock/binaryState" diff --git a/NetworkLock.cpp b/NetworkLock.cpp index 252224d..f273668 100644 --- a/NetworkLock.cpp +++ b/NetworkLock.cpp @@ -202,6 +202,17 @@ void NetworkLock::publishKeyTurnerState(const NukiLock::KeyTurnerState& keyTurne publishInt(mqtt_topic_battery_level, level); } + if(_firstTunerStatePublish || keyTurnerState.accessoryBatteryState != lastKeyTurnerState.accessoryBatteryState) + { + if ((keyTurnerState.accessoryBatteryState & (1 << 7)) != 0) { + publishBool(mqtt_topic_battery_keypad_critical, (keyTurnerState.accessoryBatteryState & (1 << 6)) != 0); + } + else + { + publishBool(mqtt_topic_battery_keypad_critical, false); + } + } + _firstTunerStatePublish = false; }