Home Assistant new

This commit is contained in:
iranl
2024-04-08 20:57:06 +02:00
parent e044a7d7a6
commit 346e40e1da
9 changed files with 2388 additions and 820 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -46,17 +46,12 @@ public:
bool publishString(const char* prefix, const char* topic, const char* value); bool publishString(const char* prefix, const char* topic, const char* value);
void publishHASSConfig(char* deviceType, const char* baseTopic, char* name, char* uidString, const char* availabilityTopic, const bool& hasKeypad, char* lockAction, char* unlockAction, char* openAction); void publishHASSConfig(char* deviceType, const char* baseTopic, char* name, char* uidString, const char* availabilityTopic, const bool& hasKeypad, char* lockAction, char* unlockAction, char* openAction);
void publishHASSConfigAdditionalButtons(char* deviceType, const char* baseTopic, char* name, char* uidString); void publishHASSConfigAdditionalLockEntities(char* deviceType, const char* baseTopic, char* name, char* uidString);
void publishHASSConfigBatLevel(char* deviceType, const char* baseTopic, char* name, char* uidString);
void publishHASSConfigDoorSensor(char* deviceType, const char* baseTopic, char* name, char* uidString); void publishHASSConfigDoorSensor(char* deviceType, const char* baseTopic, char* name, char* uidString);
void publishHASSConfigRingDetect(char* deviceType, const char* baseTopic, char* name, char* uidString); void publishHASSConfigAdditionalOpenerEntities(char* deviceType, const char* baseTopic, char* name, char* uidString);
void publishHASSConfigContinuousMode(char* deviceType, const char* baseTopic, char* name, char* uidString);
void publishHASSConfigLedBrightness(char* deviceType, const char* baseTopic, char* name, char* uidString);
void publishHASSConfigSoundLevel(char* deviceType, const char* baseTopic, char* name, char* uidString);
void publishHASSConfigAccessLog(char* deviceType, const char* baseTopic, char* name, char* uidString); void publishHASSConfigAccessLog(char* deviceType, const char* baseTopic, char* name, char* uidString);
void publishHASSConfigKeypadAttemptInfo(char* deviceType, const char* baseTopic, char* name, char* uidString); void publishHASSConfigKeypad(char* deviceType, const char* baseTopic, char* name, char* uidString);
void publishHASSWifiRssiConfig(char* deviceType, const char* baseTopic, char* name, char* uidString); void publishHASSWifiRssiConfig(char* deviceType, const char* baseTopic, char* name, char* uidString);
void publishHASSBleRssiConfig(char* deviceType, const char* baseTopic, char* name, char* uidString);
void removeHASSConfig(char* uidString); void removeHASSConfig(char* uidString);
void removeHASSConfigTopic(char* deviceType, char* name, char* uidString); void removeHASSConfigTopic(char* deviceType, char* name, char* uidString);

View File

