add astylerc and apply code formatting

This commit is contained in:
technyon
2024-10-20 14:03:18 +02:00
parent a149f2e6b6
commit eb4db32b89
17 changed files with 5755 additions and 2914 deletions

2
.astylerc Normal file
View File

@@ -0,0 +1,2 @@
--style=allman
--add-braces

View File

@@ -221,7 +221,10 @@ void Gpio::loadPinConfiguration()
if(std::find(disabledPins.begin(), disabledPins.end(), entry.pin) == disabledPins.end())
{
if(entry.role == PinRole::Ethernet) entry.role = PinRole::Disabled;
if(entry.role == PinRole::Ethernet)
{
entry.role = PinRole::Disabled;
}
entry.role = (PinRole) serialized[(i * 2 + 1)];
Log->println("Not found in Ethernet disabled pins");
Log->print(F("Role: "));
@@ -234,7 +237,10 @@ void Gpio::loadPinConfiguration()
Log->print(F("Role: "));
Log->println(getRoleDescription(entry.role));
}
if(entry.role != PinRole::Disabled) _pinConfiguration.push_back(entry);
if(entry.role != PinRole::Disabled)
{
_pinConfiguration.push_back(entry);
}
}
}
@@ -327,7 +333,11 @@ const std::vector<int> Gpio::getDisabledPins() const
Log->print(F("GPIO Ethernet disabled pins:"));
for_each_n(disabledPins.begin(), disabledPins.size(),
[](int x) { Log->print(" "); Log->print(x); });
[](int x)
{
Log->print(" ");
Log->print(x);
});
Log->println();
return disabledPins;
}
@@ -486,7 +496,8 @@ GpioAction Gpio::getGpioAction(const PinRole &role) const
case PinRole::OutputHighRtoOrCmActive:
default:
return GpioAction::None;
}}
}
}
void Gpio::getConfigurationText(String& text, const std::vector<PinEntry>& pinConfiguration, const String& linebreak) const

File diff suppressed because it is too large Load Diff

View File

@@ -201,21 +201,26 @@ void NukiNetworkLock::onMqttDataReceived(char* topic, int topic_len, char* data,
JsonDocument doc;
NetworkClientSecure *client = new NetworkClientSecure;
if (client) {
if (client)
{
client->setCACertBundle(x509_crt_imported_bundle_bin_start, x509_crt_imported_bundle_bin_end - x509_crt_imported_bundle_bin_start);
{
HTTPClient https;
https.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS);
https.useHTTP10(true);
if (https.begin(*client, GITHUB_OTA_MANIFEST_URL)) {
if (https.begin(*client, GITHUB_OTA_MANIFEST_URL))
{
int httpResponseCode = https.GET();
if (httpResponseCode == HTTP_CODE_OK || httpResponseCode == HTTP_CODE_MOVED_PERMANENTLY)
{
DeserializationError jsonError = deserializeJson(doc, https.getStream());
if (!jsonError) { otaManifestSuccess = true; }
if (!jsonError)
{
otaManifestSuccess = true;
}
}
}
https.end();
@@ -296,18 +301,27 @@ void NukiNetworkLock::onMqttDataReceived(char* topic, int topic_len, char* data,
else if(comparePrefixedPath(topic, mqtt_topic_webserver_action))
{
if(strcmp(data, "") == 0 ||
strcmp(data, "--") == 0) return;
strcmp(data, "--") == 0)
{
return;
}
if(strcmp(data, "1") == 0)
{
if(_preferences->getBool(preference_webserver_enabled, true) || forceEnableWebServer) return;
if(_preferences->getBool(preference_webserver_enabled, true) || forceEnableWebServer)
{
return;
}
Log->println(F("Webserver enabled, restarting."));
_preferences->putBool(preference_webserver_enabled, true);
}
else if (strcmp(data, "0") == 0)
{
if(!_preferences->getBool(preference_webserver_enabled, true) && !forceEnableWebServer) return;
if(!_preferences->getBool(preference_webserver_enabled, true) && !forceEnableWebServer)
{
return;
}
Log->println(F("Webserver disabled, restarting."));
_preferences->putBool(preference_webserver_enabled, false);
}
@@ -320,9 +334,15 @@ void NukiNetworkLock::onMqttDataReceived(char* topic, int topic_len, char* data,
else if(comparePrefixedPath(topic, mqtt_topic_lock_log_rolling_last))
{
if(strcmp(data, "") == 0 ||
strcmp(data, "--") == 0) return;
strcmp(data, "--") == 0)
{
return;
}
if(atoi(data) > 0 && atoi(data) > _lastRollingLog) _lastRollingLog = atoi(data);
if(atoi(data) > 0 && atoi(data) > _lastRollingLog)
{
_lastRollingLog = atoi(data);
}
}
if(_nukiOfficial->getOffEnabled())
@@ -346,7 +366,10 @@ void NukiNetworkLock::onMqttDataReceived(char* topic, int topic_len, char* data,
strcmp(data, "ack") == 0 ||
strcmp(data, "unknown_action") == 0 ||
strcmp(data, "denied") == 0 ||
strcmp(data, "error") == 0) return;
strcmp(data, "error") == 0)
{
return;
}
Log->print(F("Lock action received: "));
Log->println(data);
@@ -379,7 +402,10 @@ void NukiNetworkLock::onMqttDataReceived(char* topic, int topic_len, char* data,
{
if(_keypadCommandReceivedReceivedCallback != nullptr)
{
if(strcmp(data, "--") == 0) return;
if(strcmp(data, "--") == 0)
{
return;
}
_keypadCommandReceivedReceivedCallback(data, _keypadCommandId, _keypadCommandName, _keypadCommandCode, _keypadCommandEnabled);
@@ -439,7 +465,10 @@ void NukiNetworkLock::onMqttDataReceived(char* topic, int topic_len, char* data,
if(comparePrefixedPath(topic, mqtt_topic_config_action))
{
if(strcmp(data, "") == 0 || strcmp(data, "--") == 0) return;
if(strcmp(data, "") == 0 || strcmp(data, "--") == 0)
{
return;
}
if(_configUpdateReceivedCallback != NULL)
{
@@ -451,7 +480,10 @@ void NukiNetworkLock::onMqttDataReceived(char* topic, int topic_len, char* data,
if(comparePrefixedPath(topic, mqtt_topic_keypad_json_action))
{
if(strcmp(data, "") == 0 || strcmp(data, "--") == 0) return;
if(strcmp(data, "") == 0 || strcmp(data, "--") == 0)
{
return;
}
if(_keypadJsonCommandReceivedReceivedCallback != NULL)
{
@@ -463,7 +495,10 @@ void NukiNetworkLock::onMqttDataReceived(char* topic, int topic_len, char* data,
if(comparePrefixedPath(topic, mqtt_topic_timecontrol_action))
{
if(strcmp(data, "") == 0 || strcmp(data, "--") == 0) return;
if(strcmp(data, "") == 0 || strcmp(data, "--") == 0)
{
return;
}
if(_timeControlCommandReceivedReceivedCallback != NULL)
{
@@ -475,7 +510,10 @@ void NukiNetworkLock::onMqttDataReceived(char* topic, int topic_len, char* data,
if(comparePrefixedPath(topic, mqtt_topic_auth_action))
{
if(strcmp(data, "") == 0 || strcmp(data, "--") == 0) return;
if(strcmp(data, "") == 0 || strcmp(data, "--") == 0)
{
return;
}
if(_authCommandReceivedReceivedCallback != NULL)
{
@@ -686,7 +724,10 @@ void NukiNetworkLock::publishAuthorizationInfo(const std::list<NukiLock::LogEntr
{
int sizeName = sizeof(log.name);
memcpy(authName, log.name, sizeName);
if(authName[sizeName - 1] != '\0') authName[sizeName] = '\0';
if(authName[sizeName - 1] != '\0')
{
authName[sizeName] = '\0';
}
if(log.index > authIndex)
{
@@ -764,8 +805,14 @@ void NukiNetworkLock::publishAuthorizationInfo(const std::list<NukiLock::LogEntr
memset(str, 0, sizeof(str));
if(log.data[2] == 9) entry["completionStatus"] = "notAuthorized";
else if (log.data[2] == 224) entry["completionStatus"] = "invalidCode";
if(log.data[2] == 9)
{
entry["completionStatus"] = "notAuthorized";
}
else if (log.data[2] == 224)
{
entry["completionStatus"] = "invalidCode";
}
else
{
NukiLock::completionStatusToString((NukiLock::CompletionStatus)log.data[2], str);
@@ -804,8 +851,14 @@ void NukiNetworkLock::publishAuthorizationInfo(const std::list<NukiLock::LogEntr
serializeJson(json, _buffer, _bufferSize);
if(latest) publishString(mqtt_topic_lock_log_latest, _buffer, true);
else publishString(mqtt_topic_lock_log, _buffer, true);
if(latest)
{
publishString(mqtt_topic_lock_log_latest, _buffer, true);
}
else
{
publishString(mqtt_topic_lock_log, _buffer, true);
}
if(authIndex > 0)
{
@@ -1013,7 +1066,10 @@ void NukiNetworkLock::publishKeypad(const std::list<NukiLock::KeypadEntry>& entr
jsonEntry["codeId"] = entry.codeId;
if(publishCode) jsonEntry["code"] = entry.code;
if(publishCode)
{
jsonEntry["code"] = entry.code;
}
jsonEntry["enabled"] = entry.enabled;
jsonEntry["name"] = entry.name;
char createdDT[20];
@@ -1034,7 +1090,8 @@ void NukiNetworkLock::publishKeypad(const std::list<NukiLock::KeypadEntry>& entr
uint8_t allowedWeekdaysInt = entry.allowedWeekdays;
JsonArray weekdays = jsonEntry["allowedWeekdays"].to<JsonArray>();
while(allowedWeekdaysInt > 0) {
while(allowedWeekdaysInt > 0)
{
if(allowedWeekdaysInt >= 64)
{
weekdays.add("mon");
@@ -1123,12 +1180,14 @@ void NukiNetworkLock::publishKeypad(const std::list<NukiLock::KeypadEntry>& entr
"",
"diagnostic",
String("~") + mqtt_topic_keypad_json_action,
{ { (char*)"json_attr_t", (char*)basePathPrefixChr },
{
{ (char*)"json_attr_t", (char*)basePathPrefixChr },
{ (char*)"pl_on", (char*)enaCommand.c_str() },
{ (char*)"pl_off", (char*)disCommand.c_str() },
{ (char*)"val_tpl", (char*)"{{value_json.enabled}}" },
{ (char*)"stat_on", (char*)"1" },
{ (char*)"stat_off", (char*)"0" }});
{ (char*)"stat_off", (char*)"0" }
});
}
++index;
@@ -1202,7 +1261,10 @@ void NukiNetworkLock::publishKeypad(const std::list<NukiLock::KeypadEntry>& entr
void NukiNetworkLock::publishKeypadEntry(const String topic, NukiLock::KeypadEntry entry)
{
if(_disableNonJSON) return;
if(_disableNonJSON)
{
return;
}
char codeName[sizeof(entry.name) + 1];
memset(codeName, 0, sizeof(codeName));
@@ -1245,7 +1307,8 @@ void NukiNetworkLock::publishTimeControl(const std::list<NukiLock::TimeControlEn
uint8_t weekdaysInt = entry.weekdays;
JsonArray weekdays = jsonEntry["weekdays"].to<JsonArray>();
while(weekdaysInt > 0) {
while(weekdaysInt > 0)
{
if(weekdaysInt >= 64)
{
weekdays.add("mon");
@@ -1331,12 +1394,14 @@ void NukiNetworkLock::publishTimeControl(const std::list<NukiLock::TimeControlEn
"",
"diagnostic",
String("~") + mqtt_topic_timecontrol_action,
{ { (char*)"json_attr_t", (char*)basePathPrefixChr },
{
{ (char*)"json_attr_t", (char*)basePathPrefixChr },
{ (char*)"pl_on", (char*)enaCommand.c_str() },
{ (char*)"pl_off", (char*)disCommand.c_str() },
{ (char*)"val_tpl", (char*)"{{value_json.enabled}}" },
{ (char*)"stat_on", (char*)"1" },
{ (char*)"stat_off", (char*)"0" }});
{ (char*)"stat_off", (char*)"0" }
});
}
++index;
@@ -1393,7 +1458,8 @@ void NukiNetworkLock::publishAuth(const std::list<NukiLock::AuthorizationEntry>&
uint8_t allowedWeekdaysInt = entry.allowedWeekdays;
JsonArray weekdays = jsonEntry["allowedWeekdays"].to<JsonArray>();
while(allowedWeekdaysInt > 0) {
while(allowedWeekdaysInt > 0)
{
if(allowedWeekdaysInt >= 64)
{
weekdays.add("mon");
@@ -1478,12 +1544,14 @@ void NukiNetworkLock::publishAuth(const std::list<NukiLock::AuthorizationEntry>&
"",
"diagnostic",
String("~") + mqtt_topic_auth_action,
{ { (char*)"json_attr_t", (char*)basePathPrefixChr },
{
{ (char*)"json_attr_t", (char*)basePathPrefixChr },
{ (char*)"pl_on", (char*)enaCommand.c_str() },
{ (char*)"pl_off", (char*)disCommand.c_str() },
{ (char*)"val_tpl", (char*)"{{value_json.enabled}}" },
{ (char*)"stat_on", (char*)"1" },
{ (char*)"stat_off", (char*)"0" }});
{ (char*)"stat_off", (char*)"0" }
});
}
++index;
@@ -1510,7 +1578,10 @@ void NukiNetworkLock::publishConfigCommandResult(const char* result)
void NukiNetworkLock::publishKeypadCommandResult(const char* result)
{
if(_disableNonJSON) return;
if(_disableNonJSON)
{
return;
}
publishString(mqtt_topic_keypad_command_result, result, true);
}
@@ -1551,7 +1622,10 @@ void NukiNetworkLock::setConfigUpdateReceivedCallback(void (*configUpdateReceive
void NukiNetworkLock::setKeypadCommandReceivedCallback(void (*keypadCommandReceivedReceivedCallback)(const char* command, const uint& id, const String& name, const String& code, const int& enabled))
{
if(_disableNonJSON) return;
if(_disableNonJSON)
{
return;
}
_keypadCommandReceivedReceivedCallback = keypadCommandReceivedReceivedCallback;
}
@@ -1719,8 +1793,10 @@ uint8_t NukiNetworkLock::queryCommands()
return qc;
}
void NukiNetworkLock::buttonPressActionToString(const NukiLock::ButtonPressAction btnPressAction, char* str) {
switch (btnPressAction) {
void NukiNetworkLock::buttonPressActionToString(const NukiLock::ButtonPressAction btnPressAction, char* str)
{
switch (btnPressAction)
{
case NukiLock::ButtonPressAction::NoAction:
strcpy(str, "No Action");
break;
@@ -1748,8 +1824,10 @@ void NukiNetworkLock::buttonPressActionToString(const NukiLock::ButtonPressActio
}
}
void NukiNetworkLock::homeKitStatusToString(const int hkstatus, char* str) {
switch (hkstatus) {
void NukiNetworkLock::homeKitStatusToString(const int hkstatus, char* str)
{
switch (hkstatus)
{
case 0:
strcpy(str, "Not Available");
break;
@@ -1768,8 +1846,10 @@ void NukiNetworkLock::homeKitStatusToString(const int hkstatus, char* str) {
}
}
void NukiNetworkLock::fobActionToString(const int fobact, char* str) {
switch (fobact) {
void NukiNetworkLock::fobActionToString(const int fobact, char* str)
{
switch (fobact)
{
case 0:
strcpy(str, "No Action");
break;

View File

@@ -149,9 +149,15 @@ void NukiNetworkOpener::onMqttDataReceived(char* topic, int topic_len, char* dat
if(comparePrefixedPath(topic, mqtt_topic_lock_log_rolling_last))
{
if(strcmp(data, "") == 0 ||
strcmp(data, "--") == 0) return;
strcmp(data, "--") == 0)
{
return;
}
if(atoi(data) > 0 && atoi(data) > _lastRollingLog) _lastRollingLog = atoi(data);
if(atoi(data) > 0 && atoi(data) > _lastRollingLog)
{
_lastRollingLog = atoi(data);
}
}
if(comparePrefixedPath(topic, mqtt_topic_lock_action))
@@ -161,7 +167,10 @@ void NukiNetworkOpener::onMqttDataReceived(char* topic, int topic_len, char* dat
strcmp(data, "ack") == 0 ||
strcmp(data, "unknown_action") == 0 ||
strcmp(data, "denied") == 0 ||
strcmp(data, "error") == 0) return;
strcmp(data, "error") == 0)
{
return;
}
Log->print(F("Opener action received: "));
Log->println(data);
@@ -194,7 +203,10 @@ void NukiNetworkOpener::onMqttDataReceived(char* topic, int topic_len, char* dat
{
if(_keypadCommandReceivedReceivedCallback != nullptr)
{
if(strcmp(data, "--") == 0) return;
if(strcmp(data, "--") == 0)
{
return;
}
_keypadCommandReceivedReceivedCallback(data, _keypadCommandId, _keypadCommandName, _keypadCommandCode, _keypadCommandEnabled);
@@ -254,7 +266,10 @@ void NukiNetworkOpener::onMqttDataReceived(char* topic, int topic_len, char* dat
if(comparePrefixedPath(topic, mqtt_topic_config_action))
{
if(strcmp(data, "") == 0 || strcmp(data, "--") == 0) return;
if(strcmp(data, "") == 0 || strcmp(data, "--") == 0)
{
return;
}
if(_configUpdateReceivedCallback != NULL)
{
@@ -266,7 +281,10 @@ void NukiNetworkOpener::onMqttDataReceived(char* topic, int topic_len, char* dat
if(comparePrefixedPath(topic, mqtt_topic_keypad_json_action))
{
if(strcmp(data, "") == 0 || strcmp(data, "--") == 0) return;
if(strcmp(data, "") == 0 || strcmp(data, "--") == 0)
{
return;
}
if(_keypadJsonCommandReceivedReceivedCallback != NULL)
{
@@ -278,7 +296,10 @@ void NukiNetworkOpener::onMqttDataReceived(char* topic, int topic_len, char* dat
if(comparePrefixedPath(topic, mqtt_topic_timecontrol_action))
{
if(strcmp(data, "") == 0 || strcmp(data, "--") == 0) return;
if(strcmp(data, "") == 0 || strcmp(data, "--") == 0)
{
return;
}
if(_timeControlCommandReceivedReceivedCallback != NULL)
{
@@ -290,7 +311,10 @@ void NukiNetworkOpener::onMqttDataReceived(char* topic, int topic_len, char* dat
if(comparePrefixedPath(topic, mqtt_topic_auth_action))
{
if(strcmp(data, "") == 0 || strcmp(data, "--") == 0) return;
if(strcmp(data, "") == 0 || strcmp(data, "--") == 0)
{
return;
}
if(_authCommandReceivedReceivedCallback != NULL)
{
@@ -329,7 +353,9 @@ void NukiNetworkOpener::publishKeyTurnerState(const NukiOpener::OpenerState& key
{
publishString(mqtt_topic_lock_continuous_mode, "on", true);
json["continuous_mode"] = 1;
} else {
}
else
{
publishString(mqtt_topic_lock_continuous_mode, "off", true);
json["continuous_mode"] = 0;
}
@@ -472,7 +498,10 @@ void NukiNetworkOpener::publishAuthorizationInfo(const std::list<NukiOpener::Log
{
int sizeName = sizeof(log.name);
memcpy(authName, log.name, sizeName);
if(authName[sizeName - 1] != '\0') authName[sizeName] = '\0';
if(authName[sizeName - 1] != '\0')
{
authName[sizeName] = '\0';
}
if(log.index > authIndex)
{
@@ -550,8 +579,14 @@ void NukiNetworkOpener::publishAuthorizationInfo(const std::list<NukiOpener::Log
memset(str, 0, sizeof(str));
if(log.data[2] == 9) entry["completionStatus"] = "notAuthorized";
else if (log.data[2] == 224) entry["completionStatus"] = "invalidCode";
if(log.data[2] == 9)
{
entry["completionStatus"] = "notAuthorized";
}
else if (log.data[2] == 224)
{
entry["completionStatus"] = "invalidCode";
}
else
{
NukiOpener::completionStatusToString((NukiOpener::CompletionStatus)log.data[2], str);
@@ -602,7 +637,8 @@ void NukiNetworkOpener::publishAuthorizationInfo(const std::list<NukiOpener::Log
break;
default:
entry["source"] = "Unknown";
break; }
break;
}
entry["geofence"] = log.data[2] == 1 ? "active" : "inactive";
entry["doorbellSuppression"] = log.data[3] == 1 ? "active" : "inactive";
@@ -625,8 +661,14 @@ void NukiNetworkOpener::publishAuthorizationInfo(const std::list<NukiOpener::Log
serializeJson(json, _buffer, _bufferSize);
if(latest) publishString(mqtt_topic_lock_log_latest, _buffer, true);
else publishString(mqtt_topic_lock_log, _buffer, true);
if(latest)
{
publishString(mqtt_topic_lock_log_latest, _buffer, true);
}
else
{
publishString(mqtt_topic_lock_log, _buffer, true);
}
if(authIndex > 0)
{
@@ -858,7 +900,10 @@ void NukiNetworkOpener::publishKeypad(const std::list<NukiLock::KeypadEntry>& en
jsonEntry["codeId"] = entry.codeId;
if(publishCode) jsonEntry["code"] = entry.code;
if(publishCode)
{
jsonEntry["code"] = entry.code;
}
jsonEntry["enabled"] = entry.enabled;
jsonEntry["name"] = entry.name;
char createdDT[20];
@@ -879,7 +924,8 @@ void NukiNetworkOpener::publishKeypad(const std::list<NukiLock::KeypadEntry>& en
uint8_t allowedWeekdaysInt = entry.allowedWeekdays;
JsonArray weekdays = jsonEntry["allowedWeekdays"].to<JsonArray>();
while(allowedWeekdaysInt > 0) {
while(allowedWeekdaysInt > 0)
{
if(allowedWeekdaysInt >= 64)
{
weekdays.add("mon");
@@ -968,12 +1014,14 @@ void NukiNetworkOpener::publishKeypad(const std::list<NukiLock::KeypadEntry>& en
"",
"diagnostic",
String("~") + mqtt_topic_keypad_json_action,
{ { (char*)"json_attr_t", (char*)basePathPrefixChr },
{
{ (char*)"json_attr_t", (char*)basePathPrefixChr },
{ (char*)"pl_on", (char*)enaCommand.c_str() },
{ (char*)"pl_off", (char*)disCommand.c_str() },
{ (char*)"val_tpl", (char*)"{{value_json.enabled}}" },
{ (char*)"stat_on", (char*)"1" },
{ (char*)"stat_off", (char*)"0" }});
{ (char*)"stat_off", (char*)"0" }
});
}
++index;
@@ -1062,7 +1110,8 @@ void NukiNetworkOpener::publishTimeControl(const std::list<NukiOpener::TimeContr
uint8_t weekdaysInt = entry.weekdays;
JsonArray weekdays = jsonEntry["weekdays"].to<JsonArray>();
while(weekdaysInt > 0) {
while(weekdaysInt > 0)
{
if(weekdaysInt >= 64)
{
weekdays.add("mon");
@@ -1146,12 +1195,14 @@ void NukiNetworkOpener::publishTimeControl(const std::list<NukiOpener::TimeContr
"",
"diagnostic",
String("~") + mqtt_topic_timecontrol_action,
{ { (char*)"json_attr_t", (char*)basePathPrefixChr },
{
{ (char*)"json_attr_t", (char*)basePathPrefixChr },
{ (char*)"pl_on", (char*)enaCommand.c_str() },
{ (char*)"pl_off", (char*)disCommand.c_str() },
{ (char*)"val_tpl", (char*)"{{value_json.enabled}}" },
{ (char*)"stat_on", (char*)"1" },
{ (char*)"stat_off", (char*)"0" }});
{ (char*)"stat_off", (char*)"0" }
});
}
++index;
@@ -1208,7 +1259,8 @@ void NukiNetworkOpener::publishAuth(const std::list<NukiOpener::AuthorizationEnt
uint8_t allowedWeekdaysInt = entry.allowedWeekdays;
JsonArray weekdays = jsonEntry["allowedWeekdays"].to<JsonArray>();
while(allowedWeekdaysInt > 0) {
while(allowedWeekdaysInt > 0)
{
if(allowedWeekdaysInt >= 64)
{
weekdays.add("mon");
@@ -1293,12 +1345,14 @@ void NukiNetworkOpener::publishAuth(const std::list<NukiOpener::AuthorizationEnt
"",
"diagnostic",
String("~") + mqtt_topic_auth_action,
{ { (char*)"json_attr_t", (char*)basePathPrefixChr },
{
{ (char*)"json_attr_t", (char*)basePathPrefixChr },
{ (char*)"pl_on", (char*)enaCommand.c_str() },
{ (char*)"pl_off", (char*)disCommand.c_str() },
{ (char*)"val_tpl", (char*)"{{value_json.enabled}}" },
{ (char*)"stat_on", (char*)"1" },
{ (char*)"stat_off", (char*)"0" }});
{ (char*)"stat_off", (char*)"0" }
});
}
++index;
@@ -1325,7 +1379,10 @@ void NukiNetworkOpener::publishConfigCommandResult(const char* result)
void NukiNetworkOpener::publishKeypadCommandResult(const char* result)
{
if(_disableNonJSON) return;
if(_disableNonJSON)
{
return;
}
publishString(mqtt_topic_keypad_command_result, result, true);
}
@@ -1361,7 +1418,10 @@ void NukiNetworkOpener::setConfigUpdateReceivedCallback(void (*configUpdateRecei
void NukiNetworkOpener::setKeypadCommandReceivedCallback(void (*keypadCommandReceivedReceivedCallback)(const char* command, const uint& id, const String& name, const String& code, const int& enabled))
{
if(_disableNonJSON) return;
if(_disableNonJSON)
{
return;
}
_keypadCommandReceivedReceivedCallback = keypadCommandReceivedReceivedCallback;
}
@@ -1423,7 +1483,10 @@ void NukiNetworkOpener::publishString(const char* topic, const char* value, bool
void NukiNetworkOpener::publishKeypadEntry(const String topic, NukiLock::KeypadEntry entry)
{
if(_disableNonJSON) return;
if(_disableNonJSON)
{
return;
}
char codeName[sizeof(entry.name) + 1];
memset(codeName, 0, sizeof(codeName));
@@ -1505,8 +1568,10 @@ uint8_t NukiNetworkOpener::queryCommands()
return qc;
}
void NukiNetworkOpener::buttonPressActionToString(const NukiOpener::ButtonPressAction btnPressAction, char* str) {
switch (btnPressAction) {
void NukiNetworkOpener::buttonPressActionToString(const NukiOpener::ButtonPressAction btnPressAction, char* str)
{
switch (btnPressAction)
{
case NukiOpener::ButtonPressAction::NoAction:
strcpy(str, "No Action");
break;
@@ -1537,8 +1602,10 @@ void NukiNetworkOpener::buttonPressActionToString(const NukiOpener::ButtonPressA
}
}
void NukiNetworkOpener::fobActionToString(const int fobact, char* str) {
switch (fobact) {
void NukiNetworkOpener::fobActionToString(const int fobact, char* str)
{
switch (fobact)
{
case 0:
strcpy(str, "No Action");
break;
@@ -1563,8 +1630,10 @@ void NukiNetworkOpener::fobActionToString(const int fobact, char* str) {
}
}
void NukiNetworkOpener::capabilitiesToString(const int capabilities, char* str) {
switch (capabilities) {
void NukiNetworkOpener::capabilitiesToString(const int capabilities, char* str)
{
switch (capabilities)
{
case 0:
strcpy(str, "Door opener");
break;
@@ -1580,8 +1649,10 @@ void NukiNetworkOpener::capabilitiesToString(const int capabilities, char* str)
}
}
void NukiNetworkOpener::operatingModeToString(const int opmode, char* str) {
switch (opmode) {
void NukiNetworkOpener::operatingModeToString(const int opmode, char* str)
{
switch (opmode)
{
case 0:
strcpy(str, "Generic door opener");
break;
@@ -1636,8 +1707,10 @@ void NukiNetworkOpener::operatingModeToString(const int opmode, char* str) {
}
}
void NukiNetworkOpener::doorbellSuppressionToString(const int dbsupr, char* str) {
switch (dbsupr) {
void NukiNetworkOpener::doorbellSuppressionToString(const int dbsupr, char* str)
{
switch (dbsupr)
{
case 0:
strcpy(str, "Off");
break;
@@ -1668,8 +1741,10 @@ void NukiNetworkOpener::doorbellSuppressionToString(const int dbsupr, char* str)
}
}
void NukiNetworkOpener::soundToString(const int sound, char* str) {
switch (sound) {
void NukiNetworkOpener::soundToString(const int sound, char* str)
{
switch (sound)
{
case 0:
strcpy(str, "No Sound");
break;

View File

@@ -136,7 +136,10 @@ void NukiOfficial::onOfficialUpdateReceived(const char *topic, const char *value
Log->print(F("Battery critical: "));
Log->println(offCritical);
if(!_disableNonJSON) _publisher->publishBool(mqtt_topic_battery_critical, offCritical, true);
if(!_disableNonJSON)
{
_publisher->publishBool(mqtt_topic_battery_critical, offCritical, true);
}
publishBatteryJson = true;
}
else if(strcmp(topic, mqtt_topic_official_batteryCharging) == 0)
@@ -146,7 +149,10 @@ void NukiOfficial::onOfficialUpdateReceived(const char *topic, const char *value
Log->print(F("Battery charging: "));
Log->println(offCharging);
if(!_disableNonJSON) _publisher->publishBool(mqtt_topic_battery_charging, offCharging, true);
if(!_disableNonJSON)
{
_publisher->publishBool(mqtt_topic_battery_charging, offCharging, true);
}
publishBatteryJson = true;
}
else if(strcmp(topic, mqtt_topic_official_batteryChargeState) == 0)
@@ -156,19 +162,28 @@ void NukiOfficial::onOfficialUpdateReceived(const char *topic, const char *value
Log->print(F("Battery level: "));
Log->println(offChargeState);
if(!_disableNonJSON) _publisher->publishInt(mqtt_topic_battery_level, offChargeState, true);
if(!_disableNonJSON)
{
_publisher->publishInt(mqtt_topic_battery_level, offChargeState, true);
}
publishBatteryJson = true;
}
else if(strcmp(topic, mqtt_topic_official_keypadBatteryCritical) == 0)
{
offKeypadCritical = (strcmp(value, "true") == 0 ? 1 : 0);
if(!_disableNonJSON) _publisher->publishBool(mqtt_topic_battery_keypad_critical, offKeypadCritical, true);
if(!_disableNonJSON)
{
_publisher->publishBool(mqtt_topic_battery_keypad_critical, offKeypadCritical, true);
}
publishBatteryJson = true;
}
else if(strcmp(topic, mqtt_topic_official_doorsensorBatteryCritical) == 0)
{
offDoorsensorCritical = (strcmp(value, "true") == 0 ? 1 : 0);
if(!_disableNonJSON) _publisher->publishBool(mqtt_topic_battery_doorsensor_critical, offDoorsensorCritical, true);
if(!_disableNonJSON)
{
_publisher->publishBool(mqtt_topic_battery_doorsensor_critical, offDoorsensorCritical, true);
}
publishBatteryJson = true;
}
else if(strcmp(topic, mqtt_topic_official_commandResponse) == 0)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -87,21 +87,25 @@ void ets_putc_handler(char c)
static size_t buf_pos = 0;
buf[buf_pos] = c;
buf_pos++;
if (c == '\n' || buf_pos == sizeof(buf)) {
if (c == '\n' || buf_pos == sizeof(buf))
{
write_fn(NULL, buf, buf_pos);
buf_pos = 0;
}
}
int _log_vprintf(const char *fmt, va_list args) {
int _log_vprintf(const char *fmt, va_list args)
{
int ret = vsnprintf(log_print_buffer, sizeof(log_print_buffer), fmt, args);
if (ret >= 0){
if (ret >= 0)
{
Log->write((uint8_t *)log_print_buffer, (size_t)ret);
}
return 0; //return vprintf(fmt, args);
}
void setReroute(){
void setReroute()
{
esp_log_set_vprintf(_log_vprintf);
if(preferences->getBool(preference_mqtt_log_enabled))
{
@@ -152,7 +156,10 @@ void networkTask(void *pvParameters)
setReroute();
}
#endif
if(connected && openerEnabled) networkOpener->update();
if(connected && openerEnabled)
{
networkOpener->update();
}
#endif
if((esp_timer_get_time() / 1000) - networkLoopTs > 120000)
@@ -263,14 +270,24 @@ uint8_t checkPartition()
Log->print(F("Partition subtype: "));
Log->println(running_partition->subtype);
if(running_partition->size == 1966080) return 0; //OLD PARTITION TABLE
else if(running_partition->subtype == ESP_PARTITION_SUBTYPE_APP_OTA_0) return 1; //NEW PARTITION TABLE, RUNNING MAIN APP
else return 2; //NEW PARTITION TABLE, RUNNING UPDATER APP
if(running_partition->size == 1966080)
{
return 0; //OLD PARTITION TABLE
}
else if(running_partition->subtype == ESP_PARTITION_SUBTYPE_APP_OTA_0)
{
return 1; //NEW PARTITION TABLE, RUNNING MAIN APP
}
else
{
return 2; //NEW PARTITION TABLE, RUNNING UPDATER APP
}
}
esp_err_t _http_event_handler(esp_http_client_event_t *evt)
{
switch (evt->event_id) {
switch (evt->event_id)
{
case HTTP_EVENT_ERROR:
Log->println("HTTP_EVENT_ERROR");
break;
@@ -315,14 +332,16 @@ void otaTask(void *pvParameter)
preferences->putString(preference_ota_main_url, "");
}
Log->println("Starting OTA task");
esp_http_client_config_t config = {
esp_http_client_config_t config =
{
.url = updateUrl.c_str(),
.event_handler = _http_event_handler,
.crt_bundle_attach = esp_crt_bundle_attach,
.keep_alive_enable = true,
};
esp_https_ota_config_t ota_config = {
esp_https_ota_config_t ota_config =
{
.http_config = &config,
};
Log->print(F("Attempting to download update from "));
@@ -334,19 +353,23 @@ void otaTask(void *pvParameter)
while (retryCount <= retryMax)
{
esp_err_t ret = esp_https_ota(&ota_config);
if (ret == ESP_OK) {
if (ret == ESP_OK)
{
Log->println("OTA Succeeded, Rebooting...");
esp_ota_set_boot_partition(esp_ota_get_next_update_partition(NULL));
restartEsp(RestartReason::OTACompleted);
break;
} else {
}
else
{
Log->println("Firmware upgrade failed, retrying in 5 seconds");
retryCount++;
esp_task_wdt_reset();
delay(5000);
continue;
}
while (1) {
while (1)
{
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
@@ -359,7 +382,8 @@ void otaTask(void *pvParameter)
void setupTasks(bool ota)
{
// configMAX_PRIORITIES is 25
esp_task_wdt_config_t twdt_config = {
esp_task_wdt_config_t twdt_config =
{
.timeout_ms = 300000,
.idle_core_mask = 0,
.trigger_panic = true,
@@ -408,7 +432,10 @@ void setup()
initializeRestartReason();
if((partitionType==1 && preferences->getString(preference_ota_updater_url, "").length() > 0) || (partitionType==2 && preferences->getString(preference_ota_main_url, "").length() > 0)) doOta = true;
if((partitionType==1 && preferences->getString(preference_ota_updater_url, "").length() > 0) || (partitionType==2 && preferences->getString(preference_ota_main_url, "").length() > 0))
{
doOta = true;
}
#ifndef NUKI_HUB_UPDATER
if(preferences->getBool(preference_enable_bootloop_reset, false))
@@ -423,9 +450,18 @@ void setup()
Log->print(F("Nuki Hub OTA build "));
Log->println();
if(preferences->getString(preference_updater_version, "") != NUKI_HUB_VERSION) preferences->putString(preference_updater_version, NUKI_HUB_VERSION);
if(preferences->getString(preference_updater_build, "") != NUKI_HUB_BUILD) preferences->putString(preference_updater_build, NUKI_HUB_BUILD);
if(preferences->getString(preference_updater_date, "") != NUKI_HUB_DATE) preferences->putString(preference_updater_date, NUKI_HUB_DATE);
if(preferences->getString(preference_updater_version, "") != NUKI_HUB_VERSION)
{
preferences->putString(preference_updater_version, NUKI_HUB_VERSION);
}
if(preferences->getString(preference_updater_build, "") != NUKI_HUB_BUILD)
{
preferences->putString(preference_updater_build, NUKI_HUB_BUILD);
}
if(preferences->getString(preference_updater_date, "") != NUKI_HUB_DATE)
{
preferences->putString(preference_updater_date, NUKI_HUB_DATE);
}
network = new NukiNetwork(preferences);
network->initialize();
@@ -436,7 +472,10 @@ void setup()
webCfgServer = new WebCfgServer(network, preferences, network->networkDeviceType() == NetworkDeviceType::WiFi, partitionType, psychicServer);
webCfgServer->initialize();
psychicServer->listen(80);
psychicServer->onNotFound([](PsychicRequest* request) { return request->redirect("/"); });
psychicServer->onNotFound([](PsychicRequest* request)
{
return request->redirect("/");
});
}
#else
Log->print(F("Nuki Hub version "));
@@ -522,7 +561,10 @@ void setup()
{
webCfgServer = new WebCfgServer(nuki, nukiOpener, network, gpio, preferences, network->networkDeviceType() == NetworkDeviceType::WiFi, partitionType, psychicServer);
webCfgServer->initialize();
psychicServer->onNotFound([](PsychicRequest* request) { return request->redirect("/"); });
psychicServer->onNotFound([](PsychicRequest* request)
{
return request->redirect("/");
});
}
/*
#ifdef DEBUG_NUKIHUB
@@ -540,8 +582,14 @@ void setup()
}
#endif
if(doOta) setupTasks(true);
else setupTasks(false);
if(doOta)
{
setupTasks(true);
}
else
{
setupTasks(false);
}
#ifdef DEBUG_NUKIHUB
Log->print("Task Name\tStatus\tPrio\tHWM\tTask\tAffinity\n");

View File

@@ -138,7 +138,8 @@ void EthernetDevice::update()
void EthernetDevice::onNetworkEvent(arduino_event_id_t event, arduino_event_info_t info)
{
switch (event) {
switch (event)
{
case ARDUINO_EVENT_ETH_START:
Log->println("ETH Started");
ETH.setHostname(_hostname.c_str());
@@ -212,7 +213,10 @@ bool EthernetDevice::isApOpen()
void EthernetDevice::onDisconnected()
{
if(_preferences->getBool(preference_restart_on_disconnect, false) && ((esp_timer_get_time() / 1000) > 60000)) restartEsp(RestartReason::RestartOnDisconnectWatchdog);
if(_preferences->getBool(preference_restart_on_disconnect, false) && ((esp_timer_get_time() / 1000) > 60000))
{
restartEsp(RestartReason::RestartOnDisconnectWatchdog);
}
}
int8_t EthernetDevice::signalStrength()

View File

@@ -23,10 +23,14 @@ IPConfiguration::IPConfiguration(Preferences *preferences)
}
else
{
Log->print(F("IP address: ")); Log->print(ipAddress());
Log->print(F(", Subnet: ")); Log->print(subnet());
Log->print(F(", Gateway: ")); Log->print(defaultGateway());
Log->print(F(", DNS: ")); Log->println(dnsServer());
Log->print(F("IP address: "));
Log->print(ipAddress());
Log->print(F(", Subnet: "));
Log->print(subnet());
Log->print(F(", Gateway: "));
Log->print(defaultGateway());
Log->print(F(", DNS: "));
Log->println(dnsServer());
}
}

View File

@@ -78,11 +78,13 @@ void WifiDevice::initialize()
_preferences->putBool(preference_wifi_converted, true);
wifi_config_t wifi_cfg;
if(esp_wifi_get_config(WIFI_IF_STA, &wifi_cfg) != ESP_OK) {
if(esp_wifi_get_config(WIFI_IF_STA, &wifi_cfg) != ESP_OK)
{
Log->println("Failed to get Wi-Fi configuration in RAM");
}
if (esp_wifi_set_storage(WIFI_STORAGE_FLASH) != ESP_OK) {
if (esp_wifi_set_storage(WIFI_STORAGE_FLASH) != ESP_OK)
{
Log->println("Failed to set storage Wi-Fi");
}
@@ -107,7 +109,8 @@ void WifiDevice::initialize()
memset(wifi_cfg.sta.ssid, 0, sizeof(wifi_cfg.sta.ssid));
memset(wifi_cfg.sta.password, 0, sizeof(wifi_cfg.sta.password));
if (esp_wifi_set_config(WIFI_IF_STA, &wifi_cfg) != ESP_OK) {
if (esp_wifi_set_config(WIFI_IF_STA, &wifi_cfg) != ESP_OK)
{
Log->println("Failed to clear NVS Wi-Fi configuration");
}
@@ -232,7 +235,10 @@ bool WifiDevice::connect()
{
Log->print("No network found with SSID: ");
Log->println(ssid);
if(_preferences->getBool(preference_restart_on_disconnect, false) && ((esp_timer_get_time() / 1000) > 60000)) restartEsp(RestartReason::RestartOnDisconnectWatchdog);
if(_preferences->getBool(preference_restart_on_disconnect, false) && ((esp_timer_get_time() / 1000) > 60000))
{
restartEsp(RestartReason::RestartOnDisconnectWatchdog);
}
_connectOnScanDone = true;
_openAP = false;
scan(false, true);
@@ -371,7 +377,10 @@ void WifiDevice::onDisconnected()
if(!isConnected())
{
if(_preferences->getBool(preference_restart_on_disconnect, false) && ((esp_timer_get_time() / 1000) > 60000)) restartEsp(RestartReason::RestartOnDisconnectWatchdog);
if(_preferences->getBool(preference_restart_on_disconnect, false) && ((esp_timer_get_time() / 1000) > 60000))
{
restartEsp(RestartReason::RestartOnDisconnectWatchdog);
}
WiFi.disconnect(true);
WiFi.mode(WIFI_STA);