RM2_1 #2

Merged
sundp merged 208 commits from RM2_1 into master 2024-09-13 09:16:14 +08:00
11 changed files with 127 additions and 45 deletions
Showing only changes of commit a6617752ff - Show all commits

View File

@ -172,9 +172,9 @@ function Decode(fPort, data, variables) {
// For NC(Normal Closed states
//data.Sensor1_Door_Contact_Open = bytes[3]===1?"Door Closed":"Door Open";
data.Sensor2_Emergency_Button = bytes[4] === 0 ? "Alarm Push Down" : "No Alarm, Released";
data.Sensor3_Motion_Detected = bytes[5] === 0 ? "No Motion" : "Motion Detected";
data.Sensor2_Motion_Detected = bytes[4] === 0 ? "No Motion" : "Motion Detected";
data.Sensor3_Emergency_Button = bytes[5] === 0 ? "Alarm Push Down" : "No Alarm, Released";
data.length = bytes.length
if (data.length === 9) {
data.Over_stay_state = (bytes[6] === 0) ? "False" : "True";
@ -219,19 +219,26 @@ function Decode(fPort, data, variables) {
data.Fall_Down_Speed_in_m_per_s = (bytes[18]);
data.Fall_Down_Gravity_in_g = (bytes[19]);
data.SOS_PushDown_Stamp = (bytes[20] << 24 | bytes[21] << 16 | bytes[22] << 8 | bytes[23]);
var sos_start = new Date(1000 * data.SOS_PushDown_Stamp);
if (data.SOS_PushDown_Stamp != 0) {
var sos_start = new Date(1000 * data.SOS_PushDown_Stamp);
data.SOS_PushDown_Time = "[" + sos_start.getDate() + "." + (sos_start.getMonth() + 1) + "." + (sos_start.getFullYear()) + "] " + sos_start.getHours() + ":" + sos_start.getMinutes() + ":" + sos_start.getSeconds();
} else data.SOS_PushDown_Time = "N/A";
data.SOS_ReleaseUP_Stamp = (bytes[24] << 24 | bytes[25] << 16 | bytes[26] << 8 | bytes[27]);
var sos_stop = new Date(1000 * data.SOS_ReleaseUP_Stamp);
data.SOS_PushDown_Time = "[" + sos_start.getDate() + "." + (sos_start.getMonth() + 1) + "." + (sos_start.getFullYear()) + "] " + sos_start.getHours() + ":" + sos_start.getMinutes() + ":" + sos_start.getSeconds();
data.SOS_ReleaseUP_Time = "[" + sos_stop.getDate() + "." + (sos_stop.getMonth() + 1) + "." + (sos_stop.getFullYear()) + "] " + sos_stop.getHours() + ":" + sos_stop.getMinutes() + ":" + sos_stop.getSeconds();
if (data.SOS_ReleaseUP_Stamp != 0) {
var sos_stop = new Date(1000 * data.SOS_ReleaseUP_Stamp);
data.SOS_ReleaseUP_Time = "[" + sos_stop.getDate() + "." + (sos_stop.getMonth() + 1) + "." + (sos_stop.getFullYear()) + "] " + sos_stop.getHours() + ":" + sos_stop.getMinutes() + ":" + sos_stop.getSeconds();
} else data.SOS_ReleaseUP_Time = "N/A";
data.Fall_Down_Stamp = (bytes[28] << 24 | bytes[29] << 16 | bytes[30] << 8 | bytes[31]);
var fall_start = new Date(1000 * data.Fall_Down_Stamp);
if (data.Fall_Down_Stamp != 0) {
var fall_start = new Date(1000 * data.Fall_Down_Stamp);
data.Fall_Down_Time = "[" + fall_start.getDate() + "." + (fall_start.getMonth() + 1) + "." + (fall_start.getFullYear()) + "] " + fall_start.getHours() + ":" + fall_start.getMinutes() + ":" + fall_start.getSeconds();
} else data.Fall_RiseUp_Stamp = "N/A";
data.Fall_RiseUp_Stamp = (bytes[32] << 24 | bytes[33] << 16 | bytes[34] << 8 | bytes[35]);
var fall_stop = new Date(1000 * data.Fall_RiseUp_Stamp);
data.Fall_Down_Time = "[" + fall_start.getDate() + "." + (fall_start.getMonth() + 1) + "." + (fall_start.getFullYear()) + "] " + fall_start.getHours() + ":" + fall_start.getMinutes() + ":" + fall_start.getSeconds();
data.Fall_RiseUp_Time = "[" + fall_stop.getDate() + "." + (fall_stop.getMonth() + 1) + "." + (fall_stop.getFullYear()) + "] " + fall_stop.getHours() + ":" + fall_stop.getMinutes() + ":" + fall_stop.getSeconds();
if (data.Fall_RiseUp_Stamp != 0) {
var fall_stop = new Date(1000 * data.Fall_RiseUp_Stamp);
data.Fall_RiseUp_Time = "[" + fall_stop.getDate() + "." + (fall_stop.getMonth() + 1) + "." + (fall_stop.getFullYear()) + "] " + fall_stop.getHours() + ":" + fall_stop.getMinutes() + ":" + fall_stop.getSeconds();
} else data.Fall_RiseUp_Time = "N/A";
}
return { "Yunhorn_SmarToilets_data": data };
}

View File

@ -99,15 +99,22 @@ void Error_Handler(void);
#define HALL2_GPIO_Port GPIOA
#define HALL2_EXTI_IRQn EXTI1_IRQn
#define HALL3_Pin GPIO_PIN_8 // ALARM RESET PIN
#define HALL3_Pin GPIO_PIN_9 // ALARM MUTE PIN
#define HALL3_GPIO_Port GPIOA
#define HALL3_EXTI_IRQn EXTI9_5_IRQn
#define ALARM_RESET_Pin HALL3_Pin
#define HALL4_Pin GPIO_PIN_10 // ALARM RESET PIN
#define HALL4_GPIO_Port GPIOA
#define HALL4_EXTI_IRQn EXTI15_10_IRQn
#define ALARM_MUTE_Pin HALL3_Pin // ALARM MUTE BUTTON
#define ALARM_RESET_Pin HALL4_Pin // ALARM RESET BUTTON
#define HALL1_STATE HAL_GPIO_ReadPin(HALL1_GPIO_Port, HALL1_Pin) //DOOR CONTACT
#define HALL2_STATE HAL_GPIO_ReadPin(HALL2_GPIO_Port, HALL2_Pin) //SOS BUTTON
#define HALL3_STATE HAL_GPIO_ReadPin(HALL3_GPIO_Port, HALL3_Pin) //ALARM RESET BUTTON
#define HALL3_STATE HAL_GPIO_ReadPin(HALL3_GPIO_Port, HALL3_Pin) //ALARM MUTE BUTTON
#define HALL4_STATE HAL_GPIO_ReadPin(HALL4_GPIO_Port, HALL4_Pin) //ALARM RESET BUTTON
#else
#define BUT1_Pin GPIO_PIN_0

View File

@ -239,7 +239,7 @@
#define MajorVer 24U
#define MinorVer 07U
#define SubMinorVer 26U
#define SubMinorVer 30U
#define FirmwareVersion 3U
#define YUNHORN_STS_MAX_NVM_CFG_SIZE 64U

View File

@ -679,10 +679,12 @@ void STS_YunhornSTSEventP8_Process(void);
void OnSensor1StateChanged(void);
void OnSensor2StateChanged(void);
void OnSensor3StateChanged(void);
void OnSensor3AStateChanged(void);
void OnSensor3BStateChanged(void);
void OnSensor3CStateChanged(void);
void OnSensor4StateChanged(void);
void OnSensorRSS3AStateChanged(void);
void OnSensorRSS3BStateChanged(void);
void OnSensorRSS3CStateChanged(void);
uint32_t STS_Get_Date_Time_Stamp(void);//uint32_t *time_stamp, uint8_t *datetimestamp);
void STS_SENSOR_MEMS_Reset(uint8_t cnt);

View File

@ -88,11 +88,11 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(A111_SENSOR_INTERRUPT_GPIO_Port, &GPIO_InitStruct);
#ifdef STS_O7
GPIO_InitStruct.Pin = HALL1_Pin|HALL2_Pin|HALL3_Pin;
#if defined(STS_O7)||defined(STS_O6)||defined(STS_O2)
GPIO_InitStruct.Pin = HALL1_Pin|HALL2_Pin|HALL3_Pin|HALL4_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
#else
/*Configure GPIO pins : PAPin PAPin */
@ -116,7 +116,7 @@ void MX_GPIO_Init(void)
HAL_GPIO_Init(BUT3_GPIO_Port, &GPIO_InitStruct);
#endif
#ifdef STS_O7
#if defined(STS_O7)||defined(STS_O6)||defined(STS_O2)
HAL_NVIC_SetPriority(HALL1_EXTI_IRQn, 15, 0);
HAL_NVIC_EnableIRQ(HALL1_EXTI_IRQn);
@ -126,6 +126,9 @@ void MX_GPIO_Init(void)
HAL_NVIC_SetPriority(HALL3_EXTI_IRQn, 15, 0);
HAL_NVIC_EnableIRQ(HALL3_EXTI_IRQn);
HAL_NVIC_SetPriority(HALL4_EXTI_IRQn, 15, 0);
HAL_NVIC_EnableIRQ(HALL4_EXTI_IRQn);
HAL_NVIC_SetPriority(A111_SENSOR_INTERRUPT_EXTI_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(A111_SENSOR_INTERRUPT_EXTI_IRQn);

View File

@ -231,7 +231,7 @@ void EXTI0_IRQHandler(void)
/* USER CODE BEGIN EXTI0_IRQn 0 */
/* USER CODE END EXTI0_IRQn 0 */
#ifdef STS_O7
#if defined(STS_O7)||defined(STS_O6)||defined(STS_O2)
//sts_reed_hall_1_changed = 1;
HAL_GPIO_EXTI_IRQHandler(HALL1_Pin);
#else
@ -251,7 +251,7 @@ void EXTI1_IRQHandler(void)
/* USER CODE BEGIN EXTI1_IRQn 0 */
/* USER CODE END EXTI1_IRQn 0 */
#ifdef STS_O7
#if defined(STS_O7)||defined(STS_O6)||defined(STS_O2)
//sts_reed_hall_2_changed = 1;
HAL_GPIO_EXTI_IRQHandler(HALL2_Pin);
#else
@ -365,7 +365,26 @@ void EXTI9_5_IRQHandler(void)
/* USER CODE END EXTI9_5_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(HALL2_Pin);
HAL_GPIO_EXTI_IRQHandler(HALL3_Pin); // GPIOA -9
/* USER CODE BEGIN EXTI9_5_IRQn 1 */
#ifdef RM2
HAL_GPIO_EXTI_IRQHandler(A111_SENSOR_INTERRUPT_Pin);
#endif
/* USER CODE END EXTI9_5_IRQn 1 */
}
/**
* @brief This function handles EXTI Lines [15:10] Interrupt.
*/
void EXTI15_10_IRQHandler(void)
{
/* USER CODE BEGIN EXTI9_5_IRQn 0 */
/* USER CODE END EXTI9_5_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(HALL4_Pin); // GPIOA -10
/* USER CODE BEGIN EXTI9_5_IRQn 1 */
#ifdef RM2

View File

@ -63,6 +63,7 @@ extern volatile uint8_t sts_occupancy_status;
extern volatile uint8_t sts_reed_hall_result, sts_emergency_button_pushed; // inital 0 = close
volatile uint8_t sts_hall1_read=STS_Status_Door_Open,sts_hall2_read=STS_Status_SOS_Release; // Above hall1_read == reed_hall_result, hall2_read == emergency_button
volatile uint8_t sts_hall3_read=STS_Status_Door_Open,sts_hall4_read=STS_Status_SOS_Release;
extern volatile uint8_t sts_reed_hall_1_result, sts_reed_hall_2_result;
extern volatile uint8_t sts_tof_result_changed_flag;

View File

@ -531,13 +531,13 @@ int sts_presence_rss_fall_rise_detection(void)
if (motion_detected_count++ == 10) {
motion_detected_count=0;
} else {
OnSensor3CStateChanged();
OnSensorRSS3CStateChanged();
}
sts_rss_result = (average_result > 3)? 1: 0;
if (sts_rss_result) {
LED1_ON;
OnSensor3AStateChanged();
OnSensorRSS3AStateChanged();
} else {
LED1_OFF;
@ -550,7 +550,7 @@ int sts_presence_rss_fall_rise_detection(void)
if (sts_fall_rising_detected_result) {
LED1_ON;
OnSensor3BStateChanged();
OnSensorRSS3BStateChanged();
} else {
LED1_OFF;

View File

@ -39,7 +39,14 @@
extern volatile sts_cfg_nvm_t sts_cfg_nvm;
extern volatile uint8_t sts_ac_code[20];
#if defined(STS_O7)
volatile uint8_t sts_work_mode = STS_UNI_MODE;
#elif defined(STS_O6)
volatile uint8_t sts_work_mode = STS_DUAL_MODE;
#elif defined(STS_O2)
volatile uint8_t sts_work_mode = STS_RSS_MODE;
#endif
volatile uint8_t sts_service_mask=0;
volatile uint32_t rfac_timer;
volatile uint8_t sensor_data_ready=0;
@ -48,8 +55,9 @@ volatile STS_PRESENCE_SENSOR_Event_Status_t sts_o7_event_status;
// GPIO reed hall pin
extern volatile uint8_t sts_reed_hall_result;
volatile uint8_t last_sts_reed_hall_result;
extern volatile uint8_t sts_hall1_read,sts_hall2_read, sts_hall3_read;
volatile uint8_t sts_reed_hall_1_result=STS_Status_Door_Open,sts_reed_hall_2_result=STS_Status_SOS_Release, last_sts_reed_hall_1_result=STS_Status_Door_Open, last_sts_reed_hall_2_result=STS_Status_SOS_Release,sts_reed_hall_3_result=STS_Status_Door_Open, last_sts_reed_hall_3_result=STS_Status_Door_Open;
extern volatile uint8_t sts_hall1_read,sts_hall2_read, sts_hall3_read, sts_hall4_read;
volatile uint8_t sts_reed_hall_1_result=STS_Status_Door_Open,sts_reed_hall_2_result=STS_Status_SOS_Release, last_sts_reed_hall_1_result=STS_Status_Door_Open, last_sts_reed_hall_2_result=STS_Status_SOS_Release;
volatile uint8_t sts_reed_hall_3_result=STS_Status_Door_Open, last_sts_reed_hall_3_result=STS_Status_Door_Open, sts_reed_hall_4_result=STS_Status_Door_Open, last_sts_reed_hall_4_result=STS_Status_Door_Open;
volatile uint8_t sts_soap_level_state;
@ -227,6 +235,9 @@ void STS_YunhornSTSEventP1_Process(void)
sts_reed_hall_3_result = HALL3_STATE;// sts_hall3_read;
last_sts_reed_hall_3_result = sts_reed_hall_3_result;
sts_reed_hall_4_result = HALL4_STATE;// sts_hall3_read;
last_sts_reed_hall_4_result = sts_reed_hall_4_result;
STS_Combined_Status_Processing();
}
@ -1066,7 +1077,7 @@ void OnSensor2StateChanged(void)
}
/* motion sensor RSS ON-OFF */
void OnSensor3StateChanged(void)
void OnSensorRSS3StateChanged(void)
{
SysTime_t sensor_event_time = SysTimeGetMcuTime();
#if 0
@ -1093,7 +1104,7 @@ void OnSensor3StateChanged(void)
}
/* motion sensor A: Motion/No-Motion Detection, Unconscious Detection */
void OnSensor3AStateChanged(void)
void OnSensorRSS3AStateChanged(void)
{
SysTime_t sensor_event_time = SysTimeGetMcuTime();
#if 0
@ -1119,7 +1130,7 @@ void OnSensor3AStateChanged(void)
}
/* motion sensor B, Fall Detection suggestionF */
void OnSensor3BStateChanged(void)
void OnSensorRSS3BStateChanged(void)
{
SysTime_t sensor_event_time = SysTimeGetMcuTime();
uint32_t time_stamp=STS_Get_Date_Time_Stamp();
@ -1172,7 +1183,7 @@ void OnSensor3BStateChanged(void)
}
/* motion sensor C: Over stay detection */
void OnSensor3CStateChanged(void)
void OnSensorRSS3CStateChanged(void)
{
SysTime_t sensor_event_time = SysTimeGetMcuTime();
#if 0
@ -1197,6 +1208,19 @@ void OnSensor3CStateChanged(void)
}
void OnSensor3StateChanged(void)
{
#if 0
SysTime_t sensor_event_time = SysTimeGetMcuTime();
// reserved... to be finalized 2024-06-03
if (sts_xxx_result)
sts_o7_sensorData.event_sensor4_start_time = sensor_event_time.Seconds;
else
sts_o7_sensorData.event_sensor4_stop_time = sensor_event_time.Seconds;
#endif
}
void OnSensor4StateChanged(void)
{
#if 0

View File

@ -53,8 +53,8 @@ extern volatile uint32_t rfac_timer;
volatile uint8_t sts_ac_code[YUNHORN_STS_AC_CODE_SIZE]={0x0};
extern hmac_result_t hmac_result;
extern volatile uint8_t sts_hall1_read, sts_hall2_read;
volatile uint8_t last_sts_hall1_read=STS_Status_Door_Open, last_sts_hall2_read=STS_Status_SOS_Release, last_sts_hall3_read=STS_Status_Door_Open;
extern volatile uint8_t sts_hall1_read, sts_hall2_read, sts_hall3_read, sts_hall4_read;
volatile uint8_t last_sts_hall1_read=STS_Status_Door_Open, last_sts_hall2_read=STS_Status_SOS_Release, last_sts_hall3_read=STS_Status_Door_Open, last_sts_hall4_read=STS_Status_Door_Open ;
volatile uint8_t sts_reed_hall_result =0, sts_emergency_button_pushed=0; // inital 0 = close
extern volatile uint8_t sts_work_mode, sts_cloud_netcolor, sts_lamp_bar_color, sts_status_color;
@ -750,13 +750,13 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
}
break;
case ALARM_RESET_Pin:
sts_hall2_read = HALL2_STATE;
case HALL3_Pin:
sts_hall3_read = HALL3_STATE;
HAL_Delay(30); //de-bouncing
if (sts_hall2_read == HALL2_STATE)
if (sts_hall3_read == HALL3_STATE)
{
APP_LOG(TS_OFF, VLEVEL_L, "\n\n SOS Button Read = %02x --%s\r\n", sts_hall2_read, sts_sos_status_code[sts_hall2_read]);
OnSensor2StateChanged();
APP_LOG(TS_OFF, VLEVEL_L, "\n\n ALARM MUTE Button Read = %02x --%s\r\n", sts_hall3_read, sts_sos_status_code[sts_hall3_read]);
OnSensor3StateChanged();
//sensor_data_ready =1;
//UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0);
{
@ -764,7 +764,25 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
}
last_sts_hall2_read = sts_hall2_read;
last_sts_hall3_read = sts_hall3_read;
}
break;
case HALL4_Pin:
sts_hall4_read = HALL4_STATE;
HAL_Delay(30); //de-bouncing
if (sts_hall4_read == HALL4_STATE)
{
APP_LOG(TS_OFF, VLEVEL_L, "\n\n ALARM RESET Button Read = %02x --%s\r\n", sts_hall4_read, sts_sos_status_code[sts_hall4_read]);
OnSensor4StateChanged();
//sensor_data_ready =1;
//UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0);
{
STS_YunhornSTSEventP1_Process();
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
}
last_sts_hall4_read = sts_hall4_read;
}
break;
@ -784,10 +802,11 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
case BUT2_Pin:
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaStopJoinEvent), CFG_SEQ_Prio_0);
break;
#endif
case BUT3_Pin:
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaStoreContextEvent), CFG_SEQ_Prio_0);
break;
#endif
default:
break;
}

View File

@ -43,7 +43,7 @@ STS_O7 For Occupancy sensors
2024-06-06 before STS_FALL_DETECTION_MODE change
2024-06-17 good for sensor 1 and sensor 2 start stop timer freezed for now
2024-06-26 RTM for pixel-network STS_RSS_MODE = 3 P113 switch
******************************************************************************
2024-07-30 revert back ...not good for alarm so far
*****************************************************************************
*/