|
@ -21,7 +21,7 @@ |
|
|
//-------------------------------------
|
|
|
//-------------------------------------
|
|
|
#define VERSION_MAJOR 0 |
|
|
#define VERSION_MAJOR 0 |
|
|
#define VERSION_MINOR 5 |
|
|
#define VERSION_MINOR 5 |
|
|
#define VERSION_PATCH 4 |
|
|
#define VERSION_PATCH 5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//-------------------------------------
|
|
|
//-------------------------------------
|
|
@ -30,40 +30,38 @@ typedef struct { |
|
|
uint8_t packet[MAX_RF_PAYLOAD_SIZE]; |
|
|
uint8_t packet[MAX_RF_PAYLOAD_SIZE]; |
|
|
} packet_t; |
|
|
} packet_t; |
|
|
|
|
|
|
|
|
typedef enum |
|
|
typedef enum { |
|
|
{ |
|
|
InverterDevInform_Simple = 0, // 0x00
|
|
|
InverterDevInform_Simple = 0, // 0x00
|
|
|
InverterDevInform_All = 1, // 0x01
|
|
|
InverterDevInform_All = 1, // 0x01
|
|
|
//GridOnProFilePara = 2, // 0x02
|
|
|
//GridOnProFilePara = 2, // 0x02
|
|
|
//HardWareConfig = 3, // 0x03
|
|
|
//HardWareConfig = 3, // 0x03
|
|
|
//SimpleCalibrationPara = 4, // 0x04
|
|
|
//SimpleCalibrationPara = 4, // 0x04
|
|
|
//SystemConfigPara = 5, // 0x05
|
|
|
//SystemConfigPara = 5, // 0x05
|
|
|
RealTimeRunData_Debug = 11, // 0x0b
|
|
|
RealTimeRunData_Debug = 11, // 0x0b
|
|
|
|
|
|
//RealTimeRunData_Reality = 12, // 0x0c
|
|
|
//RealTimeRunData_Reality = 12, // 0x0c
|
|
|
//RealTimeRunData_A_Phase = 13, // 0x0d
|
|
|
//RealTimeRunData_A_Phase = 13, // 0x0d
|
|
|
//RealTimeRunData_B_Phase = 14, // 0x0e
|
|
|
//RealTimeRunData_B_Phase = 14, // 0x0e
|
|
|
//RealTimeRunData_C_Phase = 15, // 0x0f
|
|
|
//RealTimeRunData_C_Phase = 15, // 0x0f
|
|
|
AlarmData = 17, // 0x11 //Alarm data - all unsent alarms
|
|
|
AlarmData = 17, // 0x11, Alarm data - all unsent alarms
|
|
|
AlarmUpdate = 18, // 0x12 //Alarm data - all pending alarms
|
|
|
AlarmUpdate = 18, // 0x12, Alarm data - all pending alarms
|
|
|
//RecordData = 19, // 0x13
|
|
|
//RecordData = 19, // 0x13
|
|
|
//InternalData = 20, // 0x14
|
|
|
//InternalData = 20, // 0x14
|
|
|
GetLossRate = 21, // 0x15
|
|
|
GetLossRate = 21, // 0x15
|
|
|
//GetSelfCheckState = 30, // 0x1e
|
|
|
//GetSelfCheckState = 30, // 0x1e
|
|
|
//InitDataState = 0xff
|
|
|
//InitDataState = 0xff
|
|
|
} InfoCmdType; |
|
|
} InfoCmdType; |
|
|
|
|
|
|
|
|
typedef enum |
|
|
typedef enum { |
|
|
{ |
|
|
TurnOn = 0, // 0x00
|
|
|
TurnOn = 0, // 0x00
|
|
|
TurnOff = 1, // 0x01
|
|
|
TurnOff = 1, // 0x01
|
|
|
Restart = 2, // 0x02
|
|
|
Restart = 2, // 0x02
|
|
|
Lock = 3, // 0x03
|
|
|
Lock = 3, // 0x03
|
|
|
Unlock = 4, // 0x04
|
|
|
Unlock = 4, // 0x04
|
|
|
ActivePowerContr = 11, // 0x0b
|
|
|
ActivePowerContr = 11, // 0x0b
|
|
|
ReactivePowerContr = 12, // 0x0c
|
|
|
ReactivePowerContr = 12, // 0x0c
|
|
|
PFSet = 13, // 0x0d
|
|
|
PFSet = 13, // 0x0d
|
|
|
|
|
|
CleanState_LockAndAlarm = 20, // 0x14
|
|
|
CleanState_LockAndAlarm = 20, // 0x14
|
|
|
SelfInspection = 40, // 0x28 // self-inspection of grid-connected protection files
|
|
|
SelfInspection = 40, // 0x28, self-inspection of grid-connected protection files
|
|
|
Init = 0xff |
|
|
Init = 0xff |
|
|
} DevControlCmdType; |
|
|
} DevControlCmdType; |
|
|
|
|
|
|
|
@ -79,76 +77,76 @@ typedef enum |
|
|
//-------------------------------------
|
|
|
//-------------------------------------
|
|
|
// EEPROM
|
|
|
// EEPROM
|
|
|
//-------------------------------------
|
|
|
//-------------------------------------
|
|
|
#define SSID_LEN 32 |
|
|
#define SSID_LEN 32 |
|
|
#define PWD_LEN 64 |
|
|
#define PWD_LEN 64 |
|
|
#define DEVNAME_LEN 16 |
|
|
#define DEVNAME_LEN 16 |
|
|
#define CRC_LEN 2 // uint16_t
|
|
|
#define CRC_LEN 2 // uint16_t
|
|
|
|
|
|
|
|
|
#define INV_ADDR_LEN MAX_NUM_INVERTERS * 8 // uint64_t
|
|
|
#define INV_ADDR_LEN MAX_NUM_INVERTERS * 8 // uint64_t
|
|
|
#define INV_NAME_LEN MAX_NUM_INVERTERS * MAX_NAME_LENGTH // char[]
|
|
|
#define INV_NAME_LEN MAX_NUM_INVERTERS * MAX_NAME_LENGTH // char[]
|
|
|
#define INV_CH_CH_PWR_LEN MAX_NUM_INVERTERS * 2 * 4 // uint16_t (4 channels)
|
|
|
#define INV_CH_CH_PWR_LEN MAX_NUM_INVERTERS * 2 * 4 // uint16_t (4 channels)
|
|
|
#define INV_CH_CH_NAME_LEN MAX_NUM_INVERTERS * MAX_NAME_LENGTH * 4 // (4 channels)
|
|
|
#define INV_CH_CH_NAME_LEN MAX_NUM_INVERTERS * MAX_NAME_LENGTH * 4 // (4 channels)
|
|
|
#define INV_INTERVAL_LEN 2 // uint16_t
|
|
|
#define INV_INTERVAL_LEN 2 // uint16_t
|
|
|
#define INV_MAX_RTRY_LEN 1 // uint8_t
|
|
|
#define INV_MAX_RTRY_LEN 1 // uint8_t
|
|
|
#define INV_PWR_LIM_LEN MAX_NUM_INVERTERS * 2 // uint16_t
|
|
|
#define INV_PWR_LIM_LEN MAX_NUM_INVERTERS * 2 // uint16_t
|
|
|
|
|
|
|
|
|
#define PINOUT_LEN 3 // 3 pins: CS, CE, IRQ
|
|
|
#define PINOUT_LEN 3 // 3 pins: CS, CE, IRQ
|
|
|
|
|
|
|
|
|
#define RF24_AMP_PWR_LEN 1 |
|
|
#define RF24_AMP_PWR_LEN 1 |
|
|
|
|
|
|
|
|
#define NTP_ADDR_LEN 32 // DNS Name
|
|
|
#define NTP_ADDR_LEN 32 // DNS Name
|
|
|
#define NTP_PORT_LEN 2 // uint16_t
|
|
|
#define NTP_PORT_LEN 2 // uint16_t
|
|
|
|
|
|
|
|
|
#define MQTT_ADDR_LEN 32 // DNS Name
|
|
|
#define MQTT_ADDR_LEN 32 // DNS Name
|
|
|
#define MQTT_USER_LEN 16 |
|
|
#define MQTT_USER_LEN 16 |
|
|
#define MQTT_PWD_LEN 32 |
|
|
#define MQTT_PWD_LEN 32 |
|
|
#define MQTT_TOPIC_LEN 32 |
|
|
#define MQTT_TOPIC_LEN 32 |
|
|
#define MQTT_INTERVAL_LEN 2 // uint16_t
|
|
|
#define MQTT_INTERVAL_LEN 2 // uint16_t
|
|
|
#define MQTT_PORT_LEN 2 // uint16_t
|
|
|
#define MQTT_PORT_LEN 2 // uint16_t
|
|
|
#define MQTT_DISCOVERY_PREFIX "homeassistant" |
|
|
#define MQTT_DISCOVERY_PREFIX "homeassistant" |
|
|
#define MQTT_MAX_PACKET_SIZE 384 |
|
|
#define MQTT_MAX_PACKET_SIZE 384 |
|
|
|
|
|
|
|
|
#define SER_ENABLE_LEN 1 // uint8_t
|
|
|
#define SER_ENABLE_LEN 1 // uint8_t
|
|
|
#define SER_DEBUG_LEN 1 // uint8_t
|
|
|
#define SER_DEBUG_LEN 1 // uint8_t
|
|
|
#define SER_INTERVAL_LEN 2 // uint16_t
|
|
|
#define SER_INTERVAL_LEN 2 // uint16_t
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define ADDR_START 0 |
|
|
#define ADDR_START 0 |
|
|
#define ADDR_SSID ADDR_START |
|
|
#define ADDR_SSID ADDR_START |
|
|
#define ADDR_PWD ADDR_SSID + SSID_LEN |
|
|
#define ADDR_PWD ADDR_SSID + SSID_LEN |
|
|
#define ADDR_DEVNAME ADDR_PWD + PWD_LEN |
|
|
#define ADDR_DEVNAME ADDR_PWD + PWD_LEN |
|
|
#define ADDR_WIFI_CRC ADDR_DEVNAME + DEVNAME_LEN |
|
|
#define ADDR_WIFI_CRC ADDR_DEVNAME + DEVNAME_LEN |
|
|
#define ADDR_START_SETTINGS ADDR_WIFI_CRC + CRC_LEN |
|
|
#define ADDR_START_SETTINGS ADDR_WIFI_CRC + CRC_LEN |
|
|
|
|
|
|
|
|
#define ADDR_PINOUT ADDR_START_SETTINGS |
|
|
#define ADDR_PINOUT ADDR_START_SETTINGS |
|
|
|
|
|
|
|
|
#define ADDR_RF24_AMP_PWR ADDR_PINOUT + PINOUT_LEN |
|
|
#define ADDR_RF24_AMP_PWR ADDR_PINOUT + PINOUT_LEN |
|
|
|
|
|
|
|
|
#define ADDR_INV_ADDR ADDR_RF24_AMP_PWR + RF24_AMP_PWR_LEN |
|
|
#define ADDR_INV_ADDR ADDR_RF24_AMP_PWR + RF24_AMP_PWR_LEN |
|
|
#define ADDR_INV_NAME ADDR_INV_ADDR + INV_ADDR_LEN |
|
|
#define ADDR_INV_NAME ADDR_INV_ADDR + INV_ADDR_LEN |
|
|
#define ADDR_INV_CH_PWR ADDR_INV_NAME + INV_NAME_LEN |
|
|
#define ADDR_INV_CH_PWR ADDR_INV_NAME + INV_NAME_LEN |
|
|
#define ADDR_INV_CH_NAME ADDR_INV_CH_PWR + INV_CH_CH_PWR_LEN |
|
|
#define ADDR_INV_CH_NAME ADDR_INV_CH_PWR + INV_CH_CH_PWR_LEN |
|
|
#define ADDR_INV_INTERVAL ADDR_INV_CH_NAME + INV_CH_CH_NAME_LEN |
|
|
#define ADDR_INV_INTERVAL ADDR_INV_CH_NAME + INV_CH_CH_NAME_LEN |
|
|
#define ADDR_INV_MAX_RTRY ADDR_INV_INTERVAL + INV_INTERVAL_LEN |
|
|
#define ADDR_INV_MAX_RTRY ADDR_INV_INTERVAL + INV_INTERVAL_LEN |
|
|
#define ADDR_INV_PWR_LIM ADDR_INV_MAX_RTRY + INV_MAX_RTRY_LEN |
|
|
#define ADDR_INV_PWR_LIM ADDR_INV_MAX_RTRY + INV_MAX_RTRY_LEN |
|
|
|
|
|
|
|
|
#define ADDR_NTP_ADDR ADDR_INV_PWR_LIM + INV_PWR_LIM_LEN //Bugfix #125
|
|
|
#define ADDR_NTP_ADDR ADDR_INV_PWR_LIM + INV_PWR_LIM_LEN //Bugfix #125
|
|
|
#define ADDR_NTP_PORT ADDR_NTP_ADDR + NTP_ADDR_LEN |
|
|
#define ADDR_NTP_PORT ADDR_NTP_ADDR + NTP_ADDR_LEN |
|
|
|
|
|
|
|
|
#define ADDR_MQTT_ADDR ADDR_NTP_PORT + NTP_PORT_LEN |
|
|
#define ADDR_MQTT_ADDR ADDR_NTP_PORT + NTP_PORT_LEN |
|
|
#define ADDR_MQTT_USER ADDR_MQTT_ADDR + MQTT_ADDR_LEN |
|
|
#define ADDR_MQTT_USER ADDR_MQTT_ADDR + MQTT_ADDR_LEN |
|
|
#define ADDR_MQTT_PWD ADDR_MQTT_USER + MQTT_USER_LEN |
|
|
#define ADDR_MQTT_PWD ADDR_MQTT_USER + MQTT_USER_LEN |
|
|
#define ADDR_MQTT_TOPIC ADDR_MQTT_PWD + MQTT_PWD_LEN |
|
|
#define ADDR_MQTT_TOPIC ADDR_MQTT_PWD + MQTT_PWD_LEN |
|
|
#define ADDR_MQTT_INTERVAL ADDR_MQTT_TOPIC + MQTT_TOPIC_LEN |
|
|
#define ADDR_MQTT_INTERVAL ADDR_MQTT_TOPIC + MQTT_TOPIC_LEN |
|
|
#define ADDR_MQTT_PORT ADDR_MQTT_INTERVAL + MQTT_INTERVAL_LEN |
|
|
#define ADDR_MQTT_PORT ADDR_MQTT_INTERVAL + MQTT_INTERVAL_LEN |
|
|
|
|
|
|
|
|
#define ADDR_SER_ENABLE ADDR_MQTT_PORT + MQTT_PORT_LEN |
|
|
#define ADDR_SER_ENABLE ADDR_MQTT_PORT + MQTT_PORT_LEN |
|
|
#define ADDR_SER_DEBUG ADDR_SER_ENABLE + SER_ENABLE_LEN |
|
|
#define ADDR_SER_DEBUG ADDR_SER_ENABLE + SER_ENABLE_LEN |
|
|
#define ADDR_SER_INTERVAL ADDR_SER_DEBUG + SER_DEBUG_LEN |
|
|
#define ADDR_SER_INTERVAL ADDR_SER_DEBUG + SER_DEBUG_LEN |
|
|
#define ADDR_NEXT ADDR_SER_INTERVAL + SER_INTERVAL_LEN |
|
|
#define ADDR_NEXT ADDR_SER_INTERVAL + SER_INTERVAL_LEN |
|
|
|
|
|
|
|
|
// #define ADDR_SETTINGS_CRC 950
|
|
|
// #define ADDR_SETTINGS_CRC 950
|
|
|
#define ADDR_SETTINGS_CRC ADDR_NEXT + 2 |
|
|
#define ADDR_SETTINGS_CRC ADDR_NEXT + 2 |
|
|
|
|
|
|
|
|
#if(ADDR_SETTINGS_CRC <= ADDR_NEXT) |
|
|
#if(ADDR_SETTINGS_CRC <= ADDR_NEXT) |
|
|
#pragma error "address overlap! (ADDR_SETTINGS_CRC="+ ADDR_SETTINGS_CRC +", ADDR_NEXT="+ ADDR_NEXT +")" |
|
|
#pragma error "address overlap! (ADDR_SETTINGS_CRC="+ ADDR_SETTINGS_CRC +", ADDR_NEXT="+ ADDR_NEXT +")" |
|
|