Merge branch 'master' of https://gitea.yunhorn.com/sundp/WLE5CC_NODE_STS
This commit is contained in:
commit
4c424cf812
|
@ -209,7 +209,6 @@ void Error_Handler(void);
|
|||
#define I2C2_STANDARD_100K 0x00000E14
|
||||
#define I2C2_FAST_400K 0x00000004
|
||||
#define I2C2_FAST_PLUS_1M 0x00000000
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(STS_R4)
|
||||
|
@ -229,6 +228,19 @@ void Error_Handler(void);
|
|||
#define SOAP_DATA HAL_GPIO_ReadPin(SOAP_STATUS_GPIO_Port,SOAP_STATUS_Pin)
|
||||
#endif
|
||||
|
||||
#if defined(STS_M1)
|
||||
/* Water leakage MEMS_IF_3, PA10 */
|
||||
#define WATER_LEAKAGE_STATUS_Pin GPIO_PIN_10
|
||||
#define WATER_LEAKAGE_STATUS_GPIO_Port GPIOA
|
||||
|
||||
/* Water leakageON_OFF, MEMS_IF_1, PB5 */
|
||||
#define WATER_LEAKAGE_SWITCH_Pin GPIO_PIN_5
|
||||
#define WATER_LEAKAGE_SWITCH_GPIO_Port GPIOB
|
||||
|
||||
#define WATER_LEAKAGE_DATA HAL_GPIO_ReadPin(WATER_LEAKAGE_STATUS_GPIO_Port,WATER_LEAKAGE_STATUS_Pin)
|
||||
|
||||
#endif
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -82,8 +82,10 @@ typedef enum
|
|||
/* USER CODE BEGIN CFG_SEQ_Task_Id_t */
|
||||
CFG_SEQ_Task_YunhornSTSEventRFAC, /* RFAC */
|
||||
|
||||
#ifdef STS_O6
|
||||
#if defined(STS_M1)||defined(STS_O6)
|
||||
CFG_SEQ_Task_YunhornSTSEventP1, /* REEDSWITCH, IO */
|
||||
#endif
|
||||
#if defined(STS_O6)
|
||||
CFG_SEQ_Task_YunhornSTSEventP2, /* MOTION */
|
||||
CFG_SEQ_Task_YunhornSTSEventP3, /* LAMP BAR LED */
|
||||
#endif
|
||||
|
@ -99,7 +101,7 @@ typedef enum
|
|||
#ifdef STS_E2
|
||||
CFG_SEQ_Task_YunhornSTSEventP7, /* IAQ */
|
||||
#endif
|
||||
#ifdef STS_M1
|
||||
#ifdef STS_M7
|
||||
CFG_SEQ_Task_YunhornSTSEventP8, /* ETR, PULSE COUNT */
|
||||
#endif
|
||||
#ifdef MODBUS_RS485
|
||||
|
|
|
@ -418,7 +418,7 @@ void LoRaWAN_Init(void)
|
|||
/* USER CODE BEGIN LoRaWAN_Init_LV */
|
||||
uint32_t feature_version = 0UL;
|
||||
/* USER CODE END LoRaWAN_Init_LV */
|
||||
APP_LOG(TS_OFF, VLEVEL_M, "\n\n# YUNHORN SMARTOILETS: MTM:%d.%d HWFW:%d.%d V:%d.%d.%d #\n\n",
|
||||
APP_LOG(TS_OFF, VLEVEL_M, "\n\n# YUNHORN SMARTOILETS: (%s) MTM:%d.%d HWFW:%d.%d V:%d.%d.%d #\n\n",(char*)YUNHORN_STS_PRD_STRING,
|
||||
(uint8_t)sts_mtmcode1, (uint8_t)sts_mtmcode2,(uint8_t)sts_hardware_ver,(uint8_t)FirmwareVersion,
|
||||
(uint8_t)MajorVer,(uint8_t)MinorVer,(uint8_t)SubMinorVer);
|
||||
/* USER CODE BEGIN LoRaWAN_Init_1 */
|
||||
|
@ -510,6 +510,13 @@ void LoRaWAN_Init(void)
|
|||
|
||||
UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventRFAC), UTIL_SEQ_RFU, STS_YunhornSTSEventRFAC_Process);
|
||||
|
||||
#ifdef STS_M1
|
||||
|
||||
UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), UTIL_SEQ_RFU, STS_YunhornSTSEventP1_Process);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef STS_P2
|
||||
|
||||
UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP5), UTIL_SEQ_RFU, STS_YunhornSTSEventP5_Process);
|
||||
|
@ -748,6 +755,8 @@ static void SendTxData(void)
|
|||
sts_tof_range_data_t sts_rr_sensor_data={0x0,0x0,0x0};
|
||||
#elif defined(STS_R4)
|
||||
sts_r_sensor_data_t sts_r4_sensor_data={0};
|
||||
#elif defined(STS_M1)
|
||||
sts_r_sensor_data_t sts_m1_sensor_data={0};
|
||||
#endif
|
||||
|
||||
if (LmHandlerIsBusy() == false)
|
||||
|
@ -767,12 +776,20 @@ static void SendTxData(void)
|
|||
#endif /* CAYENNE_LPP */
|
||||
|
||||
EnvSensors_Read(&sensor_data);
|
||||
|
||||
#ifdef STS_R4
|
||||
//UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP6), CFG_SEQ_Prio_0);
|
||||
//STS_YunhornSTSEventP6_Process();
|
||||
STS_R4_sensor_read(&sts_r4_sensor_data);
|
||||
#endif
|
||||
|
||||
#ifdef STS_M1
|
||||
|
||||
STS_M1_sensor_read(&sts_m1_sensor_data);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#ifdef VL53LX
|
||||
STS_people_count_sensor_Read(&sts_p2_sensor_data);
|
||||
#endif
|
||||
|
@ -788,14 +805,16 @@ static void SendTxData(void)
|
|||
AppData.Port = YUNHORN_STS_R2_LORA_APP_DATA_PORT; /* STS-R2 Data Port */
|
||||
#elif defined(STS_R5)
|
||||
AppData.Port = YUNHORN_STS_R5_LORA_APP_DATA_PORT; /* STS-R5 Data Port */
|
||||
#endif
|
||||
#endif //STS_R1
|
||||
|
||||
#endif //VL53L0
|
||||
|
||||
#ifdef STS_R4
|
||||
#ifdef STS_R4 //SOAP/SANITIZER LEVEL
|
||||
AppData.Port = YUNHORN_STS_R4_LORA_APP_DATA_PORT; /* STS-R4 Data Port */
|
||||
#endif
|
||||
|
||||
#ifdef STS_M1 // WATER LEAKAGE SENSOR
|
||||
AppData.Port = YUNHORN_STS_M1_LORA_APP_DATA_PORT; /* STS-M1 Data Port */
|
||||
#endif
|
||||
|
||||
AppData.Buffer[i++] = (uint8_t) (AppLedStateOn|0x80); // for first byte, cannot be 0x0
|
||||
AppData.Buffer[i++] = (uint8_t) sts_mtmcode1;
|
||||
|
@ -926,6 +945,14 @@ static void SendTxData(void)
|
|||
AppData.Buffer[i++] = (uint8_t)(sts_r4_sensor_data.measure_tech & 0xFF);
|
||||
AppData.Buffer[i++] = (uint8_t)(sts_r4_sensor_data.on_off_event & 0xFF);
|
||||
#endif //STS_R4
|
||||
|
||||
/* STS-M1 WATER LEAKAGE SENSOR */
|
||||
#ifdef STS_M1
|
||||
AppData.Buffer[i++] = 2;
|
||||
AppData.Buffer[i++] = (uint8_t)(sts_m1_sensor_data.measure_tech & 0xFF);
|
||||
AppData.Buffer[i++] = (uint8_t)(sts_m1_sensor_data.on_off_event & 0xFF);
|
||||
#endif //STS_M1
|
||||
|
||||
AppData.BufferSize = i;
|
||||
|
||||
if ((JoinLedTimer.IsRunning) && (LmHandlerJoinStatus() == LORAMAC_HANDLER_SET))
|
||||
|
@ -964,9 +991,13 @@ static void OnTxTimerEvent(void *context)
|
|||
/* USER CODE BEGIN OnTxTimerEvent_1 */
|
||||
|
||||
/* USER CODE END OnTxTimerEvent_1 */
|
||||
#ifdef STS_R4
|
||||
|
||||
#ifdef STS_R4
|
||||
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP6), CFG_SEQ_Prio_0);
|
||||
#elif defined(STS_M1)
|
||||
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0);
|
||||
#endif
|
||||
|
||||
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
|
||||
|
||||
/*Wait for next tx slot*/
|
||||
|
|
|
@ -5,3 +5,4 @@
|
|||
|
||||
2024 09 20 START RR
|
||||
2024 09 25 START R1D
|
||||
2024 09 27 GOOD STS-R4 on single board RM2_1
|
||||
|
|
|
@ -101,6 +101,7 @@
|
|||
#ifdef YUNHORN_STS_R4_ENABLED
|
||||
#define YUNHORN_STS_R4_LORA_APP_DATA_PORT 7U
|
||||
#define YUNHORN_STS_R4_LORA_APP_HTBT_PORT 8U
|
||||
#define YUNHORN_STS_PRD_STRING "STS_R4"
|
||||
#define sts_mtmcode1 0U
|
||||
#define sts_mtmcode2 8U
|
||||
|
||||
|
@ -124,6 +125,14 @@
|
|||
|
||||
#endif
|
||||
|
||||
#ifdef STS_M1
|
||||
#define YUNHORN_STS_M1_LORA_APP_DATA_PORT 6U
|
||||
#define YUNHORN_STS_M1_LORA_APP_HTBT_PORT 6U
|
||||
#define YUNHORN_STS_PRD_STRING "STS_M1"
|
||||
#define sts_mtmcode1 0U
|
||||
#define sts_mtmcode2 6U
|
||||
|
||||
#endif
|
||||
//#define YUNHORN_STS_M1_LORA_APP_DATA_PORT 6U
|
||||
//#define YUNHORN_STS_M1_LORA_APP_HTBT_PORT 6U
|
||||
//#define YUNHORN_STS_M2_LORA_APP_DATA_PORT 59U
|
||||
|
|
|
@ -266,6 +266,7 @@ void STS_SENSOR_Upload_AppData_Message(LmHandlerAppData_t stsAppdata);
|
|||
void STS_SENSOR_MEMS_Get_ID(uint16_t *devID);
|
||||
void STS_RR_Sensor_Read(sts_tof_range_data_t *sts_rr_sensor_data);
|
||||
void STS_R4_sensor_read(sts_r_sensor_data_t *sts_r_sensor_data);
|
||||
void STS_M1_sensor_read(sts_r_sensor_data_t *sts_m_sensor_data);
|
||||
void OnYunhornSTSHeartBeatPeriodicityChanged(uint32_t periodicity);
|
||||
void OnYunhornSTSTxPeriodicityChanged(uint32_t periodicity);
|
||||
void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_size);
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
#include "flash_if.h"
|
||||
#include "lora_app.h"
|
||||
/* USER CODE BEGIN Includes */
|
||||
#include "main.h"
|
||||
#include "stm32_seq.h"
|
||||
#include "stm32_timer.h"
|
||||
#include "utilities_def.h"
|
||||
|
@ -122,6 +123,9 @@ volatile sts_tof_range_data_t sts_range_sensor_data={0x0,0x0,0x0};
|
|||
volatile uint8_t sts_soap_level_state=0;
|
||||
void STS_R4_sensor_read(sts_r_sensor_data_t *sts_r_sensor_data);
|
||||
#endif
|
||||
#ifdef STS_M1
|
||||
volatile uint8_t sts_water_leakage_state=0;
|
||||
#endif
|
||||
#if 0
|
||||
volatile uint8_t sts_reed_hall_result, last_sts_reed_hall_result,sts_reed_hall_changed_flag;
|
||||
volatile uint32_t event_start_time, event_stop_time;
|
||||
|
@ -286,6 +290,13 @@ void STS_YunhornSTSEventP1_Process(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
/* STS-M1 Water leakage sensor */
|
||||
|
||||
#if defined(STS_M1)
|
||||
APP_LOG(TS_OFF, VLEVEL_M, "\r\n WATER LEAKAGE DETECTION Process \n");
|
||||
sts_water_leakage_state = WATER_LEAKAGE_DATA;
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -516,12 +527,24 @@ void STS_SENSOR_MEMS_Reset(uint8_t cnt)
|
|||
|
||||
void STS_R4_sensor_read(sts_r_sensor_data_t *sts_r_sensor_data)
|
||||
{
|
||||
sts_r_sensor_data->on_off_event = sts_soap_level_state;
|
||||
// sts_soap_level_state 0x00 --- Liquid Detected, 0x01 --- no Detection
|
||||
sts_r_sensor_data->on_off_event = (sts_soap_level_state ==0x00? true:false);
|
||||
sts_r_sensor_data->measure_tech = 0; //liquid capacity
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef STS_M1
|
||||
void STS_M1_sensor_read(sts_r_sensor_data_t *sts_m_sensor_data)
|
||||
{
|
||||
sts_m_sensor_data->on_off_event = sts_water_leakage_state;
|
||||
sts_m_sensor_data->measure_tech = 0; //weak current detection
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(YUNHORN_STS_O5_ENABLED)
|
||||
void STS_O5_SENSOR_Read(STS_OO_SensorDataTypeDef *oo_data)
|
||||
{
|
||||
|
|
|
@ -7,7 +7,21 @@
|
|||
function Decode(fPort, data, variables) {
|
||||
var data = {};
|
||||
data.length = bytes.length;
|
||||
if ((fPort === 10)) { // STS_O2_O6 V3 version 2023,pixel-network version
|
||||
// R4 soap/sanitizer sensor
|
||||
if (fPort === 7) {
|
||||
data.length = bytes.length;
|
||||
data.led_state = bytes[0] == 0x0 ? "Off" : "On";
|
||||
data.mtm_code_1 = bytes[1];
|
||||
data.mtm_code_2 = bytes[2];
|
||||
data.hw_code = bytes[3];
|
||||
data.battery_level = bytes[4] + "%";
|
||||
data.size_value = bytes[5];
|
||||
data.measure_tech = (bytes[6] === 0) ? "Capacitive" : "Other";
|
||||
data.liquid_level_event = (bytes[7] === 0x1) ? "Liquid Detected" : "No Liquid";
|
||||
|
||||
return { "Yunhorn_SmarToilets_data": data };
|
||||
}
|
||||
else if ((fPort === 10)) { // STS_O2_O6 V3 version 2023,pixel-network version
|
||||
switch (bytes[0]) {
|
||||
case 0x00:
|
||||
data.LEDcolor = "Dark";
|
||||
|
@ -303,7 +317,7 @@ function Decode(fPort, data, variables) {
|
|||
return { "Yunhorn_SmarToilets_data": data };
|
||||
}
|
||||
// Heart Beat
|
||||
else if ((fPort === 12) || (fPort === 20) || (fPort === 18) || (fPort === 5) || (fPort === 107) || (fPort === 58)) {
|
||||
else if ((fPort === 8) || (fPort === 12) || (fPort === 20) || (fPort === 18) || (fPort === 5) || (fPort === 107) || (fPort === 58)) {
|
||||
var data = {};
|
||||
//data.led_state=(bytes[0] & 0x7f) === 0 ? "Off" : "On";
|
||||
data.BoardLED = ((bytes[0] & 0x7F) === 0x01) ? "ON" : "OFF";
|
||||
|
@ -316,8 +330,11 @@ function Decode(fPort, data, variables) {
|
|||
else if (fPort === 1) {
|
||||
var data = {};
|
||||
data.length = bytes.length;
|
||||
|
||||
if ((data.length === 4) && (bytes[0] == 0x52) && (bytes[1] = 0x46)) //RFAC
|
||||
if ((data.length === 10) && (bytes[0] == 0x59) && (bytes[9] == 0x38)) {
|
||||
data.Yunhorn_PRD = "True";
|
||||
data.PRD_String = String.fromCharCode(bytes);
|
||||
}
|
||||
else if ((data.length === 4) && (bytes[0] == 0x52) && (bytes[1] == 0x46)) //RFAC
|
||||
{
|
||||
data.Request_Performed = "OK";
|
||||
data.RFAC = "OK";
|
||||
|
@ -351,17 +368,20 @@ function Decode(fPort, data, variables) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
if ((bytes[0] === 0x59) && (bytes[1] === 0x44)) //Duration interval
|
||||
{
|
||||
data.Heart_beat_Duration = (bytes[2] - 0x30) * 10 + (bytes[3] - 0x30);
|
||||
data.Unit = String.fromCharCode(bytes[4]);
|
||||
data.Uplink_interval = (bytes[2] - 0x30) * 10 + (bytes[3] - 0x30);
|
||||
data.Uplink_interval_unit = String.fromCharCode(bytes[4]);
|
||||
//data.Heart_beat_Duration = (bytes[2]-0x30)*10 + (bytes[3]-0x30);
|
||||
//data.Unit = String.fromCharCode(bytes[4]);
|
||||
}
|
||||
|
||||
else if ((bytes[0] === 0x59) && (bytes[1] === 0x53)) //Sampling interval or Heart-beat interval
|
||||
{
|
||||
data.Wakeup_sampling_interval = (bytes[2] - 0x30) * 10 + (bytes[3] - 0x30);
|
||||
data.Unit = String.fromCharCode(bytes[4]);
|
||||
data.Heart_Beat_interval = (bytes[2] - 0x30) * 10 + (bytes[3] - 0x30);
|
||||
data.Heart_Beat_interval_unit = String.fromCharCode(bytes[4]);
|
||||
//data.Wakeup_sampling_interval = (bytes[2]-0x30)*10 + (bytes[3]-0x30);
|
||||
//data.Unit = String.fromCharCode(bytes[4]);
|
||||
}
|
||||
|
||||
else if (bytes[0] === 0x43) { // report current nvm config
|
||||
|
|
Loading…
Reference in New Issue