5#include <ModbusMaster.h>
10#define REG_SOIL_MOISTURE 0x0012
11#define REG_SOIL_TEMP 0x0013
12#define REG_CONDUCTIVITY 0x0015
13#define REG_NITROGEN 0x001E
14#define REG_PHOSPHORUS 0x001F
15#define REG_POTASSIUM 0x0020
16#define REG_FIRMWARE_VERSION 0x07
17#define REG_CALIBRATION 0x08
18#define REG_ERROR_STATUS 0x0B
19#define REG_DEVICE_ADDRESS 0x0C
22#define MIN_TEMPERATURE -10.0
23#define MAX_TEMPERATURE 50.0
24#define MIN_HUMIDITY 0.0
25#define MAX_HUMIDITY 100.0
void setupModbus()
Инициализация Modbus и SP3485E.
void preTransmission()
Подготовка к передаче данных
void postTransmission()
Завершение передачи данных
void testSerialConfigurations()
SensorData getSensorData()
void startRealSensorTask()
bool readFirmwareVersion()
bool getCachedData(SensorData &data)
bool validateSensorData(SensorData &data)
float calculateMovingAverage(float *buffer, uint8_t window_size, uint8_t filled)
bool changeDeviceAddress(uint8_t new_address)
void testSP3485E()
Тестирование работы SP3485E.
float convertRegisterToFloat(uint16_t value, float multiplier)
void printModbusError(uint8_t errNum)
void initMovingAverageBuffers(SensorData &data)
bool testModbusConnection()
void addToMovingAverage(SensorData &data, float temp, float hum, float ec, float ph, float n, float p, float k)
unsigned long last_update
unsigned long last_mqtt_publish
uint16_t firmware_version