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
Загрузка...
Поиск...
Не найдено
validation_utils.h
См. документацию.
1#pragma once
2
8
9#include <Arduino.h>
10#include <vector>
11
12// ============================================================================
13// СТРУКТУРЫ РЕЗУЛЬТАТОВ ВАЛИДАЦИИ
14// ============================================================================
15
20{
21 bool isValid;
22 String message;
23};
24
29{
30 String field;
31 String message;
32};
33
38{
39 bool isValid;
40 std::vector<ValidationError> errors;
41};
42
47{
48 bool isValid;
49 std::vector<ValidationError> errors;
50};
51
52// ============================================================================
53// СТРУКТУРЫ ДАННЫХ (forward declarations)
54// ============================================================================
55
56// Упрощенная структура конфигурации для валидации
58{
59 String ssid;
60 String password;
62 String mqttServer;
66 unsigned long sensorReadInterval;
67 unsigned long mqttPublishInterval;
68 unsigned long thingspeakInterval;
69 unsigned long ntpUpdateInterval;
70};
71
72// Упрощенная структура данных датчика для валидации
73struct SensorData
74{
75 float temperature;
76 float humidity;
77 float ph;
78 float ec; // Исправлено: должно быть float
79 float nitrogen; // Исправлено: должно быть float
80 float phosphorus; // Исправлено: должно быть float
81 float potassium; // Исправлено: должно быть float
82};
83
84// ============================================================================
85// ФУНКЦИИ ВАЛИДАЦИИ КОНФИГУРАЦИИ
86// ============================================================================
87
93ValidationResult validateSSID(const String& ssid);
94
100ValidationResult validatePassword(const String& password);
101
107ValidationResult validateMQTTServer(const String& server);
108
115
121ValidationResult validateThingSpeakAPIKey(const String& apiKey);
122
131ValidationResult validateInterval(unsigned long interval, unsigned long min_val, unsigned long max_val,
132 const char* name);
133
139ValidationResult validateSensorReadInterval(unsigned long interval);
140
146ValidationResult validateMQTTPublishInterval(unsigned long interval);
147
153ValidationResult validateThingSpeakInterval(unsigned long interval);
154
160ValidationResult validateNTPInterval(unsigned long interval);
161
162// ============================================================================
163// ФУНКЦИИ ВАЛИДАЦИИ ДАННЫХ ДАТЧИКА
164// ============================================================================
165
171ValidationResult validateTemperature(float temperature);
172
178ValidationResult validateHumidity(float humidity);
179
186
193
200ValidationResult validateNPK(float value, const char* nutrient);
201
202// ============================================================================
203// КОМПЛЕКСНАЯ ВАЛИДАЦИЯ
204// ============================================================================
205
212ConfigValidationResult validateFullConfig(const ConfigData& config, bool checkRequired = true);
213
220
221// ============================================================================
222// УТИЛИТЫ ВАЛИДАЦИИ
223// ============================================================================
224
230bool isValidIPAddress(const String& ip);
231
237bool isValidHostname(const String& hostname);
238
245
252
253// ============================================================================
254// ЛОГИРОВАНИЕ ВАЛИДАЦИИ
255// ============================================================================
256
262void logValidationResult(const ConfigValidationResult& result, const char* context);
263
269void logSensorValidationResult(const SensorValidationResult& result, const char* context);
Config config
Определения config.cpp:34
Определения validation_utils.h:58
bool thingSpeakEnabled
Определения validation_utils.h:64
String password
Определения validation_utils.h:60
unsigned long ntpUpdateInterval
Определения validation_utils.h:69
String thingSpeakAPIKey
Определения validation_utils.h:65
unsigned long mqttPublishInterval
Определения validation_utils.h:67
String mqttServer
Определения validation_utils.h:62
bool mqttEnabled
Определения validation_utils.h:61
int mqttPort
Определения validation_utils.h:63
unsigned long sensorReadInterval
Определения validation_utils.h:66
unsigned long thingspeakInterval
Определения validation_utils.h:68
String ssid
Определения validation_utils.h:59
Результат валидации конфигурации
Определения validation_utils.h:38
std::vector< ValidationError > errors
Определения validation_utils.h:40
bool isValid
Определения validation_utils.h:39
Определения modbus_sensor.h:35
float phosphorus
Определения modbus_sensor.h:41
float temperature
Определения modbus_sensor.h:36
float nitrogen
Определения modbus_sensor.h:40
float humidity
Определения modbus_sensor.h:37
float ec
Определения modbus_sensor.h:38
float ph
Определения modbus_sensor.h:39
float potassium
Определения modbus_sensor.h:42
Результат валидации данных датчика
Определения validation_utils.h:47
std::vector< ValidationError > errors
Определения validation_utils.h:49
bool isValid
Определения validation_utils.h:48
Ошибка валидации с указанием поля
Определения validation_utils.h:29
String message
Определения validation_utils.h:31
String field
Определения validation_utils.h:30
Результат валидации одного поля
Определения validation_utils.h:20
String message
Определения validation_utils.h:22
bool isValid
Определения validation_utils.h:21
bool isValidIPAddress(const String &ip)
Проверка валидности IP адреса
Определения validation_utils.cpp:320
ValidationResult validateMQTTPublishInterval(unsigned long interval)
Валидация интервала публикации MQTT.
Определения validation_utils.cpp:105
SensorValidationResult validateFullSensorData(const SensorData &data)
Полная валидация данных датчика
Определения validation_utils.cpp:259
ValidationResult validateMQTTPort(int port)
Валидация MQTT порта
Определения validation_utils.cpp:59
ValidationResult validateInterval(unsigned long interval, unsigned long min_val, unsigned long max_val, const char *name)
Валидация интервала (общая функция)
Определения validation_utils.cpp:89
ConfigValidationResult validateFullConfig(const ConfigData &config, bool checkRequired=true)
Полная валидация конфигурации
Определения validation_utils.cpp:174
void logValidationResult(const ConfigValidationResult &result, const char *context)
Логирование результата валидации конфигурации
Определения validation_utils.cpp:395
ValidationResult validateThingSpeakInterval(unsigned long interval)
Валидация интервала ThingSpeak.
Определения validation_utils.cpp:110
ValidationResult validateNPK(float value, const char *nutrient)
Валидация NPK значений
Определения validation_utils.cpp:160
ValidationResult validateHumidity(float humidity)
Валидация влажности
Определения validation_utils.cpp:133
ValidationResult validateSensorReadInterval(unsigned long interval)
Валидация интервала чтения датчика
Определения validation_utils.cpp:100
void logSensorValidationResult(const SensorValidationResult &result, const char *context)
Логирование результата валидации датчика
Определения validation_utils.cpp:411
ValidationResult validatePH(float ph)
Валидация pH.
Определения validation_utils.cpp:142
ValidationResult validatePassword(const String &password)
Валидация пароля WiFi.
Определения validation_utils.cpp:28
ValidationResult validateMQTTServer(const String &server)
Валидация MQTT сервера
Определения validation_utils.cpp:41
bool isValidHostname(const String &hostname)
Проверка валидности hostname.
Определения validation_utils.cpp:345
ValidationResult validateEC(float ec)
Валидация электропроводности
Определения validation_utils.cpp:151
String formatSensorValidationErrors(const SensorValidationResult &result)
Форматирование ошибок валидации датчика
Определения validation_utils.cpp:379
ValidationResult validateThingSpeakAPIKey(const String &apiKey)
Валидация ThingSpeak API ключа
Определения validation_utils.cpp:68
String formatValidationErrors(const ConfigValidationResult &result)
Форматирование ошибок валидации конфигурации
Определения validation_utils.cpp:367
ValidationResult validateSSID(const String &ssid)
Валидация SSID.
Определения validation_utils.cpp:15
ValidationResult validateTemperature(float temperature)
Валидация температуры
Определения validation_utils.cpp:124
ValidationResult validateNTPInterval(unsigned long interval)
Валидация интервала обновления NTP.
Определения validation_utils.cpp:115