Enhance config and keyturner states
This commit is contained in:
Submodule lib/nuki_ble updated: a7673b41f2...96774f55de
@@ -5,7 +5,7 @@
|
|||||||
#define NUKI_HUB_VERSION "9.07"
|
#define NUKI_HUB_VERSION "9.07"
|
||||||
#define NUKI_HUB_VERSION_INT (uint32_t)907
|
#define NUKI_HUB_VERSION_INT (uint32_t)907
|
||||||
#define NUKI_HUB_BUILD "unknownbuildnr"
|
#define NUKI_HUB_BUILD "unknownbuildnr"
|
||||||
#define NUKI_HUB_DATE "2025-01-06"
|
#define NUKI_HUB_DATE "2025-01-07"
|
||||||
|
|
||||||
#define GITHUB_LATEST_RELEASE_URL (char*)"https://github.com/technyon/nuki_hub/releases/latest"
|
#define GITHUB_LATEST_RELEASE_URL (char*)"https://github.com/technyon/nuki_hub/releases/latest"
|
||||||
#define GITHUB_OTA_MANIFEST_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/manifest.json"
|
#define GITHUB_OTA_MANIFEST_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/manifest.json"
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ void NukiNetworkLock::initialize()
|
|||||||
bool NukiNetworkLock::update()
|
bool NukiNetworkLock::update()
|
||||||
{
|
{
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
|
|
||||||
if(_nukiOfficial->hasOffStateToPublish())
|
if(_nukiOfficial->hasOffStateToPublish())
|
||||||
{
|
{
|
||||||
publishState(_nukiOfficial->getOffStateToPublish());
|
publishState(_nukiOfficial->getOffStateToPublish());
|
||||||
@@ -182,7 +182,7 @@ bool NukiNetworkLock::update()
|
|||||||
|
|
||||||
_offConnected = _nukiOfficial->getOffConnected();
|
_offConnected = _nukiOfficial->getOffConnected();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -420,7 +420,7 @@ void NukiNetworkLock::publishKeyTurnerState(const NukiLock::KeyTurnerState& keyT
|
|||||||
json["lock_state"] = str;
|
json["lock_state"] = str;
|
||||||
}
|
}
|
||||||
|
|
||||||
json["lockngo_state"] = (keyTurnerState.lockNgoTimer == 0 ? 0 : 1);
|
json["lockngo_state"] = keyTurnerState.lockNgoTimer;
|
||||||
|
|
||||||
memset(&str, 0, sizeof(str));
|
memset(&str, 0, sizeof(str));
|
||||||
|
|
||||||
@@ -492,10 +492,10 @@ void NukiNetworkLock::publishKeyTurnerState(const NukiLock::KeyTurnerState& keyT
|
|||||||
|
|
||||||
json["door_sensor_state"] = str;
|
json["door_sensor_state"] = str;
|
||||||
|
|
||||||
bool critical = (keyTurnerState.criticalBatteryState & 0b00000001) > 0;
|
bool critical = (keyTurnerState.criticalBatteryState & 1) == 1;
|
||||||
bool charging = (keyTurnerState.criticalBatteryState & 0b00000010) > 0;
|
bool charging = (keyTurnerState.criticalBatteryState & 2) == 2;
|
||||||
uint8_t level = (keyTurnerState.criticalBatteryState & 0b11111100) >> 1;
|
uint8_t level = ((keyTurnerState.criticalBatteryState & 0b11111100) >> 1);
|
||||||
bool keypadCritical = (keyTurnerState.accessoryBatteryState & (1 << 7)) != 0 ? (keyTurnerState.accessoryBatteryState & (1 << 6)) != 0 : false;
|
bool keypadCritical = (keyTurnerState.accessoryBatteryState & 1) == 1 ? (keyTurnerState.accessoryBatteryState & 3) == 3 : false;
|
||||||
|
|
||||||
jsonBattery["critical"] = critical ? "1" : "0";
|
jsonBattery["critical"] = critical ? "1" : "0";
|
||||||
jsonBattery["charging"] = charging ? "1" : "0";
|
jsonBattery["charging"] = charging ? "1" : "0";
|
||||||
@@ -514,6 +514,15 @@ void NukiNetworkLock::publishKeyTurnerState(const NukiLock::KeyTurnerState& keyT
|
|||||||
_nukiPublisher->publishBool(mqtt_topic_battery_keypad_critical, keypadCritical, true);
|
_nukiPublisher->publishBool(mqtt_topic_battery_keypad_critical, keypadCritical, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool doorSensorCritical = (keyTurnerState.accessoryBatteryState & 4) == 4 ? (keyTurnerState.accessoryBatteryState & 12) == 12 : false;
|
||||||
|
|
||||||
|
jsonBattery["doorSensorCritical"] = doorSensorCritical ? "1" : "0";
|
||||||
|
|
||||||
|
if((_firstTunerStatePublish || keyTurnerState.accessoryBatteryState != lastKeyTurnerState.accessoryBatteryState) && !_disableNonJSON)
|
||||||
|
{
|
||||||
|
_nukiPublisher->publishBool(mqtt_topic_battery_doorsensor_critical, doorSensorCritical, true);
|
||||||
|
}
|
||||||
|
|
||||||
serializeJson(jsonBattery, _buffer, _bufferSize);
|
serializeJson(jsonBattery, _buffer, _bufferSize);
|
||||||
_nukiPublisher->publishString(mqtt_topic_battery_basic_json, _buffer, true);
|
_nukiPublisher->publishString(mqtt_topic_battery_basic_json, _buffer, true);
|
||||||
}
|
}
|
||||||
@@ -523,6 +532,43 @@ void NukiNetworkLock::publishKeyTurnerState(const NukiLock::KeyTurnerState& keyT
|
|||||||
json["door_sensor_state"] = str;
|
json["door_sensor_state"] = str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (keyTurnerState.network > -1)
|
||||||
|
{
|
||||||
|
json["remoteAccessEnabled"] = ((keyTurnerState.network & 1) == 1) ? 1 : 0;
|
||||||
|
json["bridgePaired"] = (((keyTurnerState.network >> 1) & 1) == 1) ? 1 : 0;
|
||||||
|
json["sseConnectedViaWifi"] = (((keyTurnerState.network >> 2) & 1) == 1) ? 1 : 0;
|
||||||
|
json["sseConnectionEstablished"] = (((keyTurnerState.network >> 3) & 1) == 1) ? 1 : 0;
|
||||||
|
json["isSseConnectedViaThread"] = (((keyTurnerState.network >> 4) & 1) == 1) ? 1 : 0;
|
||||||
|
json["threadSseUplinkEnabledByUser"] = (((keyTurnerState.network >> 5) & 1) == 1) ? 1 : 0;
|
||||||
|
json["nat64AvailableViaThread"] = (((keyTurnerState.network >> 6) & 1) == 1) ? 1 : 0;
|
||||||
|
}
|
||||||
|
if (keyTurnerState.bleConnectionStrength > -1)
|
||||||
|
{
|
||||||
|
json["bleConnectionStrength"] = keyTurnerState.bleConnectionStrength;
|
||||||
|
}
|
||||||
|
if (keyTurnerState.wifiConnectionStrength > -1)
|
||||||
|
{
|
||||||
|
json["wifiConnectionStrength"] = keyTurnerState.wifiConnectionStrength;
|
||||||
|
}
|
||||||
|
if (keyTurnerState.wifi > -1)
|
||||||
|
{
|
||||||
|
json["wifiStatus"] = (keyTurnerState.wifi & 3);
|
||||||
|
json["sseStatus"] = ((keyTurnerState.wifi >> 2) & 3);
|
||||||
|
json["wifiQuality"] = ((keyTurnerState.wifi >> 4) & 15);
|
||||||
|
}
|
||||||
|
if (keyTurnerState.mqtt > -1)
|
||||||
|
{
|
||||||
|
json["mqttStatus"] = (keyTurnerState.mqtt & 3);
|
||||||
|
json["mqttConnectionChannel"] = ((keyTurnerState.mqtt >> 2) & 1);
|
||||||
|
}
|
||||||
|
if (keyTurnerState.thread > -1)
|
||||||
|
{
|
||||||
|
json["threadConnectionStatus"] = (keyTurnerState.thread & 3);
|
||||||
|
json["threadSseStatus"] = ((keyTurnerState.thread >> 2) & 3);
|
||||||
|
json["isCommissioningModeActive"] = (keyTurnerState.thread & 16) != 0 ? 1 : 0;
|
||||||
|
json["isWifiDisabledBecauseOfThread"] = (keyTurnerState.thread & 32) != 0 ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
json["auth_id"] = getAuthId();
|
json["auth_id"] = getAuthId();
|
||||||
json["auth_name"] = getAuthName();
|
json["auth_name"] = getAuthName();
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ void NukiNetworkOpener::initialize()
|
|||||||
_network->subscribe(_mqttPath, mqtt_topic_query_config);
|
_network->subscribe(_mqttPath, mqtt_topic_query_config);
|
||||||
_network->subscribe(_mqttPath, mqtt_topic_query_lockstate);
|
_network->subscribe(_mqttPath, mqtt_topic_query_lockstate);
|
||||||
_network->subscribe(_mqttPath, mqtt_topic_query_battery);
|
_network->subscribe(_mqttPath, mqtt_topic_query_battery);
|
||||||
|
|
||||||
_network->initTopic(_mqttPath, mqtt_topic_keypad_json_action, "--");
|
_network->initTopic(_mqttPath, mqtt_topic_keypad_json_action, "--");
|
||||||
_network->initTopic(_mqttPath, mqtt_topic_timecontrol_action, "--");
|
_network->initTopic(_mqttPath, mqtt_topic_timecontrol_action, "--");
|
||||||
_network->initTopic(_mqttPath, mqtt_topic_auth_action, "--");
|
_network->initTopic(_mqttPath, mqtt_topic_auth_action, "--");
|
||||||
@@ -400,17 +400,7 @@ void NukiNetworkOpener::publishKeyTurnerState(const NukiOpener::OpenerState& key
|
|||||||
|
|
||||||
json["lock_completion_status"] = str;
|
json["lock_completion_status"] = str;
|
||||||
|
|
||||||
memset(&str, 0, sizeof(str));
|
bool critical = (keyTurnerState.criticalBatteryState & 1);
|
||||||
NukiOpener::doorSensorStateToString(keyTurnerState.doorSensorState, str);
|
|
||||||
|
|
||||||
if(_firstTunerStatePublish || keyTurnerState.doorSensorState != lastKeyTurnerState.doorSensorState)
|
|
||||||
{
|
|
||||||
_nukiPublisher->publishString(mqtt_topic_lock_door_sensor_state, str, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
json["door_sensor_state"] = str;
|
|
||||||
|
|
||||||
bool critical = (keyTurnerState.criticalBatteryState & 0b00000001) > 0;
|
|
||||||
jsonBattery["critical"] = critical ? "1" : "0";
|
jsonBattery["critical"] = critical ? "1" : "0";
|
||||||
|
|
||||||
if((_firstTunerStatePublish || keyTurnerState.criticalBatteryState != lastKeyTurnerState.criticalBatteryState) && !_disableNonJSON)
|
if((_firstTunerStatePublish || keyTurnerState.criticalBatteryState != lastKeyTurnerState.criticalBatteryState) && !_disableNonJSON)
|
||||||
@@ -418,6 +408,14 @@ void NukiNetworkOpener::publishKeyTurnerState(const NukiOpener::OpenerState& key
|
|||||||
_nukiPublisher->publishBool(mqtt_topic_battery_critical, critical, true);
|
_nukiPublisher->publishBool(mqtt_topic_battery_critical, critical, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool keypadCritical = (keyTurnerState.accessoryBatteryState & 1) == 1 ? (keyTurnerState.accessoryBatteryState & 3) == 3 : false;
|
||||||
|
jsonBattery["keypadCritical"] = keypadCritical ? "1" : "0";
|
||||||
|
|
||||||
|
if((_firstTunerStatePublish || keyTurnerState.accessoryBatteryState != lastKeyTurnerState.accessoryBatteryState) && !_disableNonJSON)
|
||||||
|
{
|
||||||
|
_nukiPublisher->publishBool(mqtt_topic_battery_keypad_critical, keypadCritical, true);
|
||||||
|
}
|
||||||
|
|
||||||
json["auth_id"] = _authId;
|
json["auth_id"] = _authId;
|
||||||
json["auth_name"] = _authName;
|
json["auth_name"] = _authName;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user