JXCT Soil Sensor 7-in-1 v3.4.9 (June 2025)
Professional IoT soil monitoring system with ESP32, Modbus RTU, MQTT, and advanced compensation algorithms
Загрузка...
Поиск...
Не найдено
jxct_constants.h
См. документацию.
1#pragma once
2
8
9// ============================================================================
10// ВРЕМЕННЫЕ КОНСТАНТЫ (миллисекунды)
11// ============================================================================
12
13// Интервалы чтения и публикации
14constexpr unsigned long DEFAULT_SENSOR_READ_INTERVAL = 5000; // 5 секунд
15constexpr unsigned long DEFAULT_MQTT_PUBLISH_INTERVAL = 30000; // 30 секунд
16constexpr unsigned long DEFAULT_THINGSPEAK_INTERVAL = 60000; // 1 минута
17constexpr unsigned long DEFAULT_NTP_UPDATE_INTERVAL = 3600000; // 1 час
18
19// Таймауты и задержки
20constexpr unsigned long MODBUS_CACHE_TIMEOUT = 5000; // 5 секунд
21constexpr unsigned long MODBUS_RETRY_DELAY = 1000; // 1 секунда
22constexpr unsigned long DNS_CACHE_TTL = 300000; // 5 минут
23constexpr unsigned long MQTT_RECONNECT_INTERVAL = 5000; // 5 секунд
24constexpr unsigned long SENSOR_JSON_CACHE_TTL = 1000; // 1 секунда
25
26// Системные интервалы
27constexpr unsigned long STATUS_PRINT_INTERVAL = 30000; // 30 секунд
28constexpr unsigned long JXCT_WATCHDOG_TIMEOUT_SEC = 30; // 30 секунд (избегаем конфликта)
29constexpr unsigned long JXCT_BUTTON_HOLD_TIME_MS = 2000; // 2 секунды (избегаем конфликта)
30
31// LED индикация
32constexpr unsigned long LED_BLINK_SLOW = 1000; // 1 секунда
33constexpr unsigned long LED_BLINK_NORMAL = 500; // 0.5 секунды
34constexpr unsigned long LED_BLINK_FAST = 100; // 0.1 секунды
35
36// ============================================================================
37// СЕТЕВЫЕ КОНСТАНТЫ
38// ============================================================================
39
40// Порты и адреса
41constexpr int DEFAULT_WEB_SERVER_PORT = 80;
42constexpr int DEFAULT_MQTT_PORT = 1883;
43constexpr int DEFAULT_DNS_PORT = 53;
44constexpr uint8_t DEFAULT_MODBUS_ADDRESS = 1;
45
46// Размеры буферов
47constexpr size_t MQTT_BUFFER_SIZE = 512;
48constexpr size_t JSON_BUFFER_SIZE = 256;
49constexpr size_t TOPIC_BUFFER_SIZE = 128;
50constexpr size_t CLIENT_ID_BUFFER_SIZE = 32;
51constexpr size_t HOSTNAME_BUFFER_SIZE = 64;
52
53// Лимиты подключений
54constexpr int WIFI_CONNECTION_ATTEMPTS = 20;
55constexpr int MQTT_CONNECTION_ATTEMPTS = 3;
56constexpr unsigned long WIFI_CONNECTION_TIMEOUT = 10000; // 10 секунд
57
58// ============================================================================
59// MODBUS КОНСТАНТЫ
60// ============================================================================
61
62// Параметры связи
63constexpr unsigned long MODBUS_BAUD_RATE = 9600;
64constexpr uint8_t MODBUS_DATA_BITS = 8;
65constexpr uint8_t MODBUS_STOP_BITS = 1;
66constexpr uint8_t MODBUS_PARITY = 0; // None
67
68// Повторы и таймауты
69constexpr uint8_t MODBUS_MAX_RETRIES = 3;
70constexpr unsigned long MODBUS_RESPONSE_TIMEOUT = 2000; // 2 секунды
71constexpr unsigned long MODBUS_FRAME_DELAY = 100; // 100 мс между кадрами
72
73// ============================================================================
74// ВАЛИДАЦИОННЫЕ КОНСТАНТЫ
75// ============================================================================
76
77// Диапазоны значений датчика
78constexpr float SENSOR_TEMP_MIN = -40.0f;
79constexpr float SENSOR_TEMP_MAX = 80.0f;
80constexpr float SENSOR_HUMIDITY_MIN = 0.0f;
81constexpr float SENSOR_HUMIDITY_MAX = 100.0f;
82constexpr float SENSOR_PH_MIN = 0.0f;
83constexpr float SENSOR_PH_MAX = 14.0f;
84constexpr uint16_t SENSOR_EC_MIN = 0;
85constexpr uint16_t SENSOR_EC_MAX = 20000;
86constexpr uint16_t SENSOR_NPK_MIN = 0;
87constexpr uint16_t SENSOR_NPK_MAX = 9999;
88
89// Диапазоны конфигурации
90constexpr unsigned long CONFIG_INTERVAL_MIN = 1000; // 1 секунда
91constexpr unsigned long CONFIG_INTERVAL_MAX = 3600000; // 1 час
92constexpr unsigned long CONFIG_THINGSPEAK_MIN = 15000; // 15 секунд (лимит API)
93constexpr unsigned long CONFIG_THINGSPEAK_MAX = 7200000; // 2 часа
94constexpr int CONFIG_MQTT_PORT_MIN = 1;
95constexpr int CONFIG_MQTT_PORT_MAX = 65535;
96
97// ============================================================================
98// АЛГОРИТМИЧЕСКИЕ КОНСТАНТЫ
99// ============================================================================
100
101// Скользящее среднее
102constexpr uint8_t MOVING_AVERAGE_WINDOW_MIN = 1;
103constexpr uint8_t MOVING_AVERAGE_WINDOW_MAX = 20;
104constexpr uint8_t MOVING_AVERAGE_WINDOW_DEFAULT = 5;
105
106// Дельта-фильтры (пороги изменений)
107constexpr float DEFAULT_DELTA_TEMPERATURE = 0.5f; // 0.5°C
108constexpr float DEFAULT_DELTA_HUMIDITY = 2.0f; // 2%
109constexpr float DEFAULT_DELTA_PH = 0.1f; // 0.1 pH
110constexpr float DEFAULT_DELTA_EC = 50.0f; // 50 µS/cm
111constexpr float DEFAULT_DELTA_NPK = 10.0f; // 10 mg/kg
112
113// Принудительная публикация
114constexpr uint8_t DEFAULT_FORCE_PUBLISH_CYCLES = 10; // Каждые 10 циклов
115
116// ============================================================================
117// СТРОКОВЫЕ КОНСТАНТЫ
118// ============================================================================
119
120// WiFi
121constexpr const char* JXCT_WIFI_AP_PASS = "12345678"; // Избегаем конфликта
122constexpr const char* WIFI_HOSTNAME_PREFIX = "jxct-";
123
124// MQTT топики
125constexpr const char* MQTT_TOPIC_STATE = "/state";
126constexpr const char* MQTT_TOPIC_STATUS = "/status";
127constexpr const char* MQTT_TOPIC_COMMAND = "/command";
128constexpr const char* MQTT_TOPIC_AVAILABILITY = "/availability";
129
130// Home Assistant
131constexpr const char* HASS_DISCOVERY_PREFIX = "homeassistant/sensor/";
132constexpr const char* HASS_CONFIG_SUFFIX = "/config";
133
134// HTTP заголовки
135constexpr const char* HTTP_CONTENT_TYPE_JSON = "application/json";
136constexpr const char* HTTP_CONTENT_TYPE_HTML = "text/html; charset=utf-8";
137constexpr const char* HTTP_CACHE_CONTROL = "no-cache, no-store, must-revalidate";
138
139// ============================================================================
140// GPIO КОНСТАНТЫ
141// ============================================================================
142
143constexpr int RESET_BUTTON_PIN = 0; // GPIO0
144constexpr int JXCT_STATUS_LED_PIN = 2; // GPIO2 (встроенный LED) - избегаем конфликта
145
146// Modbus RS485 пины
147constexpr int MODBUS_RX_PIN = 16; // GPIO16 - прием данных
148constexpr int MODBUS_TX_PIN = 17; // GPIO17 - передача данных
149constexpr int MODBUS_DE_PIN = 4; // GPIO4 - управление передачей (Driver Enable)
150constexpr int MODBUS_RE_PIN = 5; // GPIO5 - управление приемом (Receiver Enable)
151
152// ============================================================================
153// ПРОИЗВОДИТЕЛЬНОСТЬ И ПАМЯТЬ
154// ============================================================================
155
156// Размеры стеков задач (в байтах)
157constexpr size_t SENSOR_TASK_STACK_SIZE = 4096;
158constexpr size_t RESET_BUTTON_TASK_STACK_SIZE = 2048;
159constexpr size_t WEB_SERVER_TASK_STACK_SIZE = 8192;
160
161// Приоритеты задач
162constexpr UBaseType_t SENSOR_TASK_PRIORITY = 2;
163constexpr UBaseType_t RESET_BUTTON_TASK_PRIORITY = 1;
164constexpr UBaseType_t WEB_SERVER_TASK_PRIORITY = 1;
165
166// Лимиты памяти
167constexpr size_t MAX_CONFIG_JSON_SIZE = 2048; // 2KB для конфигурации
168constexpr size_t MAX_SENSOR_JSON_SIZE = 512; // 512B для данных датчика
169constexpr size_t MAX_LOG_MESSAGE_SIZE = 256; // 256B для лог сообщений
170
171// ============================================================================
172// ОТЛАДКА И ЛОГИРОВАНИЕ
173// ============================================================================
174
175// Уровни логирования (определены в logger.h, но дублируем)
176constexpr int LOG_LEVEL_ERROR = 0;
177constexpr int LOG_LEVEL_WARN = 1;
178constexpr int LOG_LEVEL_INFO = 2;
179constexpr int LOG_LEVEL_DEBUG = 3;
180
181// Отладочные флаги
182#ifdef DEBUG_BUILD
183constexpr bool DEBUG_MODBUS_ENABLED = true;
184constexpr bool DEBUG_MQTT_ENABLED = true;
185constexpr bool DEBUG_WIFI_ENABLED = true;
186#else
187constexpr bool DEBUG_MODBUS_ENABLED = false;
188constexpr bool DEBUG_MQTT_ENABLED = false;
189constexpr bool DEBUG_WIFI_ENABLED = false;
190#endif
191
192// ============================================================================
193// ВЕРСИОНИРОВАНИЕ И СОВМЕСТИМОСТЬ
194// ============================================================================
195
196// API версии
197constexpr const char* API_VERSION_V1 = "v1";
198constexpr const char* API_VERSION_CURRENT = API_VERSION_V1;
199
200// Совместимость конфигурации
201constexpr int CONFIG_VERSION_CURRENT = 1;
203
204// OTA константы (подготовка к v2.5.0)
205constexpr size_t OTA_BUFFER_SIZE = 1024; // 1KB буфер для OTA
206constexpr unsigned long OTA_TIMEOUT = 300000; // 5 минут таймаут
207constexpr const char* OTA_UPDATE_URL_TEMPLATE = "https://api.github.com/repos/%s/%s/releases/latest";
constexpr const char * MQTT_TOPIC_COMMAND
Определения jxct_constants.h:127
constexpr float DEFAULT_DELTA_EC
Определения jxct_constants.h:110
constexpr int LOG_LEVEL_ERROR
Определения jxct_constants.h:176
constexpr int LOG_LEVEL_DEBUG
Определения jxct_constants.h:179
constexpr int DEFAULT_DNS_PORT
Определения jxct_constants.h:43
constexpr unsigned long LED_BLINK_FAST
Определения jxct_constants.h:34
constexpr float DEFAULT_DELTA_HUMIDITY
Определения jxct_constants.h:108
constexpr unsigned long LED_BLINK_NORMAL
Определения jxct_constants.h:33
constexpr uint8_t MODBUS_PARITY
Определения jxct_constants.h:66
constexpr size_t OTA_BUFFER_SIZE
Определения jxct_constants.h:205
constexpr int CONFIG_MQTT_PORT_MAX
Определения jxct_constants.h:95
constexpr uint16_t SENSOR_EC_MIN
Определения jxct_constants.h:84
constexpr UBaseType_t RESET_BUTTON_TASK_PRIORITY
Определения jxct_constants.h:163
constexpr const char * HASS_DISCOVERY_PREFIX
Определения jxct_constants.h:131
constexpr uint8_t DEFAULT_FORCE_PUBLISH_CYCLES
Определения jxct_constants.h:114
constexpr int MODBUS_RX_PIN
Определения jxct_constants.h:147
constexpr unsigned long MODBUS_CACHE_TIMEOUT
Определения jxct_constants.h:20
constexpr float SENSOR_TEMP_MAX
Определения jxct_constants.h:79
constexpr size_t JSON_BUFFER_SIZE
Определения jxct_constants.h:48
constexpr unsigned long LED_BLINK_SLOW
Определения jxct_constants.h:32
constexpr unsigned long DEFAULT_NTP_UPDATE_INTERVAL
Определения jxct_constants.h:17
constexpr const char * HASS_CONFIG_SUFFIX
Определения jxct_constants.h:132
constexpr unsigned long OTA_TIMEOUT
Определения jxct_constants.h:206
constexpr const char * JXCT_WIFI_AP_PASS
Определения jxct_constants.h:121
constexpr int DEFAULT_WEB_SERVER_PORT
Определения jxct_constants.h:41
constexpr size_t SENSOR_TASK_STACK_SIZE
Определения jxct_constants.h:157
constexpr unsigned long DNS_CACHE_TTL
Определения jxct_constants.h:22
constexpr unsigned long SENSOR_JSON_CACHE_TTL
Определения jxct_constants.h:24
constexpr int DEFAULT_MQTT_PORT
Определения jxct_constants.h:42
constexpr uint8_t MODBUS_MAX_RETRIES
Определения jxct_constants.h:69
constexpr bool DEBUG_MODBUS_ENABLED
Определения jxct_constants.h:187
constexpr int MQTT_CONNECTION_ATTEMPTS
Определения jxct_constants.h:55
constexpr unsigned long DEFAULT_SENSOR_READ_INTERVAL
Определения jxct_constants.h:14
constexpr unsigned long MODBUS_RETRY_DELAY
Определения jxct_constants.h:21
constexpr const char * MQTT_TOPIC_STATE
Определения jxct_constants.h:125
constexpr float SENSOR_PH_MAX
Определения jxct_constants.h:83
constexpr unsigned long DEFAULT_MQTT_PUBLISH_INTERVAL
Определения jxct_constants.h:15
constexpr int LOG_LEVEL_WARN
Определения jxct_constants.h:177
constexpr uint8_t MOVING_AVERAGE_WINDOW_MAX
Определения jxct_constants.h:103
constexpr uint8_t DEFAULT_MODBUS_ADDRESS
Определения jxct_constants.h:44
constexpr const char * MQTT_TOPIC_AVAILABILITY
Определения jxct_constants.h:128
constexpr unsigned long JXCT_WATCHDOG_TIMEOUT_SEC
Определения jxct_constants.h:28
constexpr float DEFAULT_DELTA_NPK
Определения jxct_constants.h:111
constexpr uint16_t SENSOR_NPK_MIN
Определения jxct_constants.h:86
constexpr int CONFIG_MQTT_PORT_MIN
Определения jxct_constants.h:94
constexpr int MODBUS_TX_PIN
Определения jxct_constants.h:148
constexpr unsigned long MODBUS_FRAME_DELAY
Определения jxct_constants.h:71
constexpr int JXCT_STATUS_LED_PIN
Определения jxct_constants.h:144
constexpr uint8_t MOVING_AVERAGE_WINDOW_DEFAULT
Определения jxct_constants.h:104
constexpr const char * API_VERSION_V1
Определения jxct_constants.h:197
constexpr float SENSOR_HUMIDITY_MIN
Определения jxct_constants.h:80
constexpr const char * HTTP_CONTENT_TYPE_HTML
Определения jxct_constants.h:136
constexpr uint16_t SENSOR_EC_MAX
Определения jxct_constants.h:85
constexpr unsigned long CONFIG_THINGSPEAK_MIN
Определения jxct_constants.h:92
constexpr float SENSOR_HUMIDITY_MAX
Определения jxct_constants.h:81
constexpr size_t CLIENT_ID_BUFFER_SIZE
Определения jxct_constants.h:50
constexpr int MODBUS_DE_PIN
Определения jxct_constants.h:149
constexpr float SENSOR_PH_MIN
Определения jxct_constants.h:82
constexpr UBaseType_t WEB_SERVER_TASK_PRIORITY
Определения jxct_constants.h:164
constexpr size_t MAX_CONFIG_JSON_SIZE
Определения jxct_constants.h:167
constexpr unsigned long WIFI_CONNECTION_TIMEOUT
Определения jxct_constants.h:56
constexpr UBaseType_t SENSOR_TASK_PRIORITY
Определения jxct_constants.h:162
constexpr uint8_t MOVING_AVERAGE_WINDOW_MIN
Определения jxct_constants.h:102
constexpr unsigned long MODBUS_BAUD_RATE
Определения jxct_constants.h:63
constexpr size_t WEB_SERVER_TASK_STACK_SIZE
Определения jxct_constants.h:159
constexpr bool DEBUG_MQTT_ENABLED
Определения jxct_constants.h:188
constexpr float SENSOR_TEMP_MIN
Определения jxct_constants.h:78
constexpr size_t MAX_LOG_MESSAGE_SIZE
Определения jxct_constants.h:169
constexpr int CONFIG_VERSION_MIN_SUPPORTED
Определения jxct_constants.h:202
constexpr size_t TOPIC_BUFFER_SIZE
Определения jxct_constants.h:49
constexpr size_t HOSTNAME_BUFFER_SIZE
Определения jxct_constants.h:51
constexpr float DEFAULT_DELTA_PH
Определения jxct_constants.h:109
constexpr uint8_t MODBUS_DATA_BITS
Определения jxct_constants.h:64
constexpr const char * OTA_UPDATE_URL_TEMPLATE
Определения jxct_constants.h:207
constexpr uint16_t SENSOR_NPK_MAX
Определения jxct_constants.h:87
constexpr uint8_t MODBUS_STOP_BITS
Определения jxct_constants.h:65
constexpr size_t MAX_SENSOR_JSON_SIZE
Определения jxct_constants.h:168
constexpr const char * MQTT_TOPIC_STATUS
Определения jxct_constants.h:126
constexpr float DEFAULT_DELTA_TEMPERATURE
Определения jxct_constants.h:107
constexpr unsigned long CONFIG_INTERVAL_MIN
Определения jxct_constants.h:90
constexpr int WIFI_CONNECTION_ATTEMPTS
Определения jxct_constants.h:54
constexpr unsigned long JXCT_BUTTON_HOLD_TIME_MS
Определения jxct_constants.h:29
constexpr const char * WIFI_HOSTNAME_PREFIX
Определения jxct_constants.h:122
constexpr unsigned long CONFIG_INTERVAL_MAX
Определения jxct_constants.h:91
constexpr int LOG_LEVEL_INFO
Определения jxct_constants.h:178
constexpr const char * HTTP_CONTENT_TYPE_JSON
Определения jxct_constants.h:135
constexpr const char * API_VERSION_CURRENT
Определения jxct_constants.h:198
constexpr unsigned long CONFIG_THINGSPEAK_MAX
Определения jxct_constants.h:93
constexpr size_t MQTT_BUFFER_SIZE
Определения jxct_constants.h:47
constexpr unsigned long MQTT_RECONNECT_INTERVAL
Определения jxct_constants.h:23
constexpr const char * HTTP_CACHE_CONTROL
Определения jxct_constants.h:137
constexpr int MODBUS_RE_PIN
Определения jxct_constants.h:150
constexpr size_t RESET_BUTTON_TASK_STACK_SIZE
Определения jxct_constants.h:158
constexpr unsigned long DEFAULT_THINGSPEAK_INTERVAL
Определения jxct_constants.h:16
constexpr int CONFIG_VERSION_CURRENT
Определения jxct_constants.h:201
constexpr unsigned long MODBUS_RESPONSE_TIMEOUT
Определения jxct_constants.h:70
constexpr bool DEBUG_WIFI_ENABLED
Определения jxct_constants.h:189
const unsigned long STATUS_PRINT_INTERVAL
Определения main.cpp:47
#define RESET_BUTTON_PIN
Определения wifi_manager.cpp:21