JXCT Soil Sensor 7-in-1 3.10.1
IoT система мониторинга почвы на базе ESP32
Загрузка...
Поиск...
Не найдено
sensor_calibration_service.h
См. документацию.
1
7#ifndef SENSOR_CALIBRATION_SERVICE_H
8#define SENSOR_CALIBRATION_SERVICE_H
9
10#include <Arduino.h>
11#include <map>
12#include <vector>
13#include "../../include/business/ISensorCalibrationService.h"
14#include "../../include/calibration_manager.h"
15#include "../../include/sensor_types.h"
16#include "../../include/validation_utils.h"
17
24{
25 float rawValue; // Исходное значение датчика
26 float referenceValue; // Эталонное значение
27
29 CalibrationPoint(float raw, float reference) : rawValue(raw), referenceValue(reference) {}
30};
31
38{
39 std::vector<CalibrationPoint> temperaturePoints;
40 std::vector<CalibrationPoint> humidityPoints;
41 std::vector<CalibrationPoint> ecPoints;
42 std::vector<CalibrationPoint> phPoints;
43 std::vector<CalibrationPoint> nitrogenPoints;
44 std::vector<CalibrationPoint> phosphorusPoints;
45 std::vector<CalibrationPoint> potassiumPoints;
46
47 bool isValid;
48
50};
51
59{
60 private:
61 // Калибровочные таблицы для разных профилей почвы
62 static std::map<SoilProfile, CalibrationTable> calibrationTables;
63
64 // Менеджер калибровки (для совместимости с существующим кодом)
65 // CalibrationManager& calibrationManager; // Убрано - используем namespace
66
67 // Применение калибровки к значению с интерполяцией
68 float applyCalibrationWithInterpolation(float rawValue, const std::vector<CalibrationPoint>& points) const;
69
70 // Линейная интерполяция между двумя точками
71 float linearInterpolation(float value, float x1, float y1, float x2, float y2) const;
72
73 // Парсинг CSV данных калибровочной таблицы
74 bool parseCalibrationCSV(const String& csvData, CalibrationTable& table);
75
76 // Валидация калибровочных точек
77 bool validateCalibrationPoints(const std::vector<CalibrationPoint>& points) const;
78
79 public:
84
88 virtual ~SensorCalibrationService() = default;
89
96 void applyCalibration(SensorData& data, SoilProfile profile) override;
97
105 float applySingleCalibration(float rawValue, SoilProfile profile) override;
106
113 bool validateCalibrationData(const SensorData& data) override;
114
122 bool loadCalibrationTable(const String& csvData, SoilProfile profile) override;
123
130 bool hasCalibrationTable(SoilProfile profile) const override;
131
137 void clearCalibrationTable(SoilProfile profile) override;
138
146 size_t getCalibrationPointsCount(SoilProfile profile, const String& sensorType) override;
147
154 static String exportCalibrationTable(SoilProfile profile);
155
156 // Методы для веб-интерфейса калибровки
157 String getCalibrationStatus() const;
158 bool isCalibrationComplete() const;
159 bool addPHCalibrationPoint(float expected, float measured) override;
160 bool addECCalibrationPoint(float expected, float measured) override;
161 bool addTemperatureCalibrationPoint(float expected, float measured) override;
162 bool addHumidityCalibrationPoint(float expected, float measured) override;
163 bool setTemperatureOffset(float offset);
164 bool setHumidityOffset(float offset);
165 bool setNPKCoefficients(float nSlope, float nOffset, float pSlope, float pOffset, float kSlope, float kOffset);
166 bool setNPKCalibrationPoint(float n, float p, float k) override;
170 bool importCalibrationFromJSON(const String& jsonData);
171 void resetCalibration();
172};
173
174#endif // SENSOR_CALIBRATION_SERVICE_H
Интерфейс для сервиса калибровки датчиков
Definition ISensorCalibrationService.h:21
Сервис калибровки датчиков
Definition sensor_calibration_service.h:59
bool isCalibrationComplete() const
Definition unified_calibration_service.cpp:753
void resetCalibration()
Definition sensor_calibration_service.cpp:680
void applyCalibration(SensorData &data, SoilProfile profile) override
Применяет калибровку к данным датчика
Definition sensor_calibration_service.cpp:31
bool calculatePHCalibration()
Definition sensor_calibration_service.cpp:564
SensorCalibrationService()
Конструктор
Definition sensor_calibration_service.cpp:26
bool addTemperatureCalibrationPoint(float expected, float measured) override
Добавляет точку калибровки температуры
Definition sensor_calibration_service.cpp:454
bool setNPKCoefficients(float nSlope, float nOffset, float pSlope, float pOffset, float kSlope, float kOffset)
Устанавливает коэффициенты калибровки NPK.
Definition sensor_calibration_service.cpp:783
bool addPHCalibrationPoint(float expected, float measured) override
Добавляет точку калибровки pH.
Definition sensor_calibration_service.cpp:500
bool setNPKCalibrationPoint(float n, float p, float k) override
Устанавливает точку калибровки NPK.
Definition sensor_calibration_service.cpp:542
bool importCalibrationFromJSON(const String &jsonData)
Definition sensor_calibration_service.cpp:703
bool calculateECCalibration()
Definition sensor_calibration_service.cpp:601
String getCalibrationStatus() const
Definition sensor_calibration_service.cpp:719
virtual ~SensorCalibrationService()=default
Деструктор
bool addHumidityCalibrationPoint(float expected, float measured) override
Добавляет точку калибровки влажности
Definition sensor_calibration_service.cpp:477
bool setTemperatureOffset(float offset)
Устанавливает offset калибровки температуры
Definition sensor_calibration_service.cpp:638
bool addECCalibrationPoint(float expected, float measured) override
Добавляет точку калибровки EC.
Definition sensor_calibration_service.cpp:521
bool loadCalibrationTable(const String &csvData, SoilProfile profile) override
Загружает калибровочную таблицу из CSV.
Definition sensor_calibration_service.cpp:128
bool hasCalibrationTable(SoilProfile profile) const override
Проверяет наличие калибровочной таблицы
Definition sensor_calibration_service.cpp:144
float applySingleCalibration(float rawValue, SoilProfile profile) override
Применяет калибровку к отдельному значению
Definition sensor_calibration_service.cpp:100
static String exportCalibrationTable(SoilProfile profile)
Экспортирует калибровочную таблицу в CSV.
Definition sensor_calibration_service.cpp:201
void clearCalibrationTable(SoilProfile profile) override
Очищает калибровочную таблицу
Definition sensor_calibration_service.cpp:150
bool validateCalibrationData(const SensorData &data) override
Проверяет валидность калибровочных данных
Definition sensor_calibration_service.cpp:116
bool setHumidityOffset(float offset)
Устанавливает offset калибровки влажности
Definition sensor_calibration_service.cpp:659
size_t getCalibrationPointsCount(SoilProfile profile, const String &sensorType) override
Получает количество точек калибровки
Definition sensor_calibration_service.cpp:160
String exportCalibrationToJSON()
Definition sensor_calibration_service.cpp:695
SoilProfile
Профили почвы
Definition sensor_types.h:36
Точка калибровки
Definition sensor_calibration_service.h:24
CalibrationPoint(float raw, float reference)
Definition sensor_calibration_service.h:29
float referenceValue
Definition sensor_calibration_service.h:26
float rawValue
Definition sensor_calibration_service.h:25
CalibrationPoint()
Definition sensor_calibration_service.h:28
Калибровочная таблица
Definition sensor_calibration_service.h:38
std::vector< CalibrationPoint > phPoints
Definition sensor_calibration_service.h:42
std::vector< CalibrationPoint > potassiumPoints
Definition sensor_calibration_service.h:45
std::vector< CalibrationPoint > temperaturePoints
Definition sensor_calibration_service.h:39
std::vector< CalibrationPoint > phosphorusPoints
Definition sensor_calibration_service.h:44
std::vector< CalibrationPoint > ecPoints
Definition sensor_calibration_service.h:41
CalibrationTable()
Definition sensor_calibration_service.h:49
std::vector< CalibrationPoint > nitrogenPoints
Definition sensor_calibration_service.h:43
bool isValid
Definition sensor_calibration_service.h:47
std::vector< CalibrationPoint > humidityPoints
Definition sensor_calibration_service.h:40
Данные датчика
Definition sensor_types.h:77