Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified bin/firmware.bin
Binary file not shown.
2 changes: 1 addition & 1 deletion project.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "AirQualityMonitor",
"about": "Умный монитор качества воздуха",
"version": "1.3.6",
"version": "1.3.7",
"notes": "",
"builds": [
{
Expand Down
Binary file modified resources/.DS_Store
Binary file not shown.
9 changes: 7 additions & 2 deletions src/configs/config.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#pragma once
#include <Arduino.h>
// #include "configs/secrets.h" // HINT: for development only
#include "configs/secrets.example.h"

#define STRINGIZER(arg) #arg
Expand All @@ -9,13 +8,19 @@
// app
#define APP_NAME "AirQualityMonitor"
#define APP_VERSION STR_VALUE(BUILD_VERSION) // Change version via project.json!
#define APP_DEFAULT_LOG_LEVEL "ERROR"
#define APP_LOG_LEVEL "DEBUG" // DEBUG, ERROR, WARN, INFO
// #define ENABLE_TEST // Enable mock sensor reading
#define APP_DARK_THEME false // Select color theme
#define APP_CO2_DEFAULT_ALERT_TRHLD 1200 // CO2 threshold for red blinking
#define APP_CO2_DEFAULT_SCALE_TYPE "4 color"
// app

// maint
// #define DB_RESET // Factory reset database
#ifdef DB_RESET
#include "configs/secrets.h" // HINT: for development only
#endif
#define DB_NAME "/settings.db"
#define PROJECT_PATH "WildEgor/AirQualityMonitor/master/project.json"
#define USER_MANUAL_URL "https://github.com/WildEgor/AirQualityMonitor/blob/master/docs/en/UserManual.md"
Expand All @@ -35,6 +40,7 @@
#define SEC_5 5000
#define SEC_10 10000
#define SEC_30 30000
#define EMPTY_SECRET "*****"
// system

// MQTT service for interaction with Yandex (see wqtt.ru)
Expand All @@ -59,7 +65,6 @@
#define RGB_ENABLED false
#define RGB_PIN 19
#define RGB_NUMPIXELS 4 // Number of LEDs in the strip. Min: 1, Max: 255
#define RGB_DEFAULT_ALERT_TRHLD 1200 // CO2 threshold for red blinking
// rgb settings

// hmi
Expand Down
38 changes: 32 additions & 6 deletions src/db/settings_db.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,20 +32,22 @@ SettingsDB::SettingsDB() : LoopTickerBase(), _db(&LittleFS, DB_NAME)
_db.begin();

/**
* @note Сброс базы данных к заводским настройкам, если определён RESET_DB
* @note Reset database
*/
#ifdef RESET_DB
#ifdef DB_RESET
_db.reset();
_db.update();
#endif

/**
* @note Инициализация разделов настроек: APP, WIFI, MQTT, CO2
* @note Init settings: APP, WIFI, MQTT, CO2
*/
// ============================== APP ==============================
_db.init(kk::rgb_enabled, RGB_ENABLED);
_db.init(kk::use_dark_theme, APP_DARK_THEME);
_db.init(kk::log_lvl, APP_LOG_LEVEL);
_db.init(kk::rotation_display, TFT_ROTATION_0);
_db.init(kk::cfm_fr, false);

// ============================== WIFI ==============================
_db.init(kk::wifi_ssid, WIFI_SSID);
Expand All @@ -60,11 +62,11 @@ SettingsDB::SettingsDB() : LoopTickerBase(), _db(&LittleFS, DB_NAME)
_db.init(kk::mqtt_device_id, MQTT_DEFAULT_DEVICE_ID);

// ============================== CO2 ==============================
_db.init(kk::co2_scale_type, "4 color");
_db.init(kk::co2_alarm_lvl, RGB_DEFAULT_ALERT_TRHLD);
_db.init(kk::co2_scale_type, APP_CO2_DEFAULT_SCALE_TYPE);
_db.init(kk::co2_alarm_lvl, APP_CO2_DEFAULT_ALERT_TRHLD);

/**
* @note Вывод содержимого базы данных в сериал лог
* @note Show db dump
*/
_db.dump(Serial);

Expand All @@ -73,6 +75,30 @@ SettingsDB::SettingsDB() : LoopTickerBase(), _db(&LittleFS, DB_NAME)
this->addLoop();
}

void SettingsDB::factory_reset()
{
_db.reset();

_db[kk::cfm_fr] = false;
_db[kk::rgb_enabled] = false;
_db[kk::use_dark_theme] = false;
_db[kk::log_lvl] = APP_DEFAULT_LOG_LEVEL;
_db[kk::rotation_display] = TFT_ROTATION_0;
_db[kk::wifi_ssid] = EMPTY_SECRET;
_db[kk::wifi_pass] = EMPTY_SECRET;
_db[kk::mqtt_enabled] = false;
_db[kk::mqtt_server] = EMPTY_SECRET;
_db[kk::mqtt_username] = EMPTY_SECRET;
_db[kk::mqtt_pass] = EMPTY_SECRET;
_db[kk::mqtt_device_id] = MQTT_DEFAULT_DEVICE_ID;
_db[kk::co2_scale_type] = APP_CO2_DEFAULT_SCALE_TYPE;
_db[kk::co2_alarm_lvl] = APP_CO2_DEFAULT_ALERT_TRHLD;

_db.update();

ESP.restart();
}

void SettingsDB::exec()
{
_db.tick();
Expand Down
8 changes: 7 additions & 1 deletion src/db/settings_db.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ enum kk : size_t
rgb_enabled, ///< RGB enabled flag
use_dark_theme, ///< Use dark theme flag
rotation_display, ///< Rotation display
log_lvl ///< Log level
log_lvl, ///< Log level
cfm_fr ///< Configrm factory reset
};

/**
Expand Down Expand Up @@ -58,6 +59,11 @@ class SettingsDB : public LoopTickerBase
*/
void setup();

/**
* @brief Reset db values to factory values and reboot device
*/
void factory_reset();

/**
* @brief Handle database updates
*/
Expand Down
Loading