Merge pull request #193 from bobbycar-graz/fixed-newsettings
Co-authored-by: Peter Pötzi <peter.poetzi@gmail.com>
This commit is contained in:
@ -283,7 +283,6 @@ void WirelessSettingsCallbacks::onWrite(NimBLECharacteristic* pCharacteristic)
|
||||
ESP_LOGI(TAG, "[ble_config]: Set wifi%i: WiFi-SSID: %s, WiFi-Password: ***", doc["wifi_index"].as<int>(), doc["wifi_ssid"].as<const char*>());
|
||||
configs.write_config(configs.wifi_configs[index].ssid, doc["wifi_ssid"].as<std::string>());
|
||||
configs.write_config(configs.wifi_configs[index].key, doc["wifi_pass"].as<std::string>());
|
||||
saveSettings();
|
||||
} else {
|
||||
const auto deserialized = deserializeJson(doc, val);
|
||||
ESP_LOGW(TAG, "Unkown type %s -> json: %.*s %s", doc["type"].as<const char*>(), val.size(), val.data(), deserialized.c_str());
|
||||
|
@ -13,13 +13,13 @@ using namespace espgui;
|
||||
|
||||
GarageMenu::GarageMenu()
|
||||
{
|
||||
for (uint8_t index = 0; index < stringSettings.wirelessDoors.size(); index++)
|
||||
for (uint8_t index = 0; index < configs.wireless_door_configs.size(); index++)
|
||||
{
|
||||
const auto &wirelessDoor = stringSettings.wirelessDoors[index];
|
||||
if (wirelessDoor.doorId.empty() || wirelessDoor.doorToken.empty())
|
||||
const auto &wirelessDoor = configs.wireless_door_configs[index];
|
||||
if (wirelessDoor.doorId.value.empty() || wirelessDoor.doorToken.value.empty())
|
||||
continue;
|
||||
auto &menuitem = constructMenuItem<makeComponentArgs<MenuItem, garagenmenu::SendEspNowMessageAction, ChangeableText>>(index);
|
||||
menuitem.setTitle(wirelessDoor.doorId);
|
||||
menuitem.setTitle(wirelessDoor.doorId.value);
|
||||
}
|
||||
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "espnowfunctions.h"
|
||||
#include "texts.h"
|
||||
#include "globals.h"
|
||||
#include "newsettings.h"
|
||||
|
||||
namespace garagenmenu {
|
||||
class SendEspNowMessageAction : public virtual espgui::ActionInterface
|
||||
@ -18,7 +19,7 @@ public:
|
||||
SendEspNowMessageAction(uint8_t index) : m_index{index} {}
|
||||
void triggered() override
|
||||
{
|
||||
if (const auto error = espnow::send_espnow_message(fmt::format("BOBBYOPEN:{}:{}", stringSettings.wirelessDoors[m_index].doorId, stringSettings.wirelessDoors[m_index].doorToken)); error != ESP_OK)
|
||||
if (const auto error = espnow::send_espnow_message(fmt::format("BOBBYOPEN:{}:{}", configs.wireless_door_configs[m_index].doorId.value, configs.wireless_door_configs[m_index].doorToken.value)); error != ESP_OK)
|
||||
{
|
||||
ESP_LOGE("BOBBY", "send_espnow_message() failed with: %s", esp_err_to_name(error));
|
||||
return;
|
||||
|
@ -49,6 +49,18 @@ public:
|
||||
ConfigWrapper<wifi_stack::ip_address_t> staticDns2;
|
||||
};
|
||||
|
||||
class WirelessDoorsConfig
|
||||
{
|
||||
public:
|
||||
WirelessDoorsConfig(const char *doorIdKey, const char *doorTokenKey) :
|
||||
doorId {std::string{}, DoReset, StringMaxSize<24>, doorIdKey },
|
||||
doorToken {std::string{}, DoReset, StringMaxSize<24>, doorTokenKey }
|
||||
{}
|
||||
|
||||
ConfigWrapper<std::string> doorId;
|
||||
ConfigWrapper<std::string> doorToken;
|
||||
};
|
||||
|
||||
class ConfigContainer
|
||||
{
|
||||
using mac_t = wifi_stack::mac_t;
|
||||
@ -80,6 +92,14 @@ public:
|
||||
|
||||
ConfigWrapper<bool> canBusResetOnError {false, DoReset, {}, "canBusRstErr" };
|
||||
|
||||
std::array<WirelessDoorsConfig, 5> wireless_door_configs {
|
||||
WirelessDoorsConfig { "door_id0", "door_token0" },
|
||||
WirelessDoorsConfig { "door_id1", "door_token1" },
|
||||
WirelessDoorsConfig { "door_id2", "door_token2" },
|
||||
WirelessDoorsConfig { "door_id3", "door_token3" },
|
||||
WirelessDoorsConfig { "door_id4", "door_token4" }
|
||||
};
|
||||
|
||||
ConfigWrapper<std::string> bluetoothName {defaultHostname, DoReset, StringMinMaxSize<4, 32>, "bluetoothName" };
|
||||
|
||||
ConfigWrapper<bool> reverseBeep {false, DoReset, {}, "reverseBeep" };
|
||||
@ -204,6 +224,17 @@ public:
|
||||
\
|
||||
x(canBusResetOnError) \
|
||||
\
|
||||
x(wireless_door_configs[0].doorId) \
|
||||
x(wireless_door_configs[0].doorToken) \
|
||||
x(wireless_door_configs[1].doorId) \
|
||||
x(wireless_door_configs[1].doorToken) \
|
||||
x(wireless_door_configs[2].doorId) \
|
||||
x(wireless_door_configs[2].doorToken) \
|
||||
x(wireless_door_configs[3].doorId) \
|
||||
x(wireless_door_configs[3].doorToken) \
|
||||
x(wireless_door_configs[4].doorId) \
|
||||
x(wireless_door_configs[4].doorToken) \
|
||||
\
|
||||
x(bluetoothName) \
|
||||
\
|
||||
x(reverseBeep) \
|
||||
|
@ -48,15 +48,6 @@ struct StringSettings
|
||||
std::string otaServerBranch;
|
||||
#endif
|
||||
std::string webserver_password;
|
||||
|
||||
#ifdef FEATURE_ESPNOW
|
||||
struct ConfiguredWirelessDoors {
|
||||
std::string doorId;
|
||||
std::string doorToken;
|
||||
};
|
||||
|
||||
std::array<ConfiguredWirelessDoors, 5> wirelessDoors;
|
||||
#endif
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
@ -109,19 +100,6 @@ void StringSettings::executeForEveryCommonSetting(T &&callable)
|
||||
callable("dnskey", dns_key);
|
||||
#endif
|
||||
callable("webpw", webserver_password);
|
||||
|
||||
#ifdef FEATURE_ESPNOW
|
||||
callable("doorId0", wirelessDoors[0].doorId);
|
||||
callable("doorToken0", wirelessDoors[0].doorToken);
|
||||
callable("doorId1", wirelessDoors[1].doorId);
|
||||
callable("doorToken1", wirelessDoors[1].doorToken);
|
||||
callable("doorId2", wirelessDoors[2].doorId);
|
||||
callable("doorToken2", wirelessDoors[2].doorToken);
|
||||
callable("doorId3", wirelessDoors[3].doorId);
|
||||
callable("doorToken3", wirelessDoors[3].doorToken);
|
||||
callable("doorId4", wirelessDoors[4].doorId);
|
||||
callable("doorToken4", wirelessDoors[4].doorToken);
|
||||
#endif
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
|
Reference in New Issue
Block a user