198 lines
5.5 KiB
C++
198 lines
5.5 KiB
C++
# ifndef __CONFIG_H
|
|
# define __CONFIG_H
|
|
|
|
#include <Preferences.h>
|
|
#include "HermitCrab.h"
|
|
|
|
|
|
extern const char *strDeviceType[];
|
|
|
|
|
|
enum ENUM_DEVICE_TYPE {
|
|
TYPE_NONE = 0,
|
|
TYPE_TEST,
|
|
TYPE_ESP8266,
|
|
TYPE_ON_OFF,
|
|
TYPE_ZCD,
|
|
TYPE_CAM,
|
|
TYPE_BETA,
|
|
TYPE_BETA_BLE,
|
|
TYPE_DEVICE_END,
|
|
TYPE_CLIENT = 1000,
|
|
TYPE_CLIENT_WIN,
|
|
TYPE_CLIENT_ANDROID
|
|
};
|
|
|
|
enum HEATER_TYPE {
|
|
TYPE_BULB,
|
|
TYPE_IR,
|
|
TYPE_CERAMIC,
|
|
TYPE_ZCD3,
|
|
TYPE_ZCD4,
|
|
TYPE_ZCD5,
|
|
TYPE_ZCD6,
|
|
TYPE_ZCD_CONTROL,
|
|
TYPE_FLUORESCENT = 16,
|
|
TYPE_LED,
|
|
TYPE_UAV,
|
|
TYPE_HEATER_END
|
|
};
|
|
|
|
enum DEVICE_CONTROL_TYPE {
|
|
CONTROL_NONE,
|
|
CONTROL_TEMP_HEAT,
|
|
CONTROL_TEMP_COOL,
|
|
CONTROL_HUMIDITY_INC,
|
|
CONTROL_HUMIDITY_DEC,
|
|
CONTROL_DAY_NIGHT,
|
|
CONTROL_TIME,
|
|
CONTROL_PERIOD,
|
|
CONTROL_TEMP_HEAT_PID,
|
|
CONTROL_TEMP_COOL_PID,
|
|
CONTROL_HUMIDITY_INC_PID,
|
|
CONTROL_HUMIDITY_DEC_PID
|
|
};
|
|
|
|
// Enumeration for the sensor
|
|
enum TEMP_SENSOR_TYPE {
|
|
SENSOR_NONE = 0,
|
|
AHT20, // AHT20 on 0x38 - default
|
|
AHT2x, // AHT25 on 0x38 - default
|
|
AHT10_0x39, // AHT10 on 0x39 - altanative
|
|
NTC,
|
|
BLE_TUYA,
|
|
BLE_XIAOMI_MIJIA,
|
|
BLE_INKBIRD
|
|
};
|
|
|
|
#pragma pack(push) /* push current alignment to stack */
|
|
#pragma pack(1) /* set alignment to 1 byte boundary */
|
|
|
|
typedef struct CONFIG_STRUCT {
|
|
uint16_t m_nSignature1;
|
|
|
|
// Block 1 - Control and EnvironMent
|
|
// Offset 2
|
|
bool bSmartControl;
|
|
bool bNightControl;
|
|
bool bControlTemperature;
|
|
bool bControlHumidity;
|
|
bool bEnableIO;
|
|
bool bCheckAC;
|
|
bool bAC2_OnOff;
|
|
bool bdummy;
|
|
uint8_t nNightStartHour, nNightStartMin, nNightEndHour, nNightEndMin;
|
|
float Kp_Temp2; // Load Kp for Temperature control
|
|
float Kd_Temp2; // Load Kd for Temperature control
|
|
float LR_Temp2; // Load learning rate for Temperature
|
|
float Kp_Temp3; // Load Kp for Temperature control
|
|
float Kd_Temp3; // Load Kd for Temperature control
|
|
float LR_Temp3; // Load learning rate for Temperature
|
|
union {
|
|
uint64_t nBLESensorAddr2;
|
|
uint8_t nBLESensorAddrBytes2[8];
|
|
};
|
|
uint8_t ac1ControlMode, ac2ControlMode; // ZCD_CONTROL || PHASE_CONTROL
|
|
char bExtra[64 - 8 * sizeof(bool) - 4 * sizeof(uint8_t) - 6 * sizeof(float) - sizeof(uint64_t) - 2 * sizeof(uint8_t)];
|
|
|
|
// Block 2 - Sensor and TargetTemperature and Himidity
|
|
// Offset 64 + 2
|
|
int16_t nTempTarget, nTempTargetNight; // Target Temperature
|
|
int16_t nTemp1Offset, nTemp2Offset, nTemp3Offset;
|
|
uint16_t nHumidTarget, nHumidTargetNight;
|
|
int16_t nHumid1Offset, nHumid2Offset;
|
|
uint8_t nTemp1SensorType; // TempSensor Type enum
|
|
uint8_t nTemp2SensorType; // TempSensor Type enum
|
|
float Kp_Temp1; // Load Kp for Temperature control
|
|
float Kd_Temp1; // Load Kd for Temperature control
|
|
float LR_Temp1; // Load learning rate for Temperature
|
|
float Kp_Humidity; // Load Kp for humidity control
|
|
float Kd_Humidity; // Load Kd for humidity control
|
|
float LR_Humidity; // Load learning rate for humidity
|
|
int16_t nTempSafety;
|
|
union {
|
|
uint64_t nBLESensorAddr;
|
|
uint8_t nBLESensorAddrBytes[8];
|
|
};
|
|
uint8_t bNTCNegativePolarity;
|
|
uint8_t nBLEScanInterval;
|
|
uint8_t bBLETest;
|
|
char nTempExtra[64 - 10 * sizeof(int16_t) - 6 * sizeof(float) - 5 * sizeof(uint8_t) - sizeof(uint64_t)];
|
|
|
|
// Block 3 - AC1 and AC2
|
|
// Offset 128 + 2
|
|
DEVICE_PARAM_TYPE ac1;
|
|
DEVICE_PARAM_TYPE ac2;
|
|
|
|
// Block 4 - Mist and Fan
|
|
// Offset 192 + 2
|
|
DEVICE_PARAM_TYPE mist;
|
|
DEVICE_PARAM_TYPE fan;
|
|
|
|
// Block 5 - Motor and Light
|
|
// Offset 256 + 2
|
|
DEVICE_PARAM_TYPE motor;
|
|
DEVICE_PARAM_TYPE light;
|
|
|
|
// Block 6 - Environment and Operations
|
|
// Offset 320 + 2
|
|
bool bSendStatusSerial;
|
|
bool bConfigSaved;
|
|
bool bStatusSaved;
|
|
char nEnvExtra[32 - 3 * sizeof(bool)];
|
|
// Offset 352 + 2
|
|
STATUS_TYPE statusSave;
|
|
|
|
// Block 7 - ID and Client Display
|
|
// Offset 384 + 2
|
|
uint32_t m_nChipId;
|
|
uint16_t m_nDeviceType;
|
|
uint16_t m_nPublicPort;
|
|
uint16_t m_nExtraTBD[4];
|
|
// WiFi Client Only
|
|
uint16_t m_nDisplayTime;
|
|
int16_t m_nDisplayTempHigh;
|
|
int16_t m_nDisplayTempLow;
|
|
int16_t m_nTempHigh;
|
|
uint16_t m_fShowRealTime;
|
|
uint16_t m_fShowHistory;
|
|
uint32_t m_nEpochTime;
|
|
uint32_t m_nTimeOffset;
|
|
uint8_t m_bFahrenheit;
|
|
char nLongExtra[64 - 3 * sizeof(uint32_t) - 12 * sizeof(uint16_t)- 1 * sizeof(uint8_t)];
|
|
|
|
// Block 8 and 9 - WiFi AP ssid and pw
|
|
// Offset 448 + 2 & 512 + 2
|
|
char ssid[64], pw[64];
|
|
|
|
// Block 10
|
|
// Offset 576 + 2
|
|
char m_sDeviceName[32];
|
|
char m_sMake[32];
|
|
|
|
// Block 11
|
|
// Offset 640 + 2
|
|
char m_sModel[32];
|
|
char m_sVersion[12];
|
|
char nModelExtra[64 - 44];
|
|
|
|
// Offset 704 + 2
|
|
uint16_t m_nSignature2;
|
|
|
|
#ifdef ESP32
|
|
// ConfigStruct Size: 708
|
|
public:
|
|
void init();
|
|
bool load();
|
|
void save();
|
|
//bool saveToServer();
|
|
#endif
|
|
} CONFIG_TYPE;
|
|
#pragma pack(pop) // Restore previous alignment setting
|
|
|
|
extern class Preferences preferences;
|
|
extern CONFIG_TYPE config;
|
|
extern char BLE_SSID[32];
|
|
extern char BLE_PW[32];
|
|
|
|
#endif |