--- motion fall detection factor 3 added
This commit is contained in:
parent
c0dd7ed536
commit
db022db0c2
|
@ -133,7 +133,7 @@ volatile uint8_t sts_fall_rising_detected_result = STS_PRESENCE_NORMAL;
|
||||||
volatile uint8_t sts_fall_rising_detected_result_changed_flag =0;
|
volatile uint8_t sts_fall_rising_detected_result_changed_flag =0;
|
||||||
volatile uint8_t last_sts_fall_rising_detected_result= STS_PRESENCE_NORMAL;
|
volatile uint8_t last_sts_fall_rising_detected_result= STS_PRESENCE_NORMAL;
|
||||||
volatile float last_average_presence_distance;
|
volatile float last_average_presence_distance;
|
||||||
volatile uint16_t sts_fall_rising_pattern_factor1=0, sts_fall_rising_pattern_factor2=0;
|
volatile uint16_t sts_fall_rising_pattern_factor1=0, sts_fall_rising_pattern_factor2=0, sts_fall_rising_pattern_factor3=0;
|
||||||
volatile uint16_t sts_roc_acc_standard_variance=0;
|
volatile uint16_t sts_roc_acc_standard_variance=0;
|
||||||
extern volatile uint8_t sts_presence_fall_detection;
|
extern volatile uint8_t sts_presence_fall_detection;
|
||||||
/* USER CODE END Includes */
|
/* USER CODE END Includes */
|
||||||
|
@ -580,6 +580,7 @@ int sts_presence_rss_fall_rise_detection(void)
|
||||||
APP_LOG(TS_OFF, VLEVEL_L,"\r\nSensor at Ceiling Height: %u mm\r\n",(uint16_t)sts_sensor_install_height);
|
APP_LOG(TS_OFF, VLEVEL_L,"\r\nSensor at Ceiling Height: %u mm\r\n",(uint16_t)sts_sensor_install_height);
|
||||||
APP_LOG(TS_OFF, VLEVEL_L,"\r\n|Motion Distance Zone| ##### |Height cm|\r\n");
|
APP_LOG(TS_OFF, VLEVEL_L,"\r\n|Motion Distance Zone| ##### |Height cm|\r\n");
|
||||||
uint8_t kk = (uint8_t)(sts_sensor_install_height/400+1);
|
uint8_t kk = (uint8_t)(sts_sensor_install_height/400+1);
|
||||||
|
#if 0
|
||||||
APP_LOG(TS_OFF, VLEVEL_L,"\r\n|-----------Ceiling-------Sensor---V-----|\r\n");
|
APP_LOG(TS_OFF, VLEVEL_L,"\r\n|-----------Ceiling-------Sensor---V-----|\r\n");
|
||||||
for (uint8_t k=0; k<=kk; k++)
|
for (uint8_t k=0; k<=kk; k++)
|
||||||
{
|
{
|
||||||
|
@ -593,6 +594,7 @@ int sts_presence_rss_fall_rise_detection(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
APP_LOG(TS_OFF, VLEVEL_L,"\r\n|-----------Floor Ground-----------^-----|\r\n");
|
APP_LOG(TS_OFF, VLEVEL_L,"\r\n|-----------Floor Ground-----------^-----|\r\n");
|
||||||
|
#endif
|
||||||
//#endif
|
//#endif
|
||||||
average_distance = (1000.0f*average_distance)/average_result; // in meters
|
average_distance = (1000.0f*average_distance)/average_result; // in meters
|
||||||
average_score = (1000.0f*average_score)/average_result;
|
average_score = (1000.0f*average_score)/average_result;
|
||||||
|
@ -641,6 +643,11 @@ void STS_YunhornCheckStandardDeviation(void)
|
||||||
uint32_t roc_acc[DEFAULT_MOTION_DATASET_LEN]={0}, sum_roc_acc=0.0f, average_roc_acc=0.0f, variance_roc_acc=0.0f, standard_variance_roc_acc=0.0f;;
|
uint32_t roc_acc[DEFAULT_MOTION_DATASET_LEN]={0}, sum_roc_acc=0.0f, average_roc_acc=0.0f, variance_roc_acc=0.0f, standard_variance_roc_acc=0.0f;;
|
||||||
//act as speed of change at given time slot acc_integration_sleep_ms(1000 / DEFAULT_UPDATE_RATE_PRESENCE);
|
//act as speed of change at given time slot acc_integration_sleep_ms(1000 / DEFAULT_UPDATE_RATE_PRESENCE);
|
||||||
uint8_t SAMPLE_DATASET_NUM = MIN(motion_count,DEFAULT_MOTION_DATASET_LEN );
|
uint8_t SAMPLE_DATASET_NUM = MIN(motion_count,DEFAULT_MOTION_DATASET_LEN );
|
||||||
|
APP_LOG(TS_OFF, VLEVEL_M, "\r\n Sample dataset for deviation process =%u \r\n",SAMPLE_DATASET_NUM);
|
||||||
|
|
||||||
|
// initial state
|
||||||
|
sts_fall_rising_detected_result = STS_PRESENCE_NORMAL;
|
||||||
|
|
||||||
//SUM of samples
|
//SUM of samples
|
||||||
for(i= 0; i< SAMPLE_DATASET_NUM; i++)
|
for(i= 0; i< SAMPLE_DATASET_NUM; i++)
|
||||||
{
|
{
|
||||||
|
@ -735,8 +742,10 @@ void STS_YunhornCheckStandardDeviation(void)
|
||||||
//sts_fall_rising_pattern_factor1 = (int)(standard_variance_roc_distance);
|
//sts_fall_rising_pattern_factor1 = (int)(standard_variance_roc_distance);
|
||||||
sts_fall_rising_pattern_factor1 = (int)(average_roc_distance);
|
sts_fall_rising_pattern_factor1 = (int)(average_roc_distance);
|
||||||
sts_fall_rising_pattern_factor2 = (int)(fabs(average_presence_distance - last_average_presence_distance));
|
sts_fall_rising_pattern_factor2 = (int)(fabs(average_presence_distance - last_average_presence_distance));
|
||||||
|
sts_fall_rising_pattern_factor3 = (int)(standard_variance_presence_score);
|
||||||
|
|
||||||
APP_LOG(TS_OFF, VLEVEL_L,"\r\nAvg-Dist =%6u, Last_AVG-Dist =%6u \r\n", (int)(average_presence_distance), (int)(last_average_presence_distance));
|
APP_LOG(TS_OFF, VLEVEL_L,"\r\nAvg-Dist =%6u, Last_AVG-Dist =%6u \r\n", (int)(average_presence_distance), (int)(last_average_presence_distance));
|
||||||
|
APP_LOG(TS_OFF, VLEVEL_L,"\r\nStandard Variance Presence_score=%u \r\n", (int)(standard_variance_presence_score));
|
||||||
|
|
||||||
APP_LOG(TS_OFF, VLEVEL_M, "\r\nThreshold 1: Acc = %6u ---- Measure 1 = %6u ---- \r\n",
|
APP_LOG(TS_OFF, VLEVEL_M, "\r\nThreshold 1: Acc = %6u ---- Measure 1 = %6u ---- \r\n",
|
||||||
(int)(sts_fall_detection_acc_threshold), (int)(sts_fall_rising_pattern_factor1/10));
|
(int)(sts_fall_detection_acc_threshold), (int)(sts_fall_rising_pattern_factor1/10));
|
||||||
|
@ -752,8 +761,6 @@ void STS_YunhornCheckStandardDeviation(void)
|
||||||
{
|
{
|
||||||
sts_fall_rising_detected_result = STS_PRESENCE_STAYSTILL;
|
sts_fall_rising_detected_result = STS_PRESENCE_STAYSTILL;
|
||||||
//sts_fall_rising_detected_result = STS_PRESENCE_NO_MOVEMENT;
|
//sts_fall_rising_detected_result = STS_PRESENCE_NO_MOVEMENT;
|
||||||
} else {
|
|
||||||
sts_fall_rising_detected_result = STS_PRESENCE_NORMAL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -815,21 +822,15 @@ void STS_YunhornCheckStandardDeviation(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
last_sts_fall_rising_detected_result = sts_fall_rising_detected_result;
|
last_sts_fall_rising_detected_result = sts_fall_rising_detected_result;
|
||||||
|
|
||||||
} else if ((average_presence_distance + sts_motion_feature[motion_feature_count].p_dist_standard) > last_average_presence_distance)
|
} else if ((average_presence_distance + sts_motion_feature[motion_feature_count].p_dist_standard) > last_average_presence_distance)
|
||||||
{
|
{
|
||||||
sts_fall_rising_detected_result = STS_PRESENCE_LAYDOWN;
|
sts_fall_rising_detected_result = STS_PRESENCE_LAYDOWN;
|
||||||
} else {
|
|
||||||
sts_fall_rising_detected_result = STS_PRESENCE_NORMAL;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
last_sts_fall_rising_detected_result = sts_fall_rising_detected_result;
|
last_sts_fall_rising_detected_result = sts_fall_rising_detected_result;
|
||||||
last_average_presence_distance = average_presence_distance;
|
last_average_presence_distance = average_presence_distance;
|
||||||
#if 0
|
|
||||||
if (sts_fall_rising_detected_result != STS_PRESENCE_NORMAL)
|
|
||||||
{
|
|
||||||
STS_FallDetection_LampBarProcess();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -240,7 +240,7 @@ void STS_YunhornSTSEventP1_Process(void)
|
||||||
sts_reed_hall_2_result = HALL2_STATE;// sts_hall2_read;
|
sts_reed_hall_2_result = HALL2_STATE;// sts_hall2_read;
|
||||||
if (sts_reed_hall_2_result != last_sts_reed_hall_2_result)
|
if (sts_reed_hall_2_result != last_sts_reed_hall_2_result)
|
||||||
{
|
{
|
||||||
sts_reed_hall_changed_flag = TRUE;
|
sts_reed_hall_changed_flag |= TRUE;
|
||||||
}
|
}
|
||||||
last_sts_reed_hall_2_result = sts_reed_hall_2_result;
|
last_sts_reed_hall_2_result = sts_reed_hall_2_result;
|
||||||
|
|
||||||
|
@ -270,11 +270,12 @@ void STS_YunhornSTSEventP2_Process(void)
|
||||||
sts_presence_rss_fall_rise_detection();
|
sts_presence_rss_fall_rise_detection();
|
||||||
|
|
||||||
sts_rss_result_changed_flag = (sts_rss_result == last_sts_rss_result)? 0:1;
|
sts_rss_result_changed_flag = (sts_rss_result == last_sts_rss_result)? 0:1;
|
||||||
APP_LOG(TS_OFF, VLEVEL_M, "\r\n STS_RSS RESULT CHANGED FLAG=%u \r\n",sts_rss_result_changed_flag );
|
APP_LOG(TS_OFF, VLEVEL_M, "\r\n STS_RSS Motion Detection changed flag=%u \r\n",sts_rss_result_changed_flag );
|
||||||
last_sts_rss_result = sts_rss_result;
|
last_sts_rss_result = sts_rss_result;
|
||||||
|
|
||||||
//sts_fall_rising_detected_result_changed_flag = (sts_fall_rising_detected_result == last_sts_fall_rising_detected_result)?0:1;
|
//sts_fall_rising_detected_result_changed_flag = (sts_fall_rising_detected_result == last_sts_fall_rising_detected_result)?0:1;
|
||||||
sts_fall_rising_detected_result_changed_flag = (sts_fall_rising_detected_result != 0)?1:0;
|
sts_fall_rising_detected_result_changed_flag = (sts_fall_rising_detected_result != last_sts_fall_rising_detected_result)?1:0;
|
||||||
|
APP_LOG(TS_OFF, VLEVEL_M, "\r\n STS_RSS Fall Detection changed flag FLAG=%u \r\n",sts_fall_rising_detected_result_changed_flag );
|
||||||
|
|
||||||
last_sts_fall_rising_detected_result = sts_fall_rising_detected_result;
|
last_sts_fall_rising_detected_result = sts_fall_rising_detected_result;
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ volatile uint8_t sts_unconscious_or_motionless_level_threshold=6; //6*128
|
||||||
volatile uint8_t sts_motionless_duration_threshold_in_min=1; // test mode, 1 min, normal 10 min. long occupation 30 min
|
volatile uint8_t sts_motionless_duration_threshold_in_min=1; // test mode, 1 min, normal 10 min. long occupation 30 min
|
||||||
volatile uint16_t sts_unconscious_level_threshold=600;
|
volatile uint16_t sts_unconscious_level_threshold=600;
|
||||||
volatile uint8_t sts_alarm_mute_reset_timer_in_10sec=6;
|
volatile uint8_t sts_alarm_mute_reset_timer_in_10sec=6;
|
||||||
extern volatile uint8_t sts_fall_rising_detected_result;
|
extern volatile uint8_t sts_fall_rising_detected_result, sts_fall_rising_detected_result_changed_flag;
|
||||||
extern volatile uint32_t event_start_time, event_stop_time;
|
extern volatile uint32_t event_start_time, event_stop_time;
|
||||||
extern volatile uint16_t sts_unconscious_threshold;
|
extern volatile uint16_t sts_unconscious_threshold;
|
||||||
volatile uint8_t sts_occupancy_overtime_state = 0;
|
volatile uint8_t sts_occupancy_overtime_state = 0;
|
||||||
|
@ -1709,9 +1709,10 @@ static void OnYunhornSTSOORSSWakeUpTimerEvent(void *context)
|
||||||
{
|
{
|
||||||
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP2), CFG_SEQ_Prio_0);
|
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP2), CFG_SEQ_Prio_0);
|
||||||
APP_LOG(TS_OFF,VLEVEL_M,"\r\n Wakeup Timer ======== RSS result changed flag=%d \r\n", sts_rss_result_changed_flag);
|
APP_LOG(TS_OFF,VLEVEL_M,"\r\n Wakeup Timer ======== RSS result changed flag=%d \r\n", sts_rss_result_changed_flag);
|
||||||
if ((STS_LoRa_WAN_Joined != 0)&&(sts_rss_result_changed_flag==1))
|
if ((sts_rss_result_changed_flag == 1) || (sts_fall_rising_detected_result_changed_flag == 1))
|
||||||
{
|
{
|
||||||
sts_rss_result_changed_flag = 0;
|
sts_rss_result_changed_flag = 0;
|
||||||
|
sts_fall_rising_detected_result_changed_flag = 0;
|
||||||
APP_LOG(TS_OFF,VLEVEL_M,"\r\n Wakeup Timer ======== Send Tx Result\r\n");
|
APP_LOG(TS_OFF,VLEVEL_M,"\r\n Wakeup Timer ======== Send Tx Result\r\n");
|
||||||
SendTxData();
|
SendTxData();
|
||||||
//UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
|
//UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
|
||||||
|
|
Loading…
Reference in New Issue