@@ -675,9 +675,7 @@ void NetworkLock::publishHASSConfig(char *deviceType, const char *baseTopic, cha
char *unlockAction, char *openAction) char *unlockAction, char *openAction)
{ {
_network->publishHASSConfig(deviceType, baseTopic, name, uidString, "~/maintenance/mqttConnectionState", hasKeypad, lockAction, unlockAction, openAction); _network->publishHASSConfig(deviceType, baseTopic, name, uidString, "~/maintenance/mqttConnectionState", hasKeypad, lockAction, unlockAction, openAction);
_network->publishHASSConfigAdditionalButtons(deviceType, baseTopic, name, uidString); _network->publishHASSConfigAdditionalLockEntities(deviceType, baseTopic, name, uidString);
_network->publishHASSConfigBatLevel(deviceType, baseTopic, name, uidString);
_network->publishHASSConfigLedBrightness(deviceType, baseTopic, name, uidString);
if(hasDoorSensor) if(hasDoorSensor)
{ {
_network->publishHASSConfigDoorSensor(deviceType, baseTopic, name, uidString); _network->publishHASSConfigDoorSensor(deviceType, baseTopic, name, uidString);
@@ -687,7 +685,6 @@ void NetworkLock::publishHASSConfig(char *deviceType, const char *baseTopic, cha
_network->removeHASSConfigTopic("binary_sensor", "door_sensor", uidString); _network->removeHASSConfigTopic("binary_sensor", "door_sensor", uidString);
} }
_network->publishHASSWifiRssiConfig(deviceType, baseTopic, name, uidString); _network->publishHASSWifiRssiConfig(deviceType, baseTopic, name, uidString);
_network->publishHASSBleRssiConfig(deviceType, baseTopic, name, uidString);
if(publishAuthData) if(publishAuthData)
{ {
@@ -700,11 +697,12 @@ void NetworkLock::publishHASSConfig(char *deviceType, const char *baseTopic, cha
if(hasKeypad) if(hasKeypad)
{ {
_network->publishHASSConfigKeypadAttemptInfo(deviceType, baseTopic, name, uidString); _network->publishHASSConfigKeypad(deviceType, baseTopic, name, uidString);
} }
else else
{ {
_network->removeHASSConfigTopic("sensor", "keypad_status", uidString); _network->removeHASSConfigTopic("sensor", "keypad_status", uidString);
_network->removeHASSConfigTopic("binary_sensor", "keypad_battery_low", uidString);
} }
} }
@@ -801,13 +799,13 @@ uint8_t NetworkLock::queryCommands()
void NetworkLock::batteryTypeToString(const Nuki::BatteryType battype, char* str) { void NetworkLock::batteryTypeToString(const Nuki::BatteryType battype, char* str) {
switch (battype) { switch (battype) {
case Nuki::BatteryType::Alkali: case Nuki::BatteryType::Alkali:
strcpy(str, "alkali"); strcpy(str, "Alkali");
break; break;
case Nuki::BatteryType::Accumulators: case Nuki::BatteryType::Accumulators:
strcpy(str, "accumulators"); strcpy(str, "Accumulators");
break; break;
case Nuki::BatteryType::Lithium: case Nuki::BatteryType::Lithium:
strcpy(str, "lithium"); strcpy(str, "Lithium");
break; break;
default: default:
strcpy(str, "undefined"); strcpy(str, "undefined");
@@ -818,25 +816,25 @@ void NetworkLock::batteryTypeToString(const Nuki::BatteryType battype, char* str
void NetworkLock::buttonPressActionToString(const NukiLock::ButtonPressAction btnPressAction, char* str) { void NetworkLock::buttonPressActionToString(const NukiLock::ButtonPressAction btnPressAction, char* str) {
switch (btnPressAction) { switch (btnPressAction) {
case NukiLock::ButtonPressAction::NoAction: case NukiLock::ButtonPressAction::NoAction:
strcpy(str, "noaction"); strcpy(str, "No Action");
break; break;
case NukiLock::ButtonPressAction::Intelligent: case NukiLock::ButtonPressAction::Intelligent:
strcpy(str, "intelligent"); strcpy(str, "Intelligent");
break; break;
case NukiLock::ButtonPressAction::Unlock: case NukiLock::ButtonPressAction::Unlock:
strcpy(str, "unlock"); strcpy(str, "Unlock");
break; break;
case NukiLock::ButtonPressAction::Lock: case NukiLock::ButtonPressAction::Lock:
strcpy(str, "lock"); strcpy(str, "Lock");
break; break;
case NukiLock::ButtonPressAction::Unlatch: case NukiLock::ButtonPressAction::Unlatch:
strcpy(str, "unlatch"); strcpy(str, "Unlatch");
break; break;
case NukiLock::ButtonPressAction::LockNgo: case NukiLock::ButtonPressAction::LockNgo:
strcpy(str, "lockngo"); strcpy(str, "Lock n Go");
break; break;
case NukiLock::ButtonPressAction::ShowStatus: case NukiLock::ButtonPressAction::ShowStatus:
strcpy(str, "showstatus"); strcpy(str, "Show Status");
break; break;
default: default:
strcpy(str, "undefined"); strcpy(str, "undefined");
@@ -847,16 +845,16 @@ void NetworkLock::buttonPressActionToString(const NukiLock::ButtonPressAction bt
void NetworkLock::advertisingModeToString(const Nuki::AdvertisingMode advmode, char* str) { void NetworkLock::advertisingModeToString(const Nuki::AdvertisingMode advmode, char* str) {
switch (advmode) { switch (advmode) {
case Nuki::AdvertisingMode::Automatic: case Nuki::AdvertisingMode::Automatic:
strcpy(str, "automatic"); strcpy(str, "Automatic");
break; break;
case Nuki::AdvertisingMode::Normal: case Nuki::AdvertisingMode::Normal:
strcpy(str, "normal"); strcpy(str, "Normal");
break; break;
case Nuki::AdvertisingMode::Slow: case Nuki::AdvertisingMode::Slow:
strcpy(str, "slow"); strcpy(str, "Slow");
break; break;
case Nuki::AdvertisingMode::Slowest: case Nuki::AdvertisingMode::Slowest:
strcpy(str, "slowest"); strcpy(str, "Slowest");
break; break;
default: default:
strcpy(str, "undefined"); strcpy(str, "undefined");
@@ -1005,7 +1003,7 @@ void NetworkLock::timeZoneIdToString(const Nuki::TimeZoneId timeZoneId, char* st
strcpy(str, "Pacific/Pago_Pago"); strcpy(str, "Pacific/Pago_Pago");
break; break;
case Nuki::TimeZoneId::None: case Nuki::TimeZoneId::None:
strcpy(str, "none"); strcpy(str, "None");
break; break;
default: default:
strcpy(str, "undefined"); strcpy(str, "undefined");
@@ -1016,16 +1014,16 @@ void NetworkLock::timeZoneIdToString(const Nuki::TimeZoneId timeZoneId, char* st
void NetworkLock::homeKitStatusToString(const int hkstatus, char* str) { void NetworkLock::homeKitStatusToString(const int hkstatus, char* str) {
switch (hkstatus) { switch (hkstatus) {
case 0: case 0:
strcpy(str, "notavailable"); strcpy(str, "Not Available");
break; break;
case 1: case 1:
strcpy(str, "disabled"); strcpy(str, "Disabled");
break; break;
case 2: case 2:
strcpy(str, "enabled"); strcpy(str, "Enabled");
break; break;
case 3: case 3:
strcpy(str, "enabledpaired"); strcpy(str, "Enabled & Paired");
break; break;
default: default:
strcpy(str, "undefined"); strcpy(str, "undefined");
@@ -1036,19 +1034,19 @@ void NetworkLock::homeKitStatusToString(const int hkstatus, char* str) {
void NetworkLock::fobActionToString(const int fobact, char* str) { void NetworkLock::fobActionToString(const int fobact, char* str) {
switch (fobact) { switch (fobact) {
case 0: case 0:
strcpy(str, "noaction"); strcpy(str, "No Action");
break; break;
case 1: case 1:
strcpy(str, "unlock"); strcpy(str, "Unlock");
break; break;
case 2: case 2:
strcpy(str, "lock"); strcpy(str, "Lock");
break; break;
case 3: case 3:
strcpy(str, "lockngo"); strcpy(str, "Lock n Go");
break; break;
case 4: case 4:
strcpy(str, "intelligent"); strcpy(str, "Intelligent");
break; break;
default: default:
strcpy(str, "undefined"); strcpy(str, "undefined");

View File

@@ -567,7 +567,9 @@ void NetworkOpener::publishAdvancedConfig(const NukiOpener::AdvancedConfig &conf
json["electricStrikeDuration"] = config.electricStrikeDuration; json["electricStrikeDuration"] = config.electricStrikeDuration;
json["disableRtoAfterRing"] = config.disableRtoAfterRing; json["disableRtoAfterRing"] = config.disableRtoAfterRing;
json["rtoTimeout"] = config.rtoTimeout; json["rtoTimeout"] = config.rtoTimeout;
json["doorbellSuppression"] = config.doorbellSuppression; memset(str, 0, sizeof(str));
doorbellSuppressionToString(config.doorbellSuppression, str);
json["doorbellSuppression"] = str;
json["doorbellSuppressionDuration"] = config.doorbellSuppressionDuration; json["doorbellSuppressionDuration"] = config.doorbellSuppressionDuration;
json["soundRing"] = config.soundRing; json["soundRing"] = config.soundRing;
json["soundOpen"] = config.soundOpen; json["soundOpen"] = config.soundOpen;
@@ -613,10 +615,7 @@ void NetworkOpener::publishHASSConfig(char* deviceType, const char* baseTopic, c
availabilityTopic.concat("/maintenance/mqttConnectionState"); availabilityTopic.concat("/maintenance/mqttConnectionState");
_network->publishHASSConfig(deviceType, baseTopic, name, uidString, availabilityTopic.c_str(), false, lockAction, unlockAction, openAction); _network->publishHASSConfig(deviceType, baseTopic, name, uidString, availabilityTopic.c_str(), false, lockAction, unlockAction, openAction);
_network->publishHASSConfigRingDetect(deviceType, baseTopic, name, uidString); _network->publishHASSConfigAdditionalOpenerEntities(deviceType, baseTopic, name, uidString);
_network->publishHASSConfigContinuousMode(deviceType, baseTopic, name, uidString);
_network->publishHASSConfigSoundLevel(deviceType, baseTopic, name, uidString);
_network->publishHASSBleRssiConfig(deviceType, baseTopic, name, uidString);
} }
void NetworkOpener::removeHASSConfig(char* uidString) void NetworkOpener::removeHASSConfig(char* uidString)
@@ -814,13 +813,13 @@ uint8_t NetworkOpener::queryCommands()
void NetworkOpener::batteryTypeToString(const Nuki::BatteryType battype, char* str) { void NetworkOpener::batteryTypeToString(const Nuki::BatteryType battype, char* str) {
switch (battype) { switch (battype) {
case Nuki::BatteryType::Alkali: case Nuki::BatteryType::Alkali:
strcpy(str, "alkali"); strcpy(str, "Alkali");
break; break;
case Nuki::BatteryType::Accumulators: case Nuki::BatteryType::Accumulators:
strcpy(str, "accumulators"); strcpy(str, "Accumulators");
break; break;
case Nuki::BatteryType::Lithium: case Nuki::BatteryType::Lithium:
strcpy(str, "lithium"); strcpy(str, "Lithium");
break; break;
default: default:
strcpy(str, "undefined"); strcpy(str, "undefined");
@@ -831,28 +830,28 @@ void NetworkOpener::batteryTypeToString(const Nuki::BatteryType battype, char* s
void NetworkOpener::buttonPressActionToString(const NukiOpener::ButtonPressAction btnPressAction, char* str) { void NetworkOpener::buttonPressActionToString(const NukiOpener::ButtonPressAction btnPressAction, char* str) {
switch (btnPressAction) { switch (btnPressAction) {
case NukiOpener::ButtonPressAction::NoAction: case NukiOpener::ButtonPressAction::NoAction:
strcpy(str, "noaction"); strcpy(str, "No Action");
break; break;
case NukiOpener::ButtonPressAction::ToggleRTO: case NukiOpener::ButtonPressAction::ToggleRTO:
strcpy(str, "togglerto"); strcpy(str, "Toggle RTO");
break; break;
case NukiOpener::ButtonPressAction::ActivateRTO: case NukiOpener::ButtonPressAction::ActivateRTO:
strcpy(str, "activaterto"); strcpy(str, "Activate RTO");
break; break;
case NukiOpener::ButtonPressAction::DeactivateRTO: case NukiOpener::ButtonPressAction::DeactivateRTO:
strcpy(str, "deactivaterto"); strcpy(str, "Deactivate RTO");
break; break;
case NukiOpener::ButtonPressAction::ToggleCM: case NukiOpener::ButtonPressAction::ToggleCM:
strcpy(str, "togglecm"); strcpy(str, "Toggle CM");
break; break;
case NukiOpener::ButtonPressAction::ActivateCM: case NukiOpener::ButtonPressAction::ActivateCM:
strcpy(str, "activatecm"); strcpy(str, "Activate CM");
break; break;
case NukiOpener::ButtonPressAction::DectivateCM: case NukiOpener::ButtonPressAction::DectivateCM:
strcpy(str, "deactivatecm"); strcpy(str, "Deactivate CM");
break; break;
case NukiOpener::ButtonPressAction::Open: case NukiOpener::ButtonPressAction::Open:
strcpy(str, "open"); strcpy(str, "Open");
break; break;
default: default:
strcpy(str, "undefined"); strcpy(str, "undefined");
@@ -863,16 +862,16 @@ void NetworkOpener::buttonPressActionToString(const NukiOpener::ButtonPressActio
void NetworkOpener::advertisingModeToString(const Nuki::AdvertisingMode advmode, char* str) { void NetworkOpener::advertisingModeToString(const Nuki::AdvertisingMode advmode, char* str) {
switch (advmode) { switch (advmode) {
case Nuki::AdvertisingMode::Automatic: case Nuki::AdvertisingMode::Automatic:
strcpy(str, "automatic"); strcpy(str, "Automatic");
break; break;
case Nuki::AdvertisingMode::Normal: case Nuki::AdvertisingMode::Normal:
strcpy(str, "normal"); strcpy(str, "Normal");
break; break;
case Nuki::AdvertisingMode::Slow: case Nuki::AdvertisingMode::Slow:
strcpy(str, "slow"); strcpy(str, "Slow");
break; break;
case Nuki::AdvertisingMode::Slowest: case Nuki::AdvertisingMode::Slowest:
strcpy(str, "slowest"); strcpy(str, "Slowest");
break; break;
default: default:
strcpy(str, "undefined"); strcpy(str, "undefined");
@@ -1021,7 +1020,7 @@ void NetworkOpener::timeZoneIdToString(const Nuki::TimeZoneId timeZoneId, char*
strcpy(str, "Pacific/Pago_Pago"); strcpy(str, "Pacific/Pago_Pago");
break; break;
case Nuki::TimeZoneId::None: case Nuki::TimeZoneId::None:
strcpy(str, "none"); strcpy(str, "None");
break; break;
default: default:
strcpy(str, "undefined"); strcpy(str, "undefined");
@@ -1032,22 +1031,22 @@ void NetworkOpener::timeZoneIdToString(const Nuki::TimeZoneId timeZoneId, char*
void NetworkOpener::fobActionToString(const int fobact, char* str) { void NetworkOpener::fobActionToString(const int fobact, char* str) {
switch (fobact) { switch (fobact) {
case 0: case 0:
strcpy(str, "noaction"); strcpy(str, "No Action");
break; break;
case 1: case 1:
strcpy(str, "togglerto"); strcpy(str, "Toggle RTO");
break; break;
case 2: case 2:
strcpy(str, "activaterto"); strcpy(str, "Activate RTO");
break; break;
case 3: case 3:
strcpy(str, "deactivaterto"); strcpy(str, "Deactivate RTO");
break; break;
case 7: case 7:
strcpy(str, "open"); strcpy(str, "Open");
break; break;
case 8: case 8:
strcpy(str, "ring"); strcpy(str, "Ring");
break; break;
default: default:
strcpy(str, "undefined"); strcpy(str, "undefined");
@@ -1058,13 +1057,13 @@ void NetworkOpener::fobActionToString(const int fobact, char* str) {
void NetworkOpener::capabilitiesToString(const int capabilities, char* str) { void NetworkOpener::capabilitiesToString(const int capabilities, char* str) {
switch (capabilities) { switch (capabilities) {
case 0: case 0:
strcpy(str, "dooropener"); strcpy(str, "Door opener");
break; break;
case 1: case 1:
strcpy(str, "both"); strcpy(str, "Both");
break; break;
case 2: case 2:
strcpy(str, "rto"); strcpy(str, "RTO");
break; break;
default: default:
strcpy(str, "undefined"); strcpy(str, "undefined");
@@ -1075,52 +1074,84 @@ void NetworkOpener::capabilitiesToString(const int capabilities, char* str) {
void NetworkOpener::operatingModeToString(const int opmode, char* str) { void NetworkOpener::operatingModeToString(const int opmode, char* str) {
switch (opmode) { switch (opmode) {
case 0: case 0:
strcpy(str, "genericdooropener"); strcpy(str, "Generic door opener");
break; break;
case 1: case 1:
strcpy(str, "analogueintercom"); strcpy(str, "Analogue intercom");
break; break;
case 2: case 2:
strcpy(str, "digitalintercom"); strcpy(str, "Digital intercom");
break; break;
case 3: case 3:
strcpy(str, "siedle"); strcpy(str, "Siedle");
break; break;
case 4: case 4:
strcpy(str, "tcs"); strcpy(str, "TCS");
break; break;
case 5: case 5:
strcpy(str, "bticino"); strcpy(str, "Bticino");
break; break;
case 6: case 6:
strcpy(str, "siedlehts"); strcpy(str, "Siedle HTS");
break; break;
case 7: case 7:
strcpy(str, "str"); strcpy(str, "STR");
break; break;
case 8: case 8:
strcpy(str, "ritto"); strcpy(str, "Ritto");
break; break;
case 9: case 9:
strcpy(str, "fermax"); strcpy(str, "Fermax");
break; break;
case 10: case 10:
strcpy(str, "comelit"); strcpy(str, "Comelit");
break; break;
case 11: case 11:
strcpy(str, "urmetbibus"); strcpy(str, "Urmet BiBus");
break; break;
case 12: case 12:
strcpy(str, "urmet2voice"); strcpy(str, "Urmet 2Voice");
break; break;
case 13: case 13:
strcpy(str, "golmar"); strcpy(str, "Golmar");
break; break;
case 14: case 14:
strcpy(str, "sks"); strcpy(str, "SKS");
break; break;
case 15: case 15:
strcpy(str, "spare"); strcpy(str, "Spare");
break;
default:
strcpy(str, "undefined");
break;
}
}
void NetworkOpener::doorbellSuppressionToString(const int dbsupr, char* str) {
switch (dbsupr) {
case 0:
strcpy(str, "Off");
break;
case 1:
strcpy(str, "CM");
break;
case 2:
strcpy(str, "RTO");
break;
case 3:
strcpy(str, "CM & RTO");
break;
case 4:
strcpy(str, "Ring");
break;
case 5:
strcpy(str, "CM & Ring");
break;
case 6:
strcpy(str, "RTO & Ring");
break;
case 7:
strcpy(str, "CM & RTO & Ring");
break; break;
default: default:
strcpy(str, "undefined"); strcpy(str, "undefined");

View File

@@ -67,6 +67,7 @@ private:
void timeZoneIdToString(const Nuki::TimeZoneId timeZoneId, char* str); void timeZoneIdToString(const Nuki::TimeZoneId timeZoneId, char* str);
void fobActionToString(const int fobact, char* str); void fobActionToString(const int fobact, char* str);
void operatingModeToString(const int opmode, char* str); void operatingModeToString(const int opmode, char* str);
void doorbellSuppressionToString(const int dbsupr, char* str);
void capabilitiesToString(const int capabilities, char* str); void capabilitiesToString(const int capabilities, char* str);
String concat(String a, String b); String concat(String a, String b);

View File

@@ -554,10 +554,10 @@ void NukiOpenerWrapper::onConfigUpdateReceivedCallback(const char *value)
Nuki::AdvertisingMode NukiOpenerWrapper::advertisingModeToEnum(const char *str) Nuki::AdvertisingMode NukiOpenerWrapper::advertisingModeToEnum(const char *str)
{ {
if(strcmp(str, "automatic") == 0) return Nuki::AdvertisingMode::Automatic; if(strcmp(str, "Automatic") == 0) return Nuki::AdvertisingMode::Automatic;
else if(strcmp(str, "normal") == 0) return Nuki::AdvertisingMode::Normal; else if(strcmp(str, "Normal") == 0) return Nuki::AdvertisingMode::Normal;
else if(strcmp(str, "slow") == 0) return Nuki::AdvertisingMode::Slow; else if(strcmp(str, "Slow") == 0) return Nuki::AdvertisingMode::Slow;
else if(strcmp(str, "slowest") == 0) return Nuki::AdvertisingMode::Slowest; else if(strcmp(str, "Slowest") == 0) return Nuki::AdvertisingMode::Slowest;
return (Nuki::AdvertisingMode)0xff; return (Nuki::AdvertisingMode)0xff;
} }
@@ -609,60 +609,73 @@ Nuki::TimeZoneId NukiOpenerWrapper::timeZoneToEnum(const char *str)
else if(strcmp(str, "Pacific/Guam") == 0) return Nuki::TimeZoneId::Pacific_Guam; else if(strcmp(str, "Pacific/Guam") == 0) return Nuki::TimeZoneId::Pacific_Guam;
else if(strcmp(str, "Pacific/Honolulu") == 0) return Nuki::TimeZoneId::Pacific_Honolulu; else if(strcmp(str, "Pacific/Honolulu") == 0) return Nuki::TimeZoneId::Pacific_Honolulu;
else if(strcmp(str, "Pacific/Pago_Pago") == 0) return Nuki::TimeZoneId::Pacific_Pago_Pago; else if(strcmp(str, "Pacific/Pago_Pago") == 0) return Nuki::TimeZoneId::Pacific_Pago_Pago;
else if(strcmp(str, "none") == 0) return Nuki::TimeZoneId::None; else if(strcmp(str, "None") == 0) return Nuki::TimeZoneId::None;
return (Nuki::TimeZoneId)0xff; return (Nuki::TimeZoneId)0xff;
} }
uint8_t NukiOpenerWrapper::fobActionToInt(const char *str) uint8_t NukiOpenerWrapper::fobActionToInt(const char *str)
{ {
if(strcmp(str, "noaction") == 0) return 0; if(strcmp(str, "No Action") == 0) return 0;
else if(strcmp(str, "togglerto") == 0) return 1; else if(strcmp(str, "Toggle RTO") == 0) return 1;
else if(strcmp(str, "activaterto") == 0) return 2; else if(strcmp(str, "Activate RTO") == 0) return 2;
else if(strcmp(str, "deactivaterto") == 0) return 3; else if(strcmp(str, "Deactivate RTO") == 0) return 3;
else if(strcmp(str, "open") == 0) return 7; else if(strcmp(str, "Open") == 0) return 7;
else if(strcmp(str, "ring") == 0) return 8; else if(strcmp(str, "Ring") == 0) return 8;
return 99; return 99;
} }
uint8_t NukiOpenerWrapper::operatingModeToInt(const char *str) uint8_t NukiOpenerWrapper::operatingModeToInt(const char *str)
{ {
if(strcmp(str, "genericdooropener") == 0) return 0; if(strcmp(str, "Generic door opener") == 0) return 0;
else if(strcmp(str, "analogueintercom") == 0) return 1; else if(strcmp(str, "Analogue intercom") == 0) return 1;
else if(strcmp(str, "digitalintercom") == 0) return 2; else if(strcmp(str, "Digital intercom") == 0) return 2;
else if(strcmp(str, "siedle") == 0) return 3; else if(strcmp(str, "Siedle") == 0) return 3;
else if(strcmp(str, "tcs") == 0) return 4; else if(strcmp(str, "TCS") == 0) return 4;
else if(strcmp(str, "bticino") == 0) return 5; else if(strcmp(str, "Bticino") == 0) return 5;
else if(strcmp(str, "siedlehts") == 0) return 6; else if(strcmp(str, "Siedle HTS") == 0) return 6;
else if(strcmp(str, "str") == 0) return 7; else if(strcmp(str, "STR") == 0) return 7;
else if(strcmp(str, "ritto") == 0) return 8; else if(strcmp(str, "Ritto") == 0) return 8;
else if(strcmp(str, "fermax") == 0) return 9; else if(strcmp(str, "Fermax") == 0) return 9;
else if(strcmp(str, "comelit") == 0) return 10; else if(strcmp(str, "Comelit") == 0) return 10;
else if(strcmp(str, "urmetbibus") == 0) return 11; else if(strcmp(str, "Urmet BiBus") == 0) return 11;
else if(strcmp(str, "urmet2voice") == 0) return 12; else if(strcmp(str, "Urmet 2Voice") == 0) return 12;
else if(strcmp(str, "golmar") == 0) return 13; else if(strcmp(str, "Golmar") == 0) return 13;
else if(strcmp(str, "sks") == 0) return 14; else if(strcmp(str, "SKS") == 0) return 14;
else if(strcmp(str, "spare") == 0) return 15; else if(strcmp(str, "Spare") == 0) return 15;
return 99;
}
uint8_t NukiOpenerWrapper::doorbellSuppressionToInt(const char *str)
{
if(strcmp(str, "Off") == 0) return 0;
else if(strcmp(str, "CM") == 0) return 1;
else if(strcmp(str, "RTO") == 0) return 2;
else if(strcmp(str, "CM & RTO") == 0) return 3;
else if(strcmp(str, "Ring") == 0) return 4;
else if(strcmp(str, "CM & Ring") == 0) return 5;
else if(strcmp(str, "RTO & Ring") == 0) return 6;
else if(strcmp(str, "CM & RTO & Ring") == 0) return 7;
return 99; return 99;
} }
NukiOpener::ButtonPressAction NukiOpenerWrapper::buttonPressActionToEnum(const char* str) NukiOpener::ButtonPressAction NukiOpenerWrapper::buttonPressActionToEnum(const char* str)
{ {
if(strcmp(str, "noaction") == 0) return NukiOpener::ButtonPressAction::NoAction; if(strcmp(str, "No Action") == 0) return NukiOpener::ButtonPressAction::NoAction;
else if(strcmp(str, "togglerto") == 0) return NukiOpener::ButtonPressAction::ToggleRTO; else if(strcmp(str, "Toggle RTO") == 0) return NukiOpener::ButtonPressAction::ToggleRTO;
else if(strcmp(str, "activaterto") == 0) return NukiOpener::ButtonPressAction::ActivateRTO; else if(strcmp(str, "Activate RTO") == 0) return NukiOpener::ButtonPressAction::ActivateRTO;
else if(strcmp(str, "deactivaterto") == 0) return NukiOpener::ButtonPressAction::DeactivateRTO; else if(strcmp(str, "Deactivate RTO") == 0) return NukiOpener::ButtonPressAction::DeactivateRTO;
else if(strcmp(str, "togglecm") == 0) return NukiOpener::ButtonPressAction::ToggleCM; else if(strcmp(str, "Toggle CM") == 0) return NukiOpener::ButtonPressAction::ToggleCM;
else if(strcmp(str, "activatecm") == 0) return NukiOpener::ButtonPressAction::ActivateCM; else if(strcmp(str, "Activate CM") == 0) return NukiOpener::ButtonPressAction::ActivateCM;
else if(strcmp(str, "deactivatecm") == 0) return NukiOpener::ButtonPressAction::DectivateCM; else if(strcmp(str, "Deactivate CM") == 0) return NukiOpener::ButtonPressAction::DectivateCM;
else if(strcmp(str, "open") == 0) return NukiOpener::ButtonPressAction::Open; else if(strcmp(str, "Open") == 0) return NukiOpener::ButtonPressAction::Open;
return (NukiOpener::ButtonPressAction)0xff; return (NukiOpener::ButtonPressAction)0xff;
} }
Nuki::BatteryType NukiOpenerWrapper::batteryTypeToEnum(const char* str) Nuki::BatteryType NukiOpenerWrapper::batteryTypeToEnum(const char* str)
{ {
if(strcmp(str, "alkali") == 0) return Nuki::BatteryType::Alkali; if(strcmp(str, "Alkali") == 0) return Nuki::BatteryType::Alkali;
else if(strcmp(str, "accumulators") == 0) return Nuki::BatteryType::Accumulators; else if(strcmp(str, "Accumulators") == 0) return Nuki::BatteryType::Accumulators;
else if(strcmp(str, "lithium") == 0) return Nuki::BatteryType::Lithium; else if(strcmp(str, "Lithium") == 0) return Nuki::BatteryType::Lithium;
return (Nuki::BatteryType)0xff; return (Nuki::BatteryType)0xff;
} }
@@ -978,14 +991,14 @@ void NukiOpenerWrapper::onConfigUpdateReceived(const char *value)
} }
else if(strcmp(advancedKeys[i], "doorbellSuppression") == 0) else if(strcmp(advancedKeys[i], "doorbellSuppression") == 0)
{ {
const uint8_t keyvalue = atoi(json[advancedKeys[i]]); const uint8_t dbsupr = nukiOpenerInst->doorbellSuppressionToInt(json[advancedKeys[i]]);
if(keyvalue >= 0 && keyvalue <= 8) if(dbsupr != 99)
{ {
if(_nukiAdvancedConfig.doorbellSuppression == keyvalue) jsonResult[advancedKeys[i]] = "unchanged"; if(_nukiAdvancedConfig.doorbellSuppression == dbsupr) jsonResult[advancedKeys[i]] = "unchanged";
else cmdResult = _nukiOpener.setDoorbellSuppression(keyvalue); else cmdResult = _nukiOpener.setDoorbellSuppression(dbsupr);
} }
else jsonResult[advancedKeys[i]] = "invalidvalue"; else jsonResult[basicKeys[i]] = "invalidvalue";
} }
else if(strcmp(advancedKeys[i], "doorbellSuppressionDuration") == 0) else if(strcmp(advancedKeys[i], "doorbellSuppressionDuration") == 0)
{ {

View File

@@ -74,6 +74,7 @@ private:
Nuki::TimeZoneId timeZoneToEnum(const char* str); Nuki::TimeZoneId timeZoneToEnum(const char* str);
uint8_t fobActionToInt(const char *str); uint8_t fobActionToInt(const char *str);
uint8_t operatingModeToInt(const char *str); uint8_t operatingModeToInt(const char *str);
uint8_t doorbellSuppressionToInt(const char *str);
NukiOpener::ButtonPressAction buttonPressActionToEnum(const char* str); NukiOpener::ButtonPressAction buttonPressActionToEnum(const char* str);
Nuki::BatteryType batteryTypeToEnum(const char* str); Nuki::BatteryType batteryTypeToEnum(const char* str);

View File

@@ -529,10 +529,10 @@ void NukiWrapper::onConfigUpdateReceivedCallback(const char *value)
Nuki::AdvertisingMode NukiWrapper::advertisingModeToEnum(const char *str) Nuki::AdvertisingMode NukiWrapper::advertisingModeToEnum(const char *str)
{ {
if(strcmp(str, "automatic") == 0) return Nuki::AdvertisingMode::Automatic; if(strcmp(str, "Automatic") == 0) return Nuki::AdvertisingMode::Automatic;
else if(strcmp(str, "normal") == 0) return Nuki::AdvertisingMode::Normal; else if(strcmp(str, "Normal") == 0) return Nuki::AdvertisingMode::Normal;
else if(strcmp(str, "slow") == 0) return Nuki::AdvertisingMode::Slow; else if(strcmp(str, "Slow") == 0) return Nuki::AdvertisingMode::Slow;
else if(strcmp(str, "slowest") == 0) return Nuki::AdvertisingMode::Slowest; else if(strcmp(str, "Slowest") == 0) return Nuki::AdvertisingMode::Slowest;
return (Nuki::AdvertisingMode)0xff; return (Nuki::AdvertisingMode)0xff;
} }
@@ -584,37 +584,37 @@ Nuki::TimeZoneId NukiWrapper::timeZoneToEnum(const char *str)
else if(strcmp(str, "Pacific/Guam") == 0) return Nuki::TimeZoneId::Pacific_Guam; else if(strcmp(str, "Pacific/Guam") == 0) return Nuki::TimeZoneId::Pacific_Guam;
else if(strcmp(str, "Pacific/Honolulu") == 0) return Nuki::TimeZoneId::Pacific_Honolulu; else if(strcmp(str, "Pacific/Honolulu") == 0) return Nuki::TimeZoneId::Pacific_Honolulu;
else if(strcmp(str, "Pacific/Pago_Pago") == 0) return Nuki::TimeZoneId::Pacific_Pago_Pago; else if(strcmp(str, "Pacific/Pago_Pago") == 0) return Nuki::TimeZoneId::Pacific_Pago_Pago;
else if(strcmp(str, "none") == 0) return Nuki::TimeZoneId::None; else if(strcmp(str, "None") == 0) return Nuki::TimeZoneId::None;
return (Nuki::TimeZoneId)0xff; return (Nuki::TimeZoneId)0xff;
} }
uint8_t NukiWrapper::fobActionToInt(const char *str) uint8_t NukiWrapper::fobActionToInt(const char *str)
{ {
if(strcmp(str, "noaction") == 0) return 0; if(strcmp(str, "No Action") == 0) return 0;
else if(strcmp(str, "unlock") == 0) return 1; else if(strcmp(str, "Unlock") == 0) return 1;
else if(strcmp(str, "lock") == 0) return 2; else if(strcmp(str, "Lock") == 0) return 2;
else if(strcmp(str, "lockngo") == 0) return 3; else if(strcmp(str, "Lock n Go") == 0) return 3;
else if(strcmp(str, "intelligent") == 0) return 4; else if(strcmp(str, "Intelligent") == 0) return 4;
return 99; return 99;
} }
NukiLock::ButtonPressAction NukiWrapper::buttonPressActionToEnum(const char* str) NukiLock::ButtonPressAction NukiWrapper::buttonPressActionToEnum(const char* str)
{ {
if(strcmp(str, "noaction") == 0) return NukiLock::ButtonPressAction::NoAction; if(strcmp(str, "No Action") == 0) return NukiLock::ButtonPressAction::NoAction;
else if(strcmp(str, "intelligent") == 0) return NukiLock::ButtonPressAction::Intelligent; else if(strcmp(str, "Intelligent") == 0) return NukiLock::ButtonPressAction::Intelligent;
else if(strcmp(str, "unlock") == 0) return NukiLock::ButtonPressAction::Unlock; else if(strcmp(str, "Unlock") == 0) return NukiLock::ButtonPressAction::Unlock;
else if(strcmp(str, "lock") == 0) return NukiLock::ButtonPressAction::Lock; else if(strcmp(str, "Lock") == 0) return NukiLock::ButtonPressAction::Lock;
else if(strcmp(str, "unlatch") == 0) return NukiLock::ButtonPressAction::Unlatch; else if(strcmp(str, "Unlatch") == 0) return NukiLock::ButtonPressAction::Unlatch;
else if(strcmp(str, "lockngo") == 0) return NukiLock::ButtonPressAction::LockNgo; else if(strcmp(str, "Lock n Go") == 0) return NukiLock::ButtonPressAction::LockNgo;
else if(strcmp(str, "showstatus") == 0) return NukiLock::ButtonPressAction::ShowStatus; else if(strcmp(str, "Show Status") == 0) return NukiLock::ButtonPressAction::ShowStatus;
return (NukiLock::ButtonPressAction)0xff; return (NukiLock::ButtonPressAction)0xff;
} }
Nuki::BatteryType NukiWrapper::batteryTypeToEnum(const char* str) Nuki::BatteryType NukiWrapper::batteryTypeToEnum(const char* str)
{ {
if(strcmp(str, "alkali") == 0) return Nuki::BatteryType::Alkali; if(strcmp(str, "Alkali") == 0) return Nuki::BatteryType::Alkali;
else if(strcmp(str, "accumulators") == 0) return Nuki::BatteryType::Accumulators; else if(strcmp(str, "Accumulators") == 0) return Nuki::BatteryType::Accumulators;
else if(strcmp(str, "lithium") == 0) return Nuki::BatteryType::Lithium; else if(strcmp(str, "Lithium") == 0) return Nuki::BatteryType::Lithium;
return (Nuki::BatteryType)0xff; return (Nuki::BatteryType)0xff;
} }
@@ -823,7 +823,7 @@ void NukiWrapper::onConfigUpdateReceived(const char *value)
{ {
Nuki::AdvertisingMode advmode = nukiInst->advertisingModeToEnum(json[basicKeys[i]]); Nuki::AdvertisingMode advmode = nukiInst->advertisingModeToEnum(json[basicKeys[i]]);
if(!(int)advmode == 0xff) if((int)advmode != 0xff)
{ {
if(_nukiConfig.advertisingMode == advmode) jsonResult[basicKeys[i]] = "unchanged"; if(_nukiConfig.advertisingMode == advmode) jsonResult[basicKeys[i]] = "unchanged";
else cmdResult = _nukiLock.setAdvertisingMode(advmode); else cmdResult = _nukiLock.setAdvertisingMode(advmode);
@@ -834,7 +834,7 @@ void NukiWrapper::onConfigUpdateReceived(const char *value)
{ {
Nuki::TimeZoneId tzid = nukiInst->timeZoneToEnum(json[basicKeys[i]]); Nuki::TimeZoneId tzid = nukiInst->timeZoneToEnum(json[basicKeys[i]]);
if(!(int)tzid == 0xff) if((int)tzid != 0xff)
{ {
if(_nukiConfig.timeZoneId == tzid) jsonResult[basicKeys[i]] = "unchanged"; if(_nukiConfig.timeZoneId == tzid) jsonResult[basicKeys[i]] = "unchanged";
else cmdResult = _nukiLock.setTimeZoneId(tzid); else cmdResult = _nukiLock.setTimeZoneId(tzid);
@@ -921,7 +921,7 @@ void NukiWrapper::onConfigUpdateReceived(const char *value)
{ {
NukiLock::ButtonPressAction sbpa = nukiInst->buttonPressActionToEnum(json[advancedKeys[i]]); NukiLock::ButtonPressAction sbpa = nukiInst->buttonPressActionToEnum(json[advancedKeys[i]]);
if(!(int)sbpa == 0xff) if((int)sbpa != 0xff)
{ {
if(_nukiAdvancedConfig.singleButtonPressAction == sbpa) jsonResult[advancedKeys[i]] = "unchanged"; if(_nukiAdvancedConfig.singleButtonPressAction == sbpa) jsonResult[advancedKeys[i]] = "unchanged";
else cmdResult = _nukiLock.setSingleButtonPressAction(sbpa); else cmdResult = _nukiLock.setSingleButtonPressAction(sbpa);
@@ -932,7 +932,7 @@ void NukiWrapper::onConfigUpdateReceived(const char *value)
{ {
NukiLock::ButtonPressAction dbpa = nukiInst->buttonPressActionToEnum(json[advancedKeys[i]]); NukiLock::ButtonPressAction dbpa = nukiInst->buttonPressActionToEnum(json[advancedKeys[i]]);
if(!(int)dbpa == 0xff) if((int)dbpa != 0xff)
{ {
if(_nukiAdvancedConfig.doubleButtonPressAction == dbpa) jsonResult[advancedKeys[i]] = "unchanged"; if(_nukiAdvancedConfig.doubleButtonPressAction == dbpa) jsonResult[advancedKeys[i]] = "unchanged";
else cmdResult = _nukiLock.setDoubleButtonPressAction(dbpa); else cmdResult = _nukiLock.setDoubleButtonPressAction(dbpa);
@@ -954,7 +954,7 @@ void NukiWrapper::onConfigUpdateReceived(const char *value)
{ {
Nuki::BatteryType battype = nukiInst->batteryTypeToEnum(json[advancedKeys[i]]); Nuki::BatteryType battype = nukiInst->batteryTypeToEnum(json[advancedKeys[i]]);
if(!(int)battype == 0xff) if((int)battype != 0xff)
{ {
if(_nukiAdvancedConfig.batteryType == battype) jsonResult[advancedKeys[i]] = "unchanged"; if(_nukiAdvancedConfig.batteryType == battype) jsonResult[advancedKeys[i]] = "unchanged";
else cmdResult = _nukiLock.setBatteryType(battype); else cmdResult = _nukiLock.setBatteryType(battype);

View File

@@ -1239,7 +1239,7 @@ void WebCfgServer::buildAccLvlHtml(String &response)
_preferences->getBytes(preference_conf_lock_advanced_acl, &advancedLockConfigAclPrefs, sizeof(advancedLockConfigAclPrefs)); _preferences->getBytes(preference_conf_lock_advanced_acl, &advancedLockConfigAclPrefs, sizeof(advancedLockConfigAclPrefs));
response.concat("<h3>Nuki Lock Access Control</h3>"); response.concat("<h3>Nuki Lock Access Control</h3>");
response.concat("<input type=\"button\" value=\"Allow all\" onclick=\""); response.concat("<input type=\"button\" value=\"Allow all\" style=\"margin-right: 10px;\" onclick=\"");
response.concat("for(el of document.getElementsByClassName('chk_access_lock')){if(el.constructor.name==='HTMLInputElement'&amp;&amp;el.type==='checkbox')el.checked=true;}\">"); response.concat("for(el of document.getElementsByClassName('chk_access_lock')){if(el.constructor.name==='HTMLInputElement'&amp;&amp;el.type==='checkbox')el.checked=true;}\">");
response.concat("<input type=\"button\" value=\"Disallow all\" onclick=\""); response.concat("<input type=\"button\" value=\"Disallow all\" onclick=\"");
response.concat("for(el of document.getElementsByClassName('chk_access_lock')){if(el.constructor.name==='HTMLInputElement'&amp;&amp;el.type==='checkbox')el.checked=false;}\">"); response.concat("for(el of document.getElementsByClassName('chk_access_lock')){if(el.constructor.name==='HTMLInputElement'&amp;&amp;el.type==='checkbox')el.checked=false;}\">");
@@ -1257,7 +1257,7 @@ void WebCfgServer::buildAccLvlHtml(String &response)
response.concat("</table><br>"); response.concat("</table><br>");
response.concat("<h3>Nuki Lock Config Control (Requires PIN to be set)</h3>"); response.concat("<h3>Nuki Lock Config Control (Requires PIN to be set)</h3>");
response.concat("<input type=\"button\" value=\"Allow all\" onclick=\""); response.concat("<input type=\"button\" value=\"Allow all\" style=\"margin-right: 10px;\" onclick=\"");
response.concat("for(el of document.getElementsByClassName('chk_config_lock')){if(el.constructor.name==='HTMLInputElement'&amp;&amp;el.type==='checkbox')el.checked=true;}\">"); response.concat("for(el of document.getElementsByClassName('chk_config_lock')){if(el.constructor.name==='HTMLInputElement'&amp;&amp;el.type==='checkbox')el.checked=true;}\">");
response.concat("<input type=\"button\" value=\"Disallow all\" onclick=\""); response.concat("<input type=\"button\" value=\"Disallow all\" onclick=\"");
response.concat("for(el of document.getElementsByClassName('chk_config_lock')){if(el.constructor.name==='HTMLInputElement'&amp;&amp;el.type==='checkbox')el.checked=false;}\">"); response.concat("for(el of document.getElementsByClassName('chk_config_lock')){if(el.constructor.name==='HTMLInputElement'&amp;&amp;el.type==='checkbox')el.checked=false;}\">");
@@ -1312,7 +1312,7 @@ void WebCfgServer::buildAccLvlHtml(String &response)
_preferences->getBytes(preference_conf_opener_advanced_acl, &advancedOpenerConfigAclPrefs, sizeof(advancedOpenerConfigAclPrefs)); _preferences->getBytes(preference_conf_opener_advanced_acl, &advancedOpenerConfigAclPrefs, sizeof(advancedOpenerConfigAclPrefs));
response.concat("<h3>Nuki Opener Access Control</h3>"); response.concat("<h3>Nuki Opener Access Control</h3>");
response.concat("<input type=\"button\" value=\"Allow all\" onclick=\""); response.concat("<input type=\"button\" value=\"Allow all\" style=\"margin-right: 10px;\" onclick=\"");
response.concat("for(el of document.getElementsByClassName('chk_access_opener')){if(el.constructor.name==='HTMLInputElement'&amp;&amp;el.type==='checkbox')el.checked=true;}\">"); response.concat("for(el of document.getElementsByClassName('chk_access_opener')){if(el.constructor.name==='HTMLInputElement'&amp;&amp;el.type==='checkbox')el.checked=true;}\">");
response.concat("<input type=\"button\" value=\"Disallow all\" onclick=\""); response.concat("<input type=\"button\" value=\"Disallow all\" onclick=\"");
response.concat("for(el of document.getElementsByClassName('chk_access_opener')){if(el.constructor.name==='HTMLInputElement'&amp;&amp;el.type==='checkbox')el.checked=false;}\">"); response.concat("for(el of document.getElementsByClassName('chk_access_opener')){if(el.constructor.name==='HTMLInputElement'&amp;&amp;el.type==='checkbox')el.checked=false;}\">");
@@ -1329,7 +1329,7 @@ void WebCfgServer::buildAccLvlHtml(String &response)
response.concat("</table><br>"); response.concat("</table><br>");
response.concat("<h3>Nuki Opener Config Control (Requires PIN to be set)</h3>"); response.concat("<h3>Nuki Opener Config Control (Requires PIN to be set)</h3>");
response.concat("<input type=\"button\" value=\"Allow all\" onclick=\""); response.concat("<input type=\"button\" value=\"Allow all\" style=\"margin-right: 10px;\" onclick=\"");
response.concat("for(el of document.getElementsByClassName('chk_config_opener')){if(el.constructor.name==='HTMLInputElement'&amp;&amp;el.type==='checkbox')el.checked=true;}\">"); response.concat("for(el of document.getElementsByClassName('chk_config_opener')){if(el.constructor.name==='HTMLInputElement'&amp;&amp;el.type==='checkbox')el.checked=true;}\">");
response.concat("<input type=\"button\" value=\"Disallow all\" onclick=\""); response.concat("<input type=\"button\" value=\"Disallow all\" onclick=\"");
response.concat("for(el of document.getElementsByClassName('chk_config_opener')){if(el.constructor.name==='HTMLInputElement'&amp;&amp;el.type==='checkbox')el.checked=false;}\">"); response.concat("for(el of document.getElementsByClassName('chk_config_opener')){if(el.constructor.name==='HTMLInputElement'&amp;&amp;el.type==='checkbox')el.checked=false;}\">");
@@ -1346,7 +1346,7 @@ void WebCfgServer::buildAccLvlHtml(String &response)
printCheckBox(response, "CONFOPNFOB1", "Fob Action 1", ((int)basicOpenerConfigAclPrefs[8] == 1), "chk_config_opener"); printCheckBox(response, "CONFOPNFOB1", "Fob Action 1", ((int)basicOpenerConfigAclPrefs[8] == 1), "chk_config_opener");
printCheckBox(response, "CONFOPNFOB2", "Fob Action 2", ((int)basicOpenerConfigAclPrefs[9] == 1), "chk_config_opener"); printCheckBox(response, "CONFOPNFOB2", "Fob Action 2", ((int)basicOpenerConfigAclPrefs[9] == 1), "chk_config_opener");
printCheckBox(response, "CONFOPNFOB3", "Fob Action 3", ((int)basicOpenerConfigAclPrefs[10] == 1), "chk_config_opener"); printCheckBox(response, "CONFOPNFOB3", "Fob Action 3", ((int)basicOpenerConfigAclPrefs[10] == 1), "chk_config_opener");
printCheckBox(response, "CONFOPNOPM", "Operation Mode", ((int)basicOpenerConfigAclPrefs[11] == 1), "chk_config_opener"); printCheckBox(response, "CONFOPNOPM", "Operating Mode", ((int)basicOpenerConfigAclPrefs[11] == 1), "chk_config_opener");
printCheckBox(response, "CONFOPNADVM", "Advertising Mode", ((int)basicOpenerConfigAclPrefs[12] == 1), "chk_config_opener"); printCheckBox(response, "CONFOPNADVM", "Advertising Mode", ((int)basicOpenerConfigAclPrefs[12] == 1), "chk_config_opener");
printCheckBox(response, "CONFOPNTZID", "Timezone ID", ((int)basicOpenerConfigAclPrefs[13] == 1), "chk_config_opener"); printCheckBox(response, "CONFOPNTZID", "Timezone ID", ((int)basicOpenerConfigAclPrefs[13] == 1), "chk_config_opener");
@@ -1356,7 +1356,7 @@ void WebCfgServer::buildAccLvlHtml(String &response)
printCheckBox(response, "CONFOPNESD", "Eletric Strike Delay", ((int)advancedOpenerConfigAclPrefs[3] == 1), "chk_config_opener"); printCheckBox(response, "CONFOPNESD", "Eletric Strike Delay", ((int)advancedOpenerConfigAclPrefs[3] == 1), "chk_config_opener");
printCheckBox(response, "CONFOPNRESD", "Random Electric Strike Delay", ((int)advancedOpenerConfigAclPrefs[4] == 1), "chk_config_opener"); printCheckBox(response, "CONFOPNRESD", "Random Electric Strike Delay", ((int)advancedOpenerConfigAclPrefs[4] == 1), "chk_config_opener");
printCheckBox(response, "CONFOPNESDUR", "Electric Strike Duration", ((int)advancedOpenerConfigAclPrefs[5] == 1), "chk_config_opener"); printCheckBox(response, "CONFOPNESDUR", "Electric Strike Duration", ((int)advancedOpenerConfigAclPrefs[5] == 1), "chk_config_opener");
printCheckBox(response, "CONFOPNDRTOAR", "disable RTO after ring", ((int)advancedOpenerConfigAclPrefs[6] == 1), "chk_config_opener"); printCheckBox(response, "CONFOPNDRTOAR", "Disable RTO after ring", ((int)advancedOpenerConfigAclPrefs[6] == 1), "chk_config_opener");
printCheckBox(response, "CONFOPNRTOT", "RTO timeout", ((int)advancedOpenerConfigAclPrefs[7] == 1), "chk_config_opener"); printCheckBox(response, "CONFOPNRTOT", "RTO timeout", ((int)advancedOpenerConfigAclPrefs[7] == 1), "chk_config_opener");
printCheckBox(response, "CONFOPNDRBSUP", "Doorbell suppression", ((int)advancedOpenerConfigAclPrefs[8] == 1), "chk_config_opener"); printCheckBox(response, "CONFOPNDRBSUP", "Doorbell suppression", ((int)advancedOpenerConfigAclPrefs[8] == 1), "chk_config_opener");
printCheckBox(response, "CONFOPNDRBSUPDUR", "Doorbell suppression duration", ((int)advancedOpenerConfigAclPrefs[9] == 1), "chk_config_opener"); printCheckBox(response, "CONFOPNDRBSUPDUR", "Doorbell suppression duration", ((int)advancedOpenerConfigAclPrefs[9] == 1), "chk_config_opener");
@@ -1656,7 +1656,7 @@ void WebCfgServer::buildInfoHtml(String &response)
response.concat((int)basicOpenerConfigAclPrefs[9] ? "Allowed\n" : "Disallowed\n"); response.concat((int)basicOpenerConfigAclPrefs[9] ? "Allowed\n" : "Disallowed\n");
response.concat("Opener config ACL (Fob Action 3): "); response.concat("Opener config ACL (Fob Action 3): ");
response.concat((int)basicOpenerConfigAclPrefs[10] ? "Allowed\n" : "Disallowed\n"); response.concat((int)basicOpenerConfigAclPrefs[10] ? "Allowed\n" : "Disallowed\n");
response.concat("Opener config ACL (Operation Mode): "); response.concat("Opener config ACL (Operating Mode): ");
response.concat((int)basicOpenerConfigAclPrefs[11] ? "Allowed\n" : "Disallowed\n"); response.concat((int)basicOpenerConfigAclPrefs[11] ? "Allowed\n" : "Disallowed\n");
response.concat("Opener config ACL (Advertising Mode): "); response.concat("Opener config ACL (Advertising Mode): ");
response.concat((int)basicOpenerConfigAclPrefs[12] ? "Allowed\n" : "Disallowed\n"); response.concat((int)basicOpenerConfigAclPrefs[12] ? "Allowed\n" : "Disallowed\n");
@@ -1674,7 +1674,7 @@ void WebCfgServer::buildInfoHtml(String &response)
response.concat((int)advancedOpenerConfigAclPrefs[4] ? "Allowed\n" : "Disallowed\n"); response.concat((int)advancedOpenerConfigAclPrefs[4] ? "Allowed\n" : "Disallowed\n");
response.concat("Opener config ACL (Electric Strike Duration): "); response.concat("Opener config ACL (Electric Strike Duration): ");
response.concat((int)advancedOpenerConfigAclPrefs[5] ? "Allowed\n" : "Disallowed\n"); response.concat((int)advancedOpenerConfigAclPrefs[5] ? "Allowed\n" : "Disallowed\n");
response.concat("Opener config ACL (disable RTO after ring): "); response.concat("Opener config ACL (Disable RTO after ring): ");
response.concat((int)advancedOpenerConfigAclPrefs[6] ? "Allowed\n" : "Disallowed\n"); response.concat((int)advancedOpenerConfigAclPrefs[6] ? "Allowed\n" : "Disallowed\n");
response.concat("Opener config ACL (RTO timeout): "); response.concat("Opener config ACL (RTO timeout): ");
response.concat((int)advancedOpenerConfigAclPrefs[7] ? "Allowed\n" : "Disallowed\n"); response.concat((int)advancedOpenerConfigAclPrefs[7] ? "Allowed\n" : "Disallowed\n");