|
|
@ -52,7 +52,8 @@ typedef struct _control_info
|
|
|
|
uint16_t Co2_MinValue;
|
|
|
|
uint16_t Co2_MinValue;
|
|
|
|
uint16_t Co2_TempValue;
|
|
|
|
uint16_t Co2_TempValue;
|
|
|
|
SET_INDEX SetIndex;
|
|
|
|
SET_INDEX SetIndex;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
uint8_t SensorRetry;
|
|
|
|
uint16_t Co2_TempMax;
|
|
|
|
uint16_t Co2_TempMax;
|
|
|
|
uint16_t Co2_TempMin;
|
|
|
|
uint16_t Co2_TempMin;
|
|
|
|
}CONTROL_INFO;
|
|
|
|
}CONTROL_INFO;
|
|
|
@ -279,6 +280,7 @@ static void Action_Get_SensorReadProcess(void)
|
|
|
|
if(nowSensorState == KCD_HP100_SUCCESS)
|
|
|
|
if(nowSensorState == KCD_HP100_SUCCESS)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
KCD_HP100_Get_Co2((uint16_t *)&Control_Info.Co2_Now);
|
|
|
|
KCD_HP100_Get_Co2((uint16_t *)&Control_Info.Co2_Now);
|
|
|
|
|
|
|
|
Control_Info.SensorRetry = 0;
|
|
|
|
Control_Info.Co2_SaveData = Control_Info.Co2_Now;
|
|
|
|
Control_Info.Co2_SaveData = Control_Info.Co2_Now;
|
|
|
|
|
|
|
|
|
|
|
|
if(Control_Info.Co2_Now >= Control_Info.Co2_MaxValue)
|
|
|
|
if(Control_Info.Co2_Now >= Control_Info.Co2_MaxValue)
|
|
|
@ -292,7 +294,15 @@ static void Action_Get_SensorReadProcess(void)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if(nowSensorState == KCD_HP100_ERROR_TIMEOUT)
|
|
|
|
else if(nowSensorState == KCD_HP100_ERROR_TIMEOUT)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Control_Info.Co2_Now = 0xFFFF;
|
|
|
|
Control_Info.SensorRetry++;
|
|
|
|
|
|
|
|
if(Control_Info.SensorRetry <= 3)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
Action_Get_SensorData();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
Control_Info.Co2_Now = 0xFFFF;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(millis() - Control_Info.GetSensorDataTickCount >= ACTION_SENSOR_READ_INTERVAL)
|
|
|
|
if(millis() - Control_Info.GetSensorDataTickCount >= ACTION_SENSOR_READ_INTERVAL)
|
|
|
@ -321,36 +331,29 @@ static void Action_SaveSensorData(void)
|
|
|
|
RTC_TIME nowTime;
|
|
|
|
RTC_TIME nowTime;
|
|
|
|
nowTime = RTC_Get_Time();
|
|
|
|
nowTime = RTC_Get_Time();
|
|
|
|
|
|
|
|
|
|
|
|
if(SaveCheckSec != nowTime.rtc_Sec)
|
|
|
|
if(SaveCheckSec != nowTime.rtc_Sec){
|
|
|
|
{
|
|
|
|
|
|
|
|
SaveCheckSec = nowTime.rtc_Sec;
|
|
|
|
SaveCheckSec = nowTime.rtc_Sec;
|
|
|
|
if(nowTime.rtc_Sec == 0)
|
|
|
|
if(nowTime.rtc_Sec == 0){
|
|
|
|
{
|
|
|
|
|
|
|
|
if(Control_Info.Co2_SaveData != 0xFFFF){
|
|
|
|
if(Control_Info.Co2_SaveData != 0xFFFF){
|
|
|
|
SaveSensorCo2[SaveSensorIndex++] = Control_Info.Co2_SaveData;
|
|
|
|
SaveSensorCo2[SaveSensorIndex++] = Control_Info.Co2_SaveData;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(nowTime.rtc_Min % 5 == 0)
|
|
|
|
if(nowTime.rtc_Min % 5 == 0){
|
|
|
|
{
|
|
|
|
if(SaveSensorIndex >= 5){
|
|
|
|
if(SaveSensorIndex >= 5)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
uint8_t i;
|
|
|
|
uint8_t i;
|
|
|
|
uint16_t Sum_Co2, Max_Co2, Min_Co2;
|
|
|
|
uint16_t Sum_Co2, Max_Co2, Min_Co2;
|
|
|
|
Max_Co2 = 0;
|
|
|
|
Max_Co2 = 0;
|
|
|
|
Min_Co2 = 0xFFFF;
|
|
|
|
Min_Co2 = 0xFFFF;
|
|
|
|
Sum_Co2 = 0;
|
|
|
|
Sum_Co2 = 0;
|
|
|
|
|
|
|
|
|
|
|
|
for(i = 0 ; i < SaveSensorIndex ; i++)
|
|
|
|
for(i = 0 ; i < SaveSensorIndex ; i++){
|
|
|
|
{
|
|
|
|
|
|
|
|
Sum_Co2 += SaveSensorCo2[i];
|
|
|
|
Sum_Co2 += SaveSensorCo2[i];
|
|
|
|
|
|
|
|
|
|
|
|
if(SaveSensorCo2[i] >= Max_Co2)
|
|
|
|
if(SaveSensorCo2[i] >= Max_Co2){
|
|
|
|
{
|
|
|
|
|
|
|
|
Max_Co2 = SaveSensorCo2[i];
|
|
|
|
Max_Co2 = SaveSensorCo2[i];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(SaveSensorCo2[i] <= Min_Co2)
|
|
|
|
if(SaveSensorCo2[i] <= Min_Co2){
|
|
|
|
{
|
|
|
|
|
|
|
|
Min_Co2 = SaveSensorCo2[i];
|
|
|
|
Min_Co2 = SaveSensorCo2[i];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -358,12 +361,10 @@ static void Action_SaveSensorData(void)
|
|
|
|
Sum_Co2 -= Min_Co2;
|
|
|
|
Sum_Co2 -= Min_Co2;
|
|
|
|
Sum_Co2 /= (SaveSensorIndex - 2);
|
|
|
|
Sum_Co2 /= (SaveSensorIndex - 2);
|
|
|
|
|
|
|
|
|
|
|
|
if(Save_SensorData_SDCard(Sum_Co2, Max_Co2, Min_Co2, Control_Info.isRelayOn ? 0xFF : 0x00) == false)
|
|
|
|
if(Save_SensorData_SDCard(Sum_Co2, Max_Co2, Min_Co2, Control_Info.isRelayOn ? 0xFF : 0x00) == false){
|
|
|
|
{
|
|
|
|
|
|
|
|
printf("Save fail, %04d-%02d-%02d %02d:%02d:%02d, %d, %d, %d, %d\r\n", nowTime.rtc_Year, nowTime.rtc_Month, nowTime.rtc_Date, nowTime.rtc_Hour, nowTime.rtc_Min, nowTime.rtc_Sec, Sum_Co2, Max_Co2, Min_Co2, Control_Info.isRelayOn);
|
|
|
|
printf("Save fail, %04d-%02d-%02d %02d:%02d:%02d, %d, %d, %d, %d\r\n", nowTime.rtc_Year, nowTime.rtc_Month, nowTime.rtc_Date, nowTime.rtc_Hour, nowTime.rtc_Min, nowTime.rtc_Sec, Sum_Co2, Max_Co2, Min_Co2, Control_Info.isRelayOn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else{
|
|
|
|
{
|
|
|
|
|
|
|
|
printf("Save, %04d-%02d-%02d %02d:%02d:%02d, %d, %d, %d, %d\r\n", nowTime.rtc_Year, nowTime.rtc_Month, nowTime.rtc_Date, nowTime.rtc_Hour, nowTime.rtc_Min, nowTime.rtc_Sec, Sum_Co2, Max_Co2, Min_Co2, Control_Info.isRelayOn);
|
|
|
|
printf("Save, %04d-%02d-%02d %02d:%02d:%02d, %d, %d, %d, %d\r\n", nowTime.rtc_Year, nowTime.rtc_Month, nowTime.rtc_Date, nowTime.rtc_Hour, nowTime.rtc_Min, nowTime.rtc_Sec, Sum_Co2, Max_Co2, Min_Co2, Control_Info.isRelayOn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|