From ed9899355f4695fc8f176a98b83079490cb6cda8 Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Tue, 27 May 2025 12:24:37 +0800 Subject: [PATCH] revised decoder and heart-beat keep sync message for O6/T6/L8/O1L --- LoRaWAN/App/lora_app.c | 11 ++- STM32CubeIDE/Release/WLE5CC_NODE_STS.bin | Bin 190084 -> 190124 bytes STM32CubeIDE/Release/WLE5CC_NODE_STS.elf | Bin 275652 -> 275652 bytes STS/Core/Src/yunhorn_sts_process.c | 2 +- STS/TOF/App/app_tof.c | 1 + hk_as923_decoder.js | 97 +++++++++++++---------- 6 files changed, 63 insertions(+), 48 deletions(-) diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index 919baab..75d22eb 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -1878,6 +1878,7 @@ static void OnYunhornSTSSelfFunctionTestStartEvent(void *context) } static void OnYunhornSTSHeartBeatTimerEvent(void *context) { + APP_LOG(TS_OFF, VLEVEL_M, "\r\n Heart beat timer \r\n"); // UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventRFAC), CFG_SEQ_Prio_0); UTIL_TIMER_Stop(&YunhornSTSHeartBeatTimer); uint8_t appHeartBeatDataPort=2, appHeartBeatBufferSize=2, appHeartBeatDataBuffer[32]={0x0}; @@ -1897,7 +1898,6 @@ static void OnYunhornSTSHeartBeatTimerEvent(void *context) rfac_timer ++; } else { // normal heart-beat process -#if 1 #ifdef STS_P2 appHeartBeatDataPort = YUNHORN_STS_P2_LORA_APP_HTBT_PORT; #elif defined(STS_R1) @@ -1914,12 +1914,15 @@ static void OnYunhornSTSHeartBeatTimerEvent(void *context) appHeartBeatDataPort = YUNHORN_STS_L8_LORA_APP_HTBT_PORT; #endif +#if defined(L8)||defined(O6)||defined(O2)||defined(O6T)||defined(O1L)||defined(T6) // for keeping sync with webApp for state/lampbar color, in case failure of uplink message + APP_LOG(TS_OFF, VLEVEL_M, "\r\n Keep Sync message for state/lamp bar color with web app\r\n"); + UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); +#else appHeartBeatBufferSize = 2; appHeartBeatDataBuffer[0]=(uint8_t)(0x80|AppLedStateOn); appHeartBeatDataBuffer[1]=(uint8_t)(SYS_GetBatteryLevel()/100); //TODO XXX change to battery level in mV - APP_LOG(TS_OFF, VLEVEL_M, "\n\n HEART-BEAT TIMER = %d\n\n", rfac_timer); - STS_SENSOR_Upload_Message(appHeartBeatDataPort, appHeartBeatBufferSize, (uint8_t*)appHeartBeatDataBuffer); - + //APP_LOG(TS_OFF, VLEVEL_M, "\n\n HEART-BEAT TIMER = %d\n\n", rfac_timer); + STS_SENSOR_Upload_Message(appHeartBeatDataPort, appHeartBeatBufferSize, (uint8_t*)appHeartBeatDataBuffer); #endif } diff --git a/STM32CubeIDE/Release/WLE5CC_NODE_STS.bin b/STM32CubeIDE/Release/WLE5CC_NODE_STS.bin index ef60de49fb28f16798980956c2236cabf0e638a8..13559701363b8dd49156b401c57fb7e43d67808d 100644 GIT binary patch delta 8465 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 delta 37857 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 OKJ-w>%4+Z%;{O4>eG3Hu diff --git a/STS/Core/Src/yunhorn_sts_process.c b/STS/Core/Src/yunhorn_sts_process.c index ab315a8..87c24fb 100644 --- a/STS/Core/Src/yunhorn_sts_process.c +++ b/STS/Core/Src/yunhorn_sts_process.c @@ -186,7 +186,7 @@ volatile uint8_t sensor_data_ready=0; #if defined(STS_R1)||defined(STS_R5)||defined(STS_R4)||defined(STS_R1D) volatile uint32_t STS_TOFScanPeriod_msec=50, STS_TxPeriod_sec=30, STS_HeartBeatTimerPeriod_sec=3600; #elif defined(STS_L8)||defined(STS_P2)||defined(STS_O6T)||defined(STS_T6)||defined(O1L) -volatile uint32_t STS_TOFScanPeriod_msec=5000, STS_TxPeriod_sec=300, STS_HeartBeatTimerPeriod_sec=3600; +volatile uint32_t STS_TOFScanPeriod_msec=5000, STS_TxPeriod_sec=300, STS_HeartBeatTimerPeriod_sec=360; #endif //volatile uint8_t sts_pir_state = 0, sts_pir_result=0; volatile uint8_t last_sts_pir_read=0; diff --git a/STS/TOF/App/app_tof.c b/STS/TOF/App/app_tof.c index 1bd0b06..809ab18 100644 --- a/STS/TOF/App/app_tof.c +++ b/STS/TOF/App/app_tof.c @@ -502,6 +502,7 @@ void STS_TOF_L8_Init(void) { MX_53L8A1_ThresholdDetection_Init(); MX_53L8A1_ThresholdDetection_Process(); + } void STS_TOF_L8_Process(void) diff --git a/hk_as923_decoder.js b/hk_as923_decoder.js index b0d0f89..dac6e24 100644 --- a/hk_as923_decoder.js +++ b/hk_as923_decoder.js @@ -4,7 +4,7 @@ // - variables contains the device variables e.g. {"calibration": "3.5"} (both the key / value are of type string) // The function must return an object, e.g. {"temperature": 22.5} // -// Yunhorn SmarToilets Sensor R20250522R01 +// Yunhorn SmarToilets Sensor R20250527R01 // function Decode(fPort, data, variables) { @@ -363,29 +363,6 @@ function Decode(fPort, data, variables) { return { "Yunhorn_SmarToilets_data": data }; } - - - - break; - - - break; - - // STS-O6 occupancy sensor heart-beat - case 18: - //data.led_state=(bytes[0] & 0x7f) === 0 ? "Off" : "On"; - data.BoardLED = ((bytes[0] & 0x7F) === 0x01) ? "ON" : "OFF"; - //data.battery_level = bytes[1] + " %"; - data.battery_level = bytes[1] * 100 + "mV"; - return { "Yunhorn_SmarToilets_data": data }; - break; - - // STS-O7 Fall detection sensor heart-beat - case 20: - break; - - // STS-M7 Vibration sensor - case 20: break; // STS-R6 Weight Scale Sensor @@ -727,7 +704,7 @@ function Decode(fPort, data, variables) { data.color_occupy = code2color[bytes[4] - 0x30]; data.color_vacant = code2color[bytes[5] - 0x30]; break; - case 7: + case 7: // 'F' if (bytes[3] === 0x46) { // F --- fall down & unconscious detection threshold data.FALL_acceleration = (bytes[4] == 0x30 ? "Disabled" : ((bytes[4] - 0x30) * 10) + " mg/s2"); @@ -738,29 +715,65 @@ function Decode(fPort, data, variables) { } break; - case 8: - if (bytes[3] === 0x4f) { - // O -- over stay, onconscious, long stay - data.OMU_Motionless_duration_in_min = (bytes[4] == 0x30 ? "Disabled" : ((bytes[4] - 0x30)) + " Min"); - data.OMU_Long_Occupy_duration_in_Min = (bytes[5] == 0x30 ? "Disabled" : ((bytes[5] - 0x30) * 10) + " Min"); - data.OMU_Unconcious_Threshold = (bytes[6] == 0x30 ? "Disabled" : ((bytes[6] - 0x30) * 100) + "ml"); - data.OMU_Alarm_Mute_Reset_Timer = (bytes[7] == 0x30 ? "Disabled" : ((bytes[7] - 0x30) * 10) + " Seconds"); - } else if (bytes[3] === 0x46) { - // F --- fall down & unconscious detection threshold - data.FALL_acceleration = (bytes[4] == 0x30 ? "Disabled" : ((bytes[4] - 0x30) * 10) + " mg/s2"); - data.FALL_depth_measure = (bytes[5] == 0x30 ? "Disabled" : ((bytes[5] - 0x30) * 10) + " cm"); - data.FALL_confirm_threshold = (bytes[6] == 0x30 ? "Disabled" : ((bytes[6] - 0x30) * 10) + " seconds"); - data.FALL_reserved = (bytes[7] == 0x30 ? "Disabled" : ((bytes[6] - 0x30) * 10) + " min"); + case 8: // 'G' + switch (bytes[3]) { + case 'G': // 0x4F 'G' -- RSS overstay config + // O -- over stay, unconscious, long stay + data.OMU_Motionless_duration_in_min = (bytes[4] == 0x30 ? "Disabled" : ((bytes[4] - 0x30)) + " Min"); + data.OMU_Long_Occupy_duration_in_Min = (bytes[5] == 0x30 ? "Disabled" : ((bytes[5] - 0x30) * 10) + " Min"); + data.OMU_Unconcious_Threshold = (bytes[6] == 0x30 ? "Disabled" : ((bytes[6] - 0x30) * 100) + "ml"); + data.OMU_Alarm_Mute_Reset_Timer = (bytes[7] == 0x30 ? "Disabled" : ((bytes[7] - 0x30) * 10) + " Seconds"); + break; + case 'F': // 0x46 'F' -- RSS fall down cfg + // F --- fall down & unconscious detection threshold + data.FALL_acceleration = (bytes[4] == 0x30 ? "Disabled" : ((bytes[4] - 0x30) * 10) + " mg/s2"); + data.FALL_depth_measure = (bytes[5] == 0x30 ? "Disabled" : ((bytes[5] - 0x30) * 10) + " cm"); + data.FALL_confirm_threshold = (bytes[6] == 0x30 ? "Disabled" : ((bytes[6] - 0x30) * 10) + " seconds"); + data.FALL_reserved = (bytes[7] == 0x30 ? "Disabled" : ((bytes[6] - 0x30) * 10) + " min"); + break; + + case 'T': + var t_data = (bytes[5]-0x30)*100+(bytes[6]-0x30)*10+(bytes[7]-0x30)*1; + switch (bytes[4]) { + case '1': + data.fallDownL8_CFG_Head_level_treshold_cm = t_data + " cm"; + break; + case '2': + data.fallDownL8_CFG_Suspicious_fall_treshold_sec = t_data*15 + " sec"; + break; + case '3': + data.fallDownL8_CFG_High_potential_fall_treshold_sec = t_data * 15 + " sec"; + break; + case '4': + data.fallDownL8_CFG_Motionless_short_treshold_sec = t_data * 15 + " sec"; + break; + case '5': + data.fallDownL8_CFG_Motionless_long_treshold_sec = t_data * 15 + " sec"; + break; + case '6': + data.fallDownL8_CFG_Occupancy_overstay_treshold_sec = t_data * 15 + " sec"; + break; + case '7': + data.fallDownL8_CFG_Mask_off_height_treshold_cm = t_data + " cm"; + break; + case '8': + data.fallDownL8_CFG_Gesture_min_height_treshold_cm = t_data + " cm"; + break; + + } + + break; } + break; - case 11: + case 11: // RSS RADAR START LENGTH THRESHOLD GAIN // P 1108201365 data.RSS_SIMPLE_Start = ((bytes[3] - 0x30) * 100 + (bytes[4] - 0x30) * 10) + " cm"; data.RSS_SIMPLE_Length = ((bytes[5] - 0x30) * 100 + (bytes[6] - 0x030) * 10) + " cm"; data.RSS_SIMPLE_Threshold = ((bytes[7] - 0x30) * 1000 + (bytes[8] - 0x30) * 100) + " ml"; data.RSS_SIMPLE_Gain = ((bytes[9] - 0x30) * 10 + (bytes[10] - 0x30)) + " %"; break; - case 33: + case 33: // RSS RADAR FULL CONFIG // P 11 data.RSS_FULL_Start = ((bytes[3] - 0x30) * 100 + (bytes[4] - 0x30) * 10) + " cm"; data.RSS_FULL_Length = ((bytes[5] - 0x30) * 100 + (bytes[6] - 0x30) * 10) + " cm"; @@ -786,9 +799,7 @@ function Decode(fPort, data, variables) { break; } - - - break; + break; // end of 'P' cmd // CONTROL COMMAND 'R' case 0x52